問題
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;
}