cf-goodbye2019
enmmmm 快速做完了abc题,d题不会,挂机半天又闲得无事又交一次c 直接掉700+名。。。。。以最后一次ac为准 我傻了 我演我自己
A Card Game standard input/output 1 s, 256 MB Submit Add to favourites x8360
两个人,n张牌 谁有更大的那张牌 一直出就好
B Interesting Subarray standard input/output 2 s, 256 MB Submit Add to favourites x6019
如存在good 子串 输出任意即可, 所以直接查找是否有 a[i]-a[i-1] >= 2 即可
C Make Good standard input/output 2 s, 256 MB Submit Add to favourites x4722
需要将 sum == xsum*2, 所以只需要添加两个数 一个是先把 xsum 变成0, 另一个是当前sum, 这样 sum+sum == sum*2
D Strange Device standard input/output 1 s, 256 MB Submit Add to favourites x1784
交互题, 不太会, 看了下 要用到 cout.flush(); 作用是同步缓冲区和输出序列, 如果不用的话会出现 Idleness limit exceeded on test 1 错误,
我们仅用前 k+1 个元素, 在 k+1 次 查询内找出m。 第 i 次询问除 a[i] 以外的其他数,则在全部 k + 1 个答案中第 m 小的数出现了 k-m+1 次, 第 m+1 小的数出现了 m 次。 因此答案中较大数出现次数就是答案
每次查询都输出 除 i 的 1 ~ k+1 并且插入一个值, 查询结束后这些值组成一个 k+1的数组 数组最大值的出现次数即为m
#include<bits/stdc++.h>//goodbye2019 using namespace std; #define _for(i,a,b) for(int i = (a); i < (b); i++) #define _rep(i,a,b) for(int i = (a); i <= (b); i++) #define _per(i,a,b) for(int i = (a); i > (b); i--) #define ll long long
void taskA(){ int t; cin >> t; while(t--) { int n,k1,k2; cin >> n >> k1 >> k2; int m1 = 0, m2 = 0; _for(i,0,k1) { int x;cin >> x; m1 = max(m1, x); } _for(i,0,k2) { int x; cin >> x; m2 = max(m2, x); } cout << (m1>m2?"YES\n":"NO\n"); } return; }
void taskB(){ int t; cin >> t; while(t--) { int n; cin >> n; vector<int> a(n); _for(i,0,n) cin >> a[i]; int flag = 0, l, r; _for(i,1,n) { if(abs(a[i]-a[i-1]) >= 2){ flag = 1; l = i, r = i+1; break; } } cout << (flag ?"YES\n": "NO\n"); if(flag) cout << l << " " << r << "\n"; } return; }
void taskC(){ int t; cin >> t; while(t--) { int n; cin >> n; vector<int> a(n); _for(i,0,n) cin >> a[i]; ll sum = 0, xsum = 0; _for(i,0,n) { sum += a[i]; xsum ^= a[i]; } sum += xsum; cout << "2\n" << xsum << " " << sum << "\n"; }//输出2, 然后两个数是 xorsum, xorsum+sum return;//先添加一个数 让右边为0 再添加sum 这样就 sum+sum = sum*2 }
void taskD(){ int n,k; cin >> n >> k; vector<int> v; _rep(i,1,k+1) { cout << "?"; _rep(j,1,k+1) if(j != i) cout << " " << j; cout << "\n"; int pos, val; cin >> pos >> val; v.push_back(val); } sort(v.rbegin(), v.rend()); int x = v[0], m = 0; for(auto it:v) if(x == it) m++; cout << "! " << m << "\n"; cout.flush(); return; }
int main(){ ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); //taskA(); //taskB(); //taskC(); //taskD(); return 0; }