zoukankan      html  css  js  c++  java
  • ACM ICPC 2017 Warmup Contest 3

    (假期第一次比较正式的一次队内练习赛)还是圳爷发挥好 现学凸包A题 弱鸡只能签道切个打表题

    A 队友直接广搜A掉

    C 按照一定规则染色 最终使每块颜色不同的最小花费

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    struct cmp{
        bool operator()(ll x,ll y){
            return x>y;
        }
    };
    int main(){
        int T;scanf("%d",&T);
        int n;
        priority_queue<ll,vector<ll>,cmp >que;
        while(T--){
            scanf("%d",&n);
            ll aa;
            for(int i=1;i<=n;i++){
                scanf("%lld",&aa);que.push(aa);
            }
            long long ans=0;
            while(que.size()>1){
                ll t1=que.top();que.pop();ll t2=que.top();que.pop();
                ans+=(t1+t2);
                que.push(t1+t2);
            }
           while(!que.empty()) que.pop();
           printf("%lld
    ",ans);
        }
        return 0;
    }
    

     D 签到题

    #include <bits/stdc++.h>
    using namespace std;
    int a[105];
    typedef struct node{
        int x;int y;
        friend bool operator<(node a,node b){
            if(a.x==b.x) return a.y<b.y;
            return a.x>b.x;
        }
    }node;
    node b[105];
    int main(){
        int n,m;cin>>n>>m;
        memset(a,0,sizeof(a));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                a[i+j]++;
            }
        }
        int u=0;
        for(int i=2;i<=m+n;i++){
            if(a[i]!=0){
             b[++u].x=a[i];b[u].y=i;
            }
        }
        sort(b+1,b+u+1);
        printf("%d
    ",b[1].y);
        for(int i=2;i<=u;i++){
            if(b[i].x==b[i-1].x){
                printf("%d
    ",b[i].y);
            }
            else break;
        }
        return 0;
    }
    

     F 网络流裸题 队友板子速切

       H 打表题 枚举AB串 统计所有满足的情况 排序二分即可(没注意Int会爆 WA了两发

    #include <bits/stdc++.h>
    using namespace std;
    string a[64];
    string b[64];
    long long p[64];
    long long vis[5005];
    int pos;
    long long zh(string c){
        long long sum=0;
        int t=c.size();
        for(int i=t-1;i>=0;i--){
            sum+=((c[i]-'0')*p[t-1-i]);
        }
        return sum;
    }
    long long pow(int x){
        long long sum=1;
        for(int i=1;i<=x;i++) sum*=2;
        return sum;
    }
    void csh(){
        pos=0;string s;
        for(int i=0;i<63;i++){
            vis[++pos]=zh(a[i]);
         for(int j=0;j<62;j++){
                int id=1;
             s=a[i];
             while(s.size()<64){
                if(id&1) {s+=b[j];id++;}
                else {s+=a[i];id++;}
                if(s.size()<64) vis[++pos]=zh(s);
              }
            s.clear();
           }
        }
    }
    int main(){
         a[0]="1";b[0]="0";
         for(int i=0;i<=63;i++) p[i]=pow(i);
         for(int i=1;i<=63;i++){
            a[i]=a[i-1]+"1";
            b[i]=b[i-1]+"0";
         }
         csh();
         sort(vis+1,vis+pos+1);
         long long n,m;cin>>n>>m;
         if(n==0&&m==0) cout<<0<<endl;
         else{
         int l=1;int r=pos;int ans1;
         while(l<=r){
                int mid=(l+r)>>1;
            if(vis[mid]>=n){
                ans1=mid;r=mid-1;
            }
            else  l=mid+1;
         }
         l=1;r=pos;int ans2;
         while(l<=r){
            int mid=(l+r)>>1;
            if(vis[mid]<=m){
                ans2=mid;l=mid+1;
            }
            else r=mid-1;
         }
         cout<<ans2-ans1+1<<endl;}
         return 0;
    }
    

      

    J 计算几何 队友说写个凸包 然后暴力判断即可

  • 相关阅读:
    别人的代码
    ZOJ 1914 Arctic Network
    今日所得 2.22
    poj 2031 Building a Space Station
    POJ 1251 Jungle Roads
    优秀的开发者 vs. 糟糕的开发者
    有关读书求知的一些想法
    开发者拒绝写技术博客的常见理由
    写代码如坐禅:你是哪一类程序员?
    [C++] c++ new() 与new[]的区别
  • 原文地址:https://www.cnblogs.com/wang9897/p/7629810.html
Copyright © 2011-2022 走看看