cf 1263

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<<'\n';
    }
}
View Code

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<<'\n';
        for(int i=1;i<=n;i++)
            cout<<s[i][1]<<s[i][2]<<s[i][3]<<s[i][4]<<'\n';
    }
}
View Code

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()<<'\n';
        for(auto x:v)
            cout<<x<<" ";
        puts("");
    }
}
View Code

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<<'\n';
}
View Code

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<<'\n';
    printf("%s",a+1);
    */
}
/*
(((aaa(R(RaR))R(R(a)))RRaLaa)LRaa(aR))(LaRR(a(a)LaR()R(RR)(RaRa(()aaLLLLL(a)(()R(()
*/
View Code

 

posted on 2019-12-04 16:47  zsben  阅读(258)  评论(0编辑  收藏  举报

导航