zoukankan      html  css  js  c++  java
  • Codeforces Round #169 (Div. 2)

    a. 简单暴力题

    b. 简单博弈题,多试试几组数据可以发现性质。

    #include <stdio.h>
    #include <string.h>
    #include <string>
    #include <iostream>
    using namespace std;
    
    
    int main()
    {
        char g[1100];
        scanf("%s",g);
        int len=strlen(g);
        int cnt[30];
        int sum=0;
        memset(cnt,0,sizeof(cnt));
        for(int i=0;i<len;i++)
        {
            cnt[g[i]-'a']++;
        }
        int ans=0;
        for(int i=0;i<30;i++)
        {
            if(cnt[i]%2!=0)
                ans++;
        }
        if(ans==0||ans==1) printf("First\n");
        else
        {
            if(ans%2==0) printf("Second\n");
            else printf("First\n");
        }
        return 0;
    }

    c.  可以用树状数组做,但是最快最好的方法是在用一个数组如果区间 【i-j】 ,就让g[i]++; g[j+1]++ , 然后在从第一个元素到最后一个元素k[i]+=k[i-1]这样迭代; 

    想想这种方法确实很巧妙.

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    #include <string>
    #include <iostream>
    using namespace std;
    
    int g[1001000];
    int k[1001000];
    
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            scanf("%d",&g[i]);
        for(int i=0;i<m;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            k[x]++;
            k[y+1]--;
        }
        for(int i=1;i<=n;i++)
        {
            k[i]+=k[i-1];
        }
        sort(g+1,g+n+1);
        sort(k+1,k+n+1);
        __int64 sum=0;
        for(int i=n;i>=1;i--)
        {
            sum+=(__int64)g[i]*k[i];
        }
        printf("%I64d",sum);
        return 0;
    }

    4. 想到了其实也是很简单, 只要找到一个l和r 以二进制表示时的第一个不用的数, 那么后面的就都可以异或得1了。   这样就是最大的数

    #include <stdio.h>
    #include <string.h>
    #include <string>
    #include <iostream>
    using namespace std;
    
    typedef __int64 LL;
    
    int gl[100],gr[100];
    
    LL fuc(int x)
    {
        LL sum=1;
        for(int i=0;i<x;i++)
            sum*=2;
        return sum;
    }
    
    int main()
    {
        LL l,r;
        scanf("%I64d%I64d",&l,&r);
        LL ans=0;
        int cnt=0,cnt1=0;
        LL tmpl=l;
        LL tmpr=r;
        while(tmpl>0)
        {
            gl[cnt++] = tmpl%2;
            tmpl/=2;
        }
        while(tmpr>0)
        {
            gr[cnt1++]=tmpr%2;
            tmpr/=2;
        }
        /*if(cnt1!=cnt)
        {
            int tcnt=cnt-cnt1;
            for(int i=cnt-1;cnt1!=0;i--)
            {
                gr[i]=gr[--cnt1];
            }
            for(int i=0;i<tcnt;i++)
                gr[i]=0;
        }*/
        //int ans[100];
        //int tcnt=0;
        LL sum;
        ans=0;
        sum=0;
        int flag=0;
        for(int i=cnt1-1;i>=0;i--)
        {
            flag=0;
            LL tmp;
            tmp=ans+fuc(i);
            if(!(tmp>r||(tmp+fuc(i)-1)<l))
            {
                flag=1;
            }
            tmp=ans;
            if(!(tmp>r||(tmp+fuc(i)-1)<l))
            {
                if( flag==1 )
                {
                    sum+=fuc(i+1)-1;
                    break;
                }
                else
                {
                    continue;
                }
            }
            else
            {
                ans+=fuc(i);
            }
        }
        printf("%I64d\n",sum);
        return 0;
    }
  • 相关阅读:
    Python Post四种请求方式
    Python 字符串转Base64编解码
    JS 数组遍历
    FineUI MVC 前端获取表格Json通过Post传递后台
    C# Json转DataTable
    MSSQL 关联更新
    Python selenium Message: session not created: This version of ChromeDriver only supports Chrome version 76
    FineUI MVC 同级新增页签
    Tomcat Tomcat的中文乱码设置
    zabbix-4.0-监控服务器的ping告警设置
  • 原文地址:https://www.cnblogs.com/chenhuan001/p/2936791.html
Copyright © 2011-2022 走看看