ZR 集训 Day24 - 模拟赛

笔记

前言 T4 暴力居然爆 0 了,非常诡异,本来感觉拿个 n^2\log n 的糖糖分数还是可以的。 T5 依旧想了个非常伪的做法,甚至还没调出来,好在虽然伪但是拿到了多重背包的部分分。 T6 没时间看了。 可是啊 数学瞎搞一通。 C++ #include using namespace std; #define int long long int c,T,a,b; signed main(){ cin>>c>>T; while(T--){ cin>>a>>b; int awa=sqrt(a); int klz=(sqrt(1+4*b)-1)/2; if(awa `#include using namespace std; #define int long long int c,T,a,b; signed main(){ cin>>c>>T; while(T--){ cin>>a>>b; int awa=sqrt(a); int klz=(sqrt(1+4*b)-1)/2; if(awaklz) cout"AKTang!\n"; else cout"AWaDa!\n"; } return 0; }` 世界线交汇 依旧瞎搞。 C++ #include using namespace std; const int mod=1e9+7; int c,T,n,a,x; signed main(){ cin>>c>>T; while(T--){ cin>>n>>a>>x; int ans=(n*x)%mod; int num[2]={0,0},now=n; num[n%2]++; while(now>0){ if(now>1) ans=(ans+num[now%2]*(now/a))%mod; ans=(ans+num[(now+1)%2]*((now+1)/a))%mod; int n0=num[0],n1=num[1]; num[(now/2)%2]=(2*n0+n1)%mod; num[(now/2+1)%2]=n1%mod; now/=2; } cout `#include using namespace std; const int mod=1e9+7; int c,T,n,a,x; signed main(){ cin>>c>>T; while(T--){ cin>>n>>a>>x; int ans=(n*x)%mod; int num[2]={0,0},now=n; num[n%2]++; while(now>0){ if(now>1) ans=(ans+num[now%2]*(now/a))%mod; ans=(ans+num[(now+1)%2]*((now+1)/a))%mod; int n0=num[0],n1=num[1]; num[(now/2)%2]=(2*n0+n1)%mod; num[(now/2+1)%2]=n1%mod; now/=2; } coutans"\n"; } return 0; }` 终究是一场梦 还是瞎搞。 C++ #include using namespace std; const int N=2e6+5; int c,T,n,k; int a[N],p[N],tag[N],sum[N]; struct BIT{ int tr[N]; vector> v; void add(int x,int k){ for(;x0&&idx0){ tag[idx]=1,printf("%d ",idx); k--,bit.add(1,1),bit.add(p[idx],-1),idx++; } } for(int i=1;i `#include using namespace std; const int N=2e6+5; int c,T,n,k; int a[N],p[N],tag[N],sum[N]; struct BIT{ int tr[N]; vectorpairint,int>> v; void add(int x,int k){ for(;xn;x+=x&-x){ tr[x]+=k; v.push_back({x,k}); } } int query(int x){ int res=0; for(;x;x-=x&-x) res+=tr[x]; return res; } void clear(){ for(int i=0;iv.size();i++) tr[v[i].first]-=v[i].second; v.clear(); } }bit; signed main(){ scanf("%d%d",&c,&T); while(T--){ scanf("%d%d",&n,&k); for(int i=1;in;i++) scanf("%d",a+i),p[a[i]]=i,tag[i]=0; int idx=1; while(k>0&&idxn){ int id=p[idx]+bit.query(p[idx]); if(idx==id) tag[idx]=1,printf("%d ",idx++); else if(k>0){ tag[idx]=1,printf("%d ",idx); k--,bit.add(1,1),bit.add(p[idx],-1),idx++; } } for(int i=1;in;i++) if(!tag[a[i]]) printf("%d ",a[i]); printf("\n"); bit.clear(); } return 0; }`

Read more · Journal