F. Flamingoes of Mystery【人生第一道交互题】

    科技2022-08-15  92

    题目

    传送门

    input 6 5 15 10 output ? 1 2 ? 5 6 ? 3 4 ! 1 4 4 6 7 8

    题意:第一道交互题,首先给你一个数n说明有n个笼子,你最多能问n次,对于你的询问,机器会给出答案,问:每个笼子里各有几只火烈鸟

    思路:每次询问我们至少得出一个笼子中有几只,例如我们先问1-2,1~3,这样我们就会知道第三个笼子有几只,这样问到1-n,问了n-1次,我们最后问一次2-3就可以得到第二个笼子有几只,我们有1-2,进而得出第一个笼子中的数量,这样就可以了,注意:每个输出语句后面加上. fflush(stdout);

    AC code

    #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<sstream> #include<stack> #include<queue> using namespace std; #define ll long long ll n,t,a[1200]; void solve() { ll p,q,x,y; int flag=1; for(int i=2;i<=n;i++) { printf("? 1 %d\n",i); fflush(stdout); if(flag) {cin>>p; x=p; flag=0;} else { cin>>q; a[i]=q-p;//从第三只开始 p=q; } } printf("? 2 3\n");//询问2-3 fflush(stdout); cin>>y; a[2]=y-a[3]; a[1]=x-a[2]; printf("!"); for(int i=1;i<=n;i++) printf(" %d",a[i]); printf("\n"); fflush(stdout); } int main() { ios::sync_with_stdio(0); cin>>n; solve(); }
    Processed: 0.130, SQL: 9