zoukankan      html  css  js  c++  java
  • 贪心水题。UVA 11636 Hello World,LA 3602 DNA Consensus String,UVA 10970 Big Chocolate,UVA 10340 All in All,UVA 11039 Building Designing

    UVA 11636 Hello World

    二的幂答案就是二进制长度减1,不是二的幂答案就是是二进制长度。

    #include<cstdio>
    
    int main()
    {
        int n,kas = 0;
        while(scanf("%d",&n),n>0){
            int r = 0;
            for(n--;n;n>>=1) r++;
            printf("Case %d: %d
    ",++kas,r);
        }
        return 0;
    }

    LA 3602 DNA Consensus String

    贪心构造,每一位上选出现次数最多的。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxm = 55,maxn = 1e3+1;
    
    int id[256];
    char rid[] = "ACGT";
    int ct[4][maxn];
    char s[maxn+5];
    int main()
    {
        id['A'] = 0; id['C'] = 1; id['G'] = 2; id['T'] = 3;
        int T;cin>>T;
        while(T--){
            int m,n; scanf("%d%d",&m,&n);
            for(int i = 0; i < 4; i++) fill(ct[i],ct[i]+n,0);
            for(int i = 0; i < m; i++){
                scanf("%s",s);
                for(int j = 0; j < n; j++){
                    ct[id[s[j]]][j]++;
                }
            }
            int sum = 0;
            for(int j = 0; j < n; j++){
                int k = 0;
                for(int i = 1; i < 4; i++) if(ct[i][j] > ct[k][j]) k = i;
                putchar(rid[k]); sum += m-ct[k][j];
            }
            printf("
    %d
    ",sum);
        }
        return 0;
    }

    UVA 10970 Big Chocolate (等效转换)

    题目问最少的刀数是迷惑人的,从块数来看,每次切只会增加一块巧克力。

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int m,n;
        while(~scanf("%d%d",&m,&n)){
            printf("%d
    ",m*n-1);
        }
        return 0;
    }

    UVA 10340 All in All

    贪心选,两个指针,t中的当前元素能选就选,不选这个元素对答案就没有贡献了,一定不会更优。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5;
    char s[maxn],t[maxn];
    int main()
    {
        while(~scanf("%s%s",s,t)){
            char *p = s,*q = t;
            while(*p){
                while(*q && *q != *p) q++;
                if(!*q) break;
                p++; q++;
            }
            if(!*p) puts("Yes");
            else puts("No");
        }
        return 0;
    }

    UVA 11039 Building Designing 

    贪心,按照绝对值排序,记录一下上次的符号,能选就选。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 5e5+5;
    int a[maxn];
    bool cmp(int a,int b) { return abs(a) < abs(b); }
    int main()
    {
        int T; cin>>T;
        while(T--){
            int n; scanf("%d",&n);
            for(int i = 0; i < n; i++) scanf("%d",a+i);
            sort(a,a+n,cmp);
            int ans = 1; bool fg = a[0]>0;
            for(int i = 1; i < n; i++){
                bool tfg = a[i]>0;
                if( (tfg&&!fg) || (!tfg&&fg) ) {
                    fg = tfg; ans++;
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    node + express 搭建服务器,修改为自动重启服务器
    在sublime上运行node
    node + express本地搭建服务器,开启一个新的项目
    关于数据库的一些基本操作语句
    8.数据库编程
    2.关于偏函数
    7.多线程编程
    1.关于__call__的很有意思的用法
    6.python中的网络编程
    4.python中常用的魔法方法(长期更新)
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4809135.html
Copyright © 2011-2022 走看看