A
#include<bits/stdc++.h> using namespace std; int main(){ int t;cin>>t; while(t--){ int a[3]; cin>>a[1]>>a[2]>>a[3]; sort(a+1,a+4); int ans=0; if(a[1]+a[2]<=a[3]) ans=a[1]+a[2]; else { ans = (a[1]+a[2]+a[3])/2; } cout<<ans<<' '; } }
B
#include<bits/stdc++.h> using namespace std; int n,a[20],flag[20]; int s[20][5]; int judge(int x){ for(int i=1;i<=n;i++){ if(i==x)continue; if(s[x][1]==s[i][1] && s[x][2]==s[i][2] &&s[x][3]==s[i][3] &&s[x][4]==s[i][4]) return 0; } return 1; } int main(){ int t;cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; s[i][4]=a[i]%10; s[i][3]=(a[i]%100)/10; s[i][2]=(a[i]%1000)/100; s[i][1]=a[i]/1000; flag[i]=i; for(int j=1;j<i;j++) if(a[i]==a[j]){ flag[i]=j; break; } } int p=0,cnt=0; for(int i=1;i<=n;i++)if(flag[i]!=i){ cnt++; while(1){ s[i][1]=p++; if(judge(i))break; } } cout<<cnt<<' '; for(int i=1;i<=n;i++) cout<<s[i][1]<<s[i][2]<<s[i][3]<<s[i][4]<<' '; } }
C
#include<bits/stdc++.h> using namespace std; #define ll long long ll n; vector<ll>v; int main(){ int t;cin>>t; while(t--){ v.clear(); cin>>n; v.push_back(0); for(ll l=1,r;l<=n;l=r+1){ r=n/(n/l); v.push_back(n/l); } sort(v.begin(),v.end()); cout<<v.size()<<' '; for(auto x:v) cout<<x<<" "; puts(""); } }
D
#include<bits/stdc++.h> using namespace std; #define N 200006 int n,flag[N][27],vis[26]; char str[N][55]; set<int>s[26]; int F[26]; int find(int x){ return F[x]==x?x:F[x]=find(F[x]); } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ scanf("%s",str[i]); int len=strlen(str[i]); for(int j=0;j<len;j++) flag[i][str[i][j]-'a']=vis[str[i][j]-'a']=1; for(int j=0;j<26;j++) if(flag[i][j])s[j].insert(i); } for(int i=0;i<26;i++)F[i]=i; for(int i=0;i<26;i++)if(vis[i]){ for(int j=0;j<i;j++)if(find(i)!=find(j)){ vector<int>c; c.clear(); set_intersection(s[i].begin(),s[i].end(),s[j].begin(),s[j].end(),back_inserter(c)); //交集不为空 if(c.size()) F[F[i]]=F[j]; } } int cnt=0; for(int i=0;i<26;i++) if(find(i)==i && vis[i])cnt++; cout<<cnt<<' '; }
E:这题感觉有个很大的坑
#include<bits/stdc++.h> using namespace std; #define N 2000005 int n; char s[N],a[N]; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int MAXN = 1e6+5; int add[MAXN<<2],sl[MAXN<<2],sr[MAXN<<2]; void pushup(int root) { sl[root]=min(sl[root<<1],sl[root<<1|1]); sr[root]=max(sr[root<<1],sr[root<<1|1]); } void pushdown(int rt) { if(add[rt]) { sl[rt<<1]+=add[rt]; sl[rt<<1|1]+=add[rt]; sr[rt<<1]+=add[rt]; sr[rt<<1|1]+=add[rt]; add[rt<<1]+=add[rt]; add[rt<<1|1]+=add[rt]; add[rt]=0; } } void update(int L,int R,int x,int l,int r,int rt) { if(l>=L && r<=R) { add[rt]+=x; sl[rt]+=x; sr[rt]+=x; return; } pushdown(rt); int m=(l+r)>>1; if(L<=m) update(L,R,x,lson); if(R>m) update(L,R,x,rson); pushup(rt); } int main(){ cin>>n; scanf("%s",s+1); int p=1; int cnt=0; for(int i=1;i<=n;i++){ if(s[i]=='L'){ if(p>1) p--; } else if(s[i]=='R') p++; else { if(a[p]=='('){ cnt--; update(p,n,-1,1,n,1); } else if(a[p]==')'){ cnt++; update(p,n,1,1,n,1); } if(s[i]=='('){ cnt++; update(p,n,1,1,n,1); } else if(s[i]==')'){ cnt--; update(p,n,-1,1,n,1); } a[p]=s[i]; } if(cnt!=0 || sl[1]<0) cout<<"-1 "; else cout<<sr[1]<<" "; } /*puts(""); cout<<p<<' '; printf("%s",a+1); */ } /* (((aaa(R(RaR))R(R(a)))RRaLaa)LRaa(aR))(LaRR(a(a)LaR()R(RR)(RaRa(()aaLLLLL(a)(()R(() */