问题
C++一定不要开关闭同步,C++可以自动缓冲。不需要flush。否则ILE
总结
交互题,我很难受的一种题,可能做的太少,看着就脑壳疼。
我问——>机器答
最后:我问完了,就可以知道结果了,就输出
一般情况
系统:给一个模型:
自己:最多q次询问
系统:q次回答
自己:查询结束,我们需要的结果
算法核心
询问1-(2<=i<=n),总共n-1次,然后再询问一次2-3,我们就能知道a1的和,然后所有都由解了。
题意
系统给一个n,然后最多n次人为询问a[i]和a[j]的和,系统对于你的每次询问回答一个a[i]+a[j],然后自己构造一个数组a满足上述所有情况。0<a[i]<=1e5
题目链接
//#pragma GCC optimize(2)
//#pragma GCC target ("sse4")
#include<bits/stdc++.h>
//typedef long long ll;
#define ull unsigned long long
#define int long long
#define F first
#define S second
#define endl "\n"//<<flush
#define eps 1e-6
#define base 131
#define lowbit(x) (x&(-x))
#define PI acos(-1.0)
#define inf 0x3f3f3f3f
#define MAXN 0x7fffffff
#define INF 0x3f3f3f3f3f3f3f3f
#define ferma(a,b) pow(a,b-2)
#define mod(x) (x%mod+mod)%mod
#define pb push_back
#define decimal(x) cout << fixed << setprecision(x);
#define all(x) x.begin(),x.end()
#define memset(a,b) memset(a,b,sizeof(a));
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
using namespace std;
void file()
{
#ifdef ONLINE_JUDGE
#else
freopen("D:/LSNU/codeforces/duipai/data.txt","r",stdin);
// freopen("D:/LSNU/codeforces/duipai/WA.txt","w",stdout);
#endif
}
const int N=5e3+5;
int a[N];
signed main()
{
// IOS;
file();
int n;
cin>>n;
for(int i=2;i<=n;i++)
{
cout<<"? 1 "<<i<<endl;
cin>>a[i];
}
cout<<"? 2 3"<<endl;
cin>>a[1];
vector<int>ans;
int a1=(a[2]+a[3]-a[1])/2;
ans.pb(a1);
for(int i=2;i<=n;i++)
ans.pb(a[i]-a1);
cout<<"! ";
for(auto it:ans)
cout<<it<<" ";
return 0;
}