比赛链接:https://codeforces.com/contest/2037
本场F题卡了快一小时?G题20分钟内一直在想如何容斥,有空就补思路
A. Twice
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define ll long long
#define lowbit(x) (x & -x)
#define endl "\n"// 交互题记得删除
using namespace std;
mt19937 rnd(time(0));
const ll mod = 998244353;
ll ksm(ll x, ll y)
{ll ans = 1;while (y){if (y & 1){ans = ans % mod * (x % mod) % mod;}x = x % mod * (x % mod) % mod;y >>= 1;}return ans % mod % mod;
}
ll gcd(ll x, ll y)
{if (y == 0)return x;elsereturn gcd(y, x % y);
}
void fio()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
}
ll a[250000];
int main()
{fio();ll t;cin>>t;while(t--){ll n;cin>>n;map<ll,ll>q;ll cnt=0;for(ll i=1;i<=n;i++){ll x;cin>>x;if(q[x]==0)q[x]++;else cnt++,q[x]=0;}cout<<cnt<<endl;}}
B. Intercepted Inputs
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define ll long long
#define lowbit(x) (x & -x)
#define endl "\n"// 交互题记得删除
using namespace std;
mt19937 rnd(time(0));
const ll mod = 998244353;
ll ksm(ll x, ll y)
{ll ans = 1;while (y){if (y & 1){ans = ans % mod * (x % mod) % mod;}x = x % mod * (x % mod) % mod;y >>= 1;}return ans % mod % mod;
}
ll gcd(ll x, ll y)
{if (y == 0)return x;elsereturn gcd(y, x % y);
}
void fio()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
}
ll a[250000];
int main()
{fio();ll t;cin>>t;while(t--){map<ll,ll>q;ll n;cin>>n;ll u=n-2;ll l,r;for(ll i=1;i<=n;i++){ll x;cin>>x;if(x*x==u){q[x]++;if(q[x]>=2){l=x,r=x;}}else if(u%x==0){q[x]++;if(q[x]&&q[u/x]){l=x,r=u/x;}}}cout<<l<<" "<<r<<endl;}}
C. Superultra's Favorite Permutation
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define ll long long
#define lowbit(x) (x & -x)
#define endl "\n"// 交互题记得删除
using namespace std;
mt19937 rnd(time(0));
const ll mod = 998244353;
ll ksm(ll x, ll y)
{ll ans = 1;while (y){if (y & 1){ans = ans % mod * (x % mod) % mod;}x = x % mod * (x % mod) % mod;y >>= 1;}return ans % mod % mod;
}
ll gcd(ll x, ll y)
{if (y == 0)return x;elsereturn gcd(y, x % y);
}
void fio()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
}
ll a[250000];
ll b[250000];
int main()
{fio();ll t;cin>>t;while(t--){ll n;cin>>n;if(n<=4)cout<<-1<<endl;else {ll l,r;l=r=0;for(ll i=6;i<=n;i++){if(i%2==0){l++;a[l]=i;}else {r++;b[r]=i;}}for(ll i=1;i<=l;i++)cout<<a[i]<<" ";cout<<2<<" "<<4<<" "<<5<<" "<<1<<" "<<3<<" ";for(ll i=1;i<=r;i++)cout<<b[i]<<" ";cout<<endl;}}}
D. Sharky Surfing
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define ll long long
#define lowbit(x) (x & -x)
#define endl "\n"// 交互题记得删除
using namespace std;
mt19937 rnd(time(0));
const ll mod = 998244353;
ll ksm(ll x, ll y)
{ll ans = 1;while (y){if (y & 1){ans = ans % mod * (x % mod) % mod;}x = x % mod * (x % mod) % mod;y >>= 1;}return ans % mod % mod;
}
ll gcd(ll x, ll y)
{if (y == 0)return x;elsereturn gcd(y, x % y);
}
void fio()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
}
ll a[250000];
ll b[250000];
struct s
{ll x, y;
}p[250000];
s p1[250000];
int main()
{fio();ll t;cin>>t;while(t--){ll n,m,l;cin>>n>>m>>l;for(ll i=1;i<=n;i++){cin>>p[i].x>>p[i].y;}for(ll i=1;i<=m;i++){cin>>p1[i].x>>p1[i].y;}ll cnt=1;ll o=1;ll wz=1;ll c=1;priority_queue<ll>f;ll pd=0;ll gs=0;while(wz<p[o].x&&o<=n){while(c<=m){if(p1[c].x<p[o].x){f.push(p1[c].y);c++;}else break;}while(!f.empty()&&cnt+p[o].x-1<=p[o].y){gs++;cnt+=f.top();f.pop();}if(cnt+p[o].x-1<=p[o].y){pd=1;break;}else {wz=p[o].y+1;o++;}}if(pd||wz!=p[n].y+1)cout<<-1<<endl;else cout<<gs<<endl;}
}
E. Kachina's Favorite Binary String
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define ll long long
#define lowbit(x) (x & -x)
//#define endl "\n"// 交互题记得删除
using namespace std;
mt19937 rnd(time(0));
const ll mod = 998244353;
ll ksm(ll x, ll y)
{ll ans = 1;while (y){if (y & 1){ans = ans % mod * (x % mod) % mod;}x = x % mod * (x % mod) % mod;y >>= 1;}return ans % mod % mod;
}
ll gcd(ll x, ll y)
{if (y == 0)return x;elsereturn gcd(y, x % y);
}
void fio()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
}
ll q(ll l,ll r)
{cout<<"? "<<l<<" "<<r<<endl;cout.flush();ll x;cin>>x;return x;
}
ll a[250000];
int main()
{fio();ll t;cin>>t;while(t--){ll n;cin>>n;ll cnt=0;a[1]=1;for(ll i=2;i<=n;i++){if(cnt==0){ll j=q(1,i);if(j==0){a[i]=1;}else {cnt=j;a[i]=1;for(ll k=i-1;k>=i-1-cnt+1;k--){a[k]=0;}// cout<<a[i]<<endl; }}else {ll j=q(1,i);if(j==cnt){a[i]=0;}else {cnt=j;a[i]=1;}}}if(cnt==0){cout<<"! IMPOSSIBLE"<<endl;continue;} cout<<"! ";for(ll i=1;i<=n;i++){cout<<a[i];}cout<<endl;}
}
F. Ardent Flames
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define ll long long
#define lowbit(x) (x & -x)
//#define endl "\n"// 交互题记得删除
using namespace std;
mt19937 rnd(time(0));
const ll mod = 998244353;
void fio()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
}
ll q(ll l,ll r)
{cout<<"? "<<l<<" "<<r<<endl;cout.flush();ll x;cin>>x;return x;
}
ll a[250000];
ll b[250000];
ll c[250000];
ll n,m,k;
struct s
{ll l,r;
}p[4500000];
bool cmp(s x, s y)
{if(x.l!=y.l)return x.l<y.l;else return x.r<y.r;
}
ll ck(ll x)
{ll l=0;for(ll i=1;i<=n;i++){ll u=a[i]/x;if(a[i]%x!=0)u++;if(u>m)continue;else if(u==m) {l++;p[l].l=p[l].r=b[i];}else {l++;p[l].l=b[i]-(m-u);p[l].r=b[i]+(m-u);}}sort(p+1,p+1+l,cmp);priority_queue<ll,vector<ll>,greater<ll>>q;ll ans=0;for(ll i=1;i<=l;i++){if(q.empty()){q.push(p[i].r);}else {while(!q.empty()&&q.top()<p[i].l){q.pop();}q.push(p[i].r);}ans=max(ans,(ll)q.size());}if(ans>=k)return 1;else return 0;
}
int main()
{fio();ll t;cin>>t;while(t--){cin>>n>>m>>k;for(ll i=1;i<=n;i++)cin>>a[i];for(ll i=1;i<=n;i++)cin>>b[i];ll l=1,r=5e14;while(l<r){ll mid=(l+r)>>1;if(ck(mid))r=mid;else l=mid+1;}if(r==5e14)cout<<-1<<endl;else cout<<r<<endl;}
}