zoukankan      html  css  js  c++  java
  • Codeforces Round #325 垫底纪念

    A. Alena's Schedule

    间隔0长度为1被记录  1被记录  其余不记录

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <vector>
    using namespace std;
    int main()
    {
        int t;
        cin>>t;
        int pre = 0;
        int a = 0,ans= 0;
        bool mk = false;
        while(t--)
        {
            cin>>a;
            if(a)
            {
                if(pre<2)
                    ans+=pre;
                pre=0;
                ans+=1;
                mk=true;
            }
            else{
                if(mk)
                {
                    pre++;
                }
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    AC代码

    B. Laurenty and Shop

    前缀后缀枚举转折点。

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <vector>
    #include <climits>
    using namespace std;
    int a[100],b[100];
    int main()
    {
        int t;
        cin>>t;
        int x;
        for(int i=1;i<t;i++) // 0 1 2 3
        {
            cin>>x;
            a[i] = a[i-1] + x;
        }
        for(int i=1;i<t;i++) // 0 1 2 3
        {
            cin>>x;
            b[i] = b[i-1] + x;
        }
        vector<int>v;
        for(int i=0;i<t;i++)
        {
            cin>>x;
            v.push_back(a[i]+b[t-1]-b[i]+x);
        }
        sort(v.begin(),v.end());
        cout<<v[0]+v[1]<<endl;
        return 0;
    }
    AC代码

    C. Gennady the Dentist

    读不懂  模拟题

    D. Phillip and Trains

    每次向右走一格,所以我们只要确定他活过m轮,就一定到达终点。//

    判断车的位置   当前位置加2×t   车的位置不容易改变所以我们把自己加上2×t相当于车往左走了2×t  判断是否合法即可

    比赛的时候vis标记位置放错....还是太菜了呢

    就是太菜,不想找什么英语差的借口了

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <vector>
    using namespace std;
    bool vis[4][1100];
    char ch[4][1100];
    int n,m;
    typedef pair<int,int>  pii;
    bool check(int x,int y,int dir,int t,vector<pii>& now)
    {
        int nx = dir+x;
        int ny = y+1;
        if(nx<0||nx>=n||ny<0||ny>=m||vis[nx][ny]) return false;
        int a,b,c;
        a = (y+2*t+1);
        b = (a+1);
        c = (b+1);
        if(dir)
        {
            if((a<m&&ch[x][a]!='.')) return false;
        }
        if((a<m&&ch[nx][a]!='.')||(b<m&&ch[nx][b]!='.')||(c<m&&ch[nx][c]!='.')) return false;
        now.push_back(make_pair(nx,ny));
        vis[nx][ny] = true;
        return true;
    }
    
    bool bfs(int x,int y)//shijiweizhi
    {
        vector<pii>now,nxt;
        now.push_back(make_pair(x,y));
        int time = 0;
        vis[x][y] = true;
        while(now.size())
        {
            if(time>=m) break;
            for(int i=0;i<now.size();i++)
            {
                //printf("%d %d %d",time,now[i].first,now[i].second);
                for(int j=-1;j<=1;j++)
                {
                    check(now[i].first,now[i].second,j,time,nxt);
                }
            }
            swap(now,nxt);
            nxt.clear();
            time++;
        }
        return time>=m;
    }
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            memset(vis,0,sizeof(vis));
            memset(ch,0,sizeof(ch));
            int k;
            scanf("%d%d",&m,&k);
            n = 3;
            int sx,sy;
            for(int i=0;i<n;i++)
            {
                scanf("%s",ch[i]);
                for(int j=0;j<m;j++)
                {
                    if(ch[i][j]=='s')
                    {
                        ch[i][j] = '.';
                        sx = i;
                        sy = j;
                    }
                }
            }
            //cout<<sx<<sy<<endl;
            if(bfs(sx,sy)) puts("YES");
            else puts("NO");
        }
        return 0;
    }
    AC代码

    E. Alice, Bob, Oranges and Apples

    每个人操作的次数就是GCD的过程

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <set>
    #include <string.h>
    #include <cctype>
    #include <climits>
    using namespace std;
    typedef long long ll;
    char ch = 'A';
    bool mk;
    ll gcd(ll a,ll b)
    {
        if(b==0) return a;
        ll val = a/b;
        if(val)
        {
            if(a%b==0) val--;
            if(val)
            {
                cout<<val<<char(ch+mk);
                mk = !mk;
            }
        }
        
        return gcd(b,a%b);
    }
    int main()
    {
        ll x,y;
        cin>>x>>y;
        mk = x<y;
        if(__gcd(x,y)!=1) 
        {
            printf("Impossible");
        }
        else{
            gcd(x,y);
        }
        return 0;
    }
    AC代码
  • 相关阅读:
    对javascript的一点点认识总结——《javascript高级程序设计》读书笔记
    .Net Garbage Collection学习心得
    上网本重装系统的历程
    让验证控件进行分组验证
    .net应用程序分层的个人认识
    asp.net 4.0的变化(官网链接地址)
    SQL 延时 插入 修改 删除
    SQL 删除前100条 with as
    jQuery RadioButtonList
    网站推广的100个方法
  • 原文地址:https://www.cnblogs.com/Geek-xiyang/p/6160753.html
Copyright © 2011-2022 走看看