zoukankan      html  css  js  c++  java
  • ICPC North Central NA Contest 2017

    H. Zebras and Ocelots

    思路

    这题的代码有省略,我们每次取出最低位置的1,然后这个数后面都是0,要想翻转后面的数和这个数,只需要减一即可。

    所以

    while (x) {
        // long long y=x&(-x);
        x--;
    }
    

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn=1e6+10;
    long long n;
    
    int main()
    {
        string str;
        cin>>n;
        long long x=0;
        for (long long i=n-1;i>=0;i--) {
            cin>>str;
            if (str[0]=='O') {
                x|=(1LL<<i);
            }
        }
        cout<<x<<endl;
        return 0;
    }
    

    I. Racing Around the Alphabet

    思路

    这题主要是精度,pi要用acos函数求。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn=505;
    const int CH_NUM=28;
    const double PI=acos(-1);
    const int r=30;
    string str;
    int dis[CH_NUM+2][CH_NUM+2];
    /*
    r=30
    c=2*PI*r
    */
    
    inline int trans(char ch) {
        if (ch==' ') {
            return 26;
        }
        if ((ch>='A'&&ch<='Z')) {
            return ch-'A';
        }
        return 27;
    }
    int main()
    {
        for (int i=0;i<CH_NUM;i++) {
            for (int j=i+1;j<CH_NUM;j++) {
                int left=CH_NUM-j+i;
                int right=j-i;
                dis[i][j]=left<right?left:right;
                dis[j][i]=dis[i][j];
                // printf("%d  ",dis[i][j]);
            }
            // printf("
    ");
        }
        int n;
        cin>>n;
        cin.get();
        while (n--) {
            getline(cin,str);
            int len=str.length();
            int cnt=0;
            for (int i=0;i<len-1;i++) {
                int x=trans(str[i]);
                int y=trans(str[i+1]);
                cnt+=dis[x][y];
                // printf("%d %d %d
    ",x,y,dis[x][y]);
            }
            // printf("%d
    ",cnt);
            double C=2*PI*r;        
            // printf("%.10f %.10f
    ",C,cnt/28.0);
            double ans=(cnt/28.0)*C/15.0+len;
            printf("%.10f
    ",ans);
        }
        return 0;
    }
    

    G. Sheba's Amoebas

    思路

    并查集直接找,但是每一个值为真的点都要找8个方向判断并连结,不然会发现在有些情况下是错的。

    直接枚举就可以了。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn=105;
    int m,n;
    int d[8][2]={1,0,-1,0,0,1,0,-1,1,1,-1,-1,-1,1,1,-1};
    int g[maxn][maxn],pre[maxn*maxn];
    
    void init() {
        for (int i=0;i<n*m;i++) {
            pre[i]=i;
        }
    }
    
    int trans(int i,int j) {
        return i*m+j;
    }
    
    bool check(int x,int y) {
        if (x>=0&&y>=0&&x<n&&y<m) {
            return true;
        }
        return false;
    }
    
    inline int find(int x) {
        if (pre[x]==x) {
            return x;
        }
        return pre[x]=find(pre[x]);
    }
    
    void unions(int x,int y) {
        int fx=find(x);
        int fy=find(y);
        if (fx!=fy) {
            pre[fx]=fy;
        }
    }
    
    int main()
    {
        scanf("%d%d",&n,&m);
        init();
        char str[maxn];
        for (int i=0;i<n;i++) {
            scanf("%s",str);
            for (int j=0;str[j];j++) {
                g[i][j]=(str[j]=='#'?1:0);
            }
        }
        for (int i=0;i<n;i++) {
            for (int j=0;j<m;j++) {
                if (g[i][j]) {
                    for (int k=0;k<8;k++) {
                        int dx=i+d[k][0];
                        int dy=j+d[k][1];
                        if (check(dx,dy)&&g[dx][dy]) {
                            unions(trans(i,j),trans(dx,dy));
                        }
                    }
                }
            }
        }
        int ans=0;
        for (int i=0;i<n;i++) {
            for (int j=0;j<m;j++) {
                if (g[i][j]&&find(trans(i,j))==trans(i,j)) {
                    ans++;
                }
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    HTML5 WebSocket 技术介绍
    腾迅平台接入笔记
    Windows 2008 R2 64位上安装wamp失败的原因
    海伦公式
    ANE接入平台心得记录(安卓)
    ANE原生代码的调试(安卓)
    一行代码远离Google浏览器兼容问题的困扰
    U3D的飞船太空射击例子中,使用coroutine
    这几天在搞UNITY3D,感觉回到了AS2
    网页动物园2.0发布,经过几个月的努力,采用JAVA编写!
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/12383858.html
Copyright © 2011-2022 走看看