A:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include<bits/stdc++.h> using namespace std; const int N=110; typedef long long ll; int a[N]; void solve() { int n,m; ll c; cin>>n>>c; m=n; for(int i=1;i<=n;i++) cin>>a[i]; int ans=0; sort(a+1,a+1+n); while(c) { int f=upper_bound(a+1,a+1+n,c)-a; f-=1; if(f>0) { ans++; for(int i=f;i<=n;i++) { a[i]=a[i+1]; } n--; } c/=2; } cout<<m-ans<<"\n"; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; cin>>T; while(T--) { solve(); } return 0; }
|
B:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #include<bits/stdc++.h> using namespace std;
const int N=1e5+10; int T; int a[N]; int ans[N]; int op[N];int n; void solve() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } int l=1,r=n; for(int i=1;i<=n;i++) { if(i%2==1) { if(a[l]<a[r]) { ans[i]=a[l++]; op[i]=0; } else{ ans[i]=a[r--]; op[i]=1; } } else{ if(a[l]<a[r]) { ans[i]=a[r--]; op[i]=1; } else{ ans[i]=a[l++]; op[i]=0; } } } for(int i=1;i<=n;i++) if(op[i]==0) cout<<"L"; else cout<<"R"; cout<<"\n"; return ; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>T; while(T--) { solve(); } return 0; }
|
C:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include<bits/stdc++.h> using namespace std;
const int N=2e5+10; int T; int a[N];
bool solve() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } int minn=0x3f3f3f3f; for(int i=1;i<=n;i++) { if(minn<=a[i]-minn) return false; minn=min(minn,a[i]); }
return true; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>T; while(T--) { bool c=solve(); if(c) cout<<"YES\n"; else cout<<"NO\n"; }
return 0; }
|
D:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=5e5+10; int T; ll a[N]; void solve() { ll n; ll ans=0; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<n;i++) { if(a[i]<a[i+1]) ans-=i*(n-i); } for(int i=1;i<=n;i++) { ans+=i*(n+1-i); } cout<<ans<<"\n"; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>T; while(T--) { solve(); } return 0; }
|
E1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include<bits/stdc++.h> using namespace std;
const int N=1e6+10; int T,ansl,ansr; int a[N];int n,k; bool check(int v) { int j=0; vector<int> pre(n+5); pre[0]=0; for(int i=1;i<=n;i++) { pre[i]=pre[i-1]+(a[i]>=v?1:-1); } for(int i=k;i<=n;i++) { if(pre[j]>pre[i-k]) { j=i-k; } if(pre[i]>=pre[j]) { ansl=j+1; ansr=i; return true; } } return false; } void solve() { cin>>n>>k; int l=0,r=0; for(int i=1;i<=n;i++) { cin>>a[i]; r=max(r,a[i]); }
while(l<r) { int mid=(l+r+1)>>1; if(check(mid)) l=mid; else r=mid-1; } cout<<l<<" "<<ansl<<" "<<ansr<<"\n"; return ; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>T; while(T--) { solve(); } return 0; }
|
E2: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #include<bits/stdc++.h> using namespace std;
const int N=1e6+10; int T,ansl,ansr; typedef pair<int,int> PII; int a[N];int n,k; bool check(int v) { int j=0; vector<int> pre(n+5); pre[0]=0; for(int i=1;i<=n;i++) { pre[i]=pre[i-1]+(a[i]>=v?1:-1); } for(int i=k;i<=n;i++) { if(pre[j]>pre[i-k]) { j=i-k; } if(pre[i]>=pre[j]) { ansl=j+1; ansr=i; return true; } } return false; }
void solve() { cin>>n>>k; int m=0,vmax,vmin; vector<int> cnt(n+5); int now=0; int l1,l2,r1,r2; for(int i=1;i<=n;i++) { cin>>a[i]; m=max(m,a[i]); } int l=0,r=n; while(l<r) { int mid=(l+r+1)>>1; if(check(mid)) l=mid; else r=mid-1; } vmax = l; l2=ansl,r2=ansr; l=0,r=n; for(int i=1;i<=n;i++) a[i]=n-a[i]+1; while(l<r) { int mid=(l+r+1)>>1; if(check(mid)) l=mid; else r=mid-1; } vmin=n-l+1; l1=ansl,r1=ansr; cout<<vmax-vmin+1<<"\n"; for(int i=1;i<=n;i++) a[i]=n-a[i]+1;
auto add=[&](int x,int k)->void{ cnt[x]+=k; now+=(x>=vmin?k:-k); };
for(int i=l1;i<=r1;i++) { cnt[a[i]]++; now+=(a[i]>=vmin?1:-1); } while(vmin<=vmax) { while(now>=0) { cout<<vmin<<" "<<l1<<" "<<r1<<"\n";now-=2*cnt[vmin++]; } if(l1>l2) add(a[--l1],1); else if(r1<r2) add(a[++r1],1); else if(r1>r2) add(a[r1--],-1); else if(l1<l2) add(a[l1++],-1); } return ; }
int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; cin>>T; while(T--) { solve(); } return 0; }
|
To be continue…