zoukankan      html  css  js  c++  java
  • Summer training #6

    A:水.看0多还是1多就行

    B:模拟二进制运算 ,,卡了好久 不应该

    #include <bits/stdc++.h>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define foror(i,a,b) for(i=a;i<b;i++)
    #define foror2(i,a,b) for(i=a;i>b;i--)
    #define EPS 1.0e-8
    #define PI acos(-1.0)
    #define INF 3000000000
    #define MOD 1000000009
    #define mem(a,b) memset((a),b,sizeof(a))
    #define TS printf("!!!
    ")
    #define lson o<<1, l, m
    #define rson o<<1|1, m+1, r
    //using ll = long long;
    //using ull= unsigned long long;
    //std::ios::sync_with_stdio(false);
    using namespace std;
    //priority_queue<int,vector<int>,greater<int>> que;
    typedef long long ll;
    string a,b,c;
    int num[4][110];
    int will[4][110];
    int alen;
    int blen;
    int clen;
    void print()
    {
     for(int i=10;i>=0;i--)
     cout<<num[1][i];
     cout<<endl;
     for(int i=10;i>=0;i--)
     cout<<num[2][i];
     cout<<endl;
     for(int i=10;i>=0;i--)
     cout<<num[3][i];
     cout<<endl;
    }
    void init()
    {
     for(int i=1;i<=alen;i++)
            num[1][i]=a[alen-i]-'0';
     for(int i=1;i<=blen;i++)
            num[2][i]=b[blen-i]-'0';
     for(int i=1;i<=clen;i++)
            num[3][i]=c[clen-i]-'0';
    }
    int doit(int a,int b,int c)
    {
     int ans1;
     int ans2=0;
    int flag=1;
     for(int i=1;i<=101;i++)
     {
            ans1=num[a][i]+num[b][i]+ans2;
            ans2=ans1/10;
            ans1%=10;
            if(ans1!=num[c][i])
            {
                    flag=0;
                    break;
            }
     }
     return flag;
    }
    int main()
    {
     //freopen("in.txt", "r", stdin);
     //freopen("out.txt", "w", stdout);
     cin >> a >> b >> c;
     alen=a.size();
     blen=b.size();
     clen=c.size();
     for(int i=1;i<=3;i++)
     mem(num[i],0);
     init();
      //print();
     int flag=0;
     for(int i=1;i<=3;i++)
            for(int j=1;j<=3;j++)
            for(int w=1;w<=3;w++)
     {
            //cout<<i<<j<<w<<":";
            //cout<<doit(i,j,w)<<endl;
            if(doit(i,j,w)==1)
            {
            flag=1;
            }
     }
     if(flag==1)
            cout<<"YES";
     else
            cout<<"NO";
      return 0;
    }
    View Code

    E:按照要求模拟 计算不符合题中要求的个数

    #include <bits/stdc++.h>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define foror(i,a,b) for(i=a;i<b;i++)
    #define foror2(i,a,b) for(i=a;i>b;i--)
    #define EPS 1.0e-8
    #define PI acos(-1.0)
    #define INF 3000000000
    #define MOD 1000000009
    #define mem(a,b) memset((a),b,sizeof(a))
    #define TS printf("!!!
    ")
    #define lson o<<1, l, m
    #define rson o<<1|1, m+1, r
    //using ll = long long;
    //using ull= unsigned long long;
    //std::ios::sync_with_stdio(false);
    using namespace std;
    //priority_queue<int,vector<int>,greater<int>> que;
    typedef long long ll;
    int table[10][10];
    int num[10005][10];//
    int ans[6];
    void doit(int x)
    {
     for(int i=1;i<=5;i++)
     ans[i]=num[x][i];
    }
    int check1(int x)
    {
     for(int i=1;i<=5;i++)
            for(int j=0;j<=9;j++)
     {
             doit(x);
             if(ans[i]==j)
             continue;
             ans[i]=j;
             table[table[table[ans[1]][ans[2]]][ans[3]]][ans[4]]
             if(anser==0)
             return 1;
     }
     return 0;
    }
    int check2(int x)
    {
     for(int i=1;i<=4;i++)
     {
            doit(x);
            if(ans[i]==ans[i+1])
            continue;
            swap(ans[i],ans[i+1]);
            table[table[table[ans[1]][ans[2]]][ans[3]]][ans[4]]
            if(anser==0)
            return 1;
     }
     return 0;
    }
    int main()
    {
     //freopen("in.txt", "r", stdin);
     //freopen("out.txt", "w", stdout);
            for(int i=0;i<10;i++)
            for(int j=0;j<10;j++)
            cin>>table[i][j];
            for(int i=0;i<10000;i++)
            {
            int now=i;
            for(int j=4;j>0;j--)
            {
            num[i][j]=now%10;
            now/=10;
            }
            for(int j=1;j<=4;j++)
            ans[j]=num[i][j];
            for(int j=1;j<=4;j++)
            {
            ans[j]=table[ans[j-1]][ans[j]];
            }
            num[i][5]=ans[4];
            }
     /*for(int i=1;i<=5;i++)
            cout<<num[2016][i];
            cout<<endl;
     for(int j=0;j<=10;j++)
     {
            for(int i=1;i<=5;i++)
            cout<<num[j][i];
            cout<<endl;
     }*/
     int ans=0;
     for(int i=0;i<10000;i++)
     if(check1(i)||check2[i])
     ans++;
     cout<<ans<<endl;
      return 0;
    }
    View Code

    F:有N行单向流水线和对应的N个仓库 每个机器人有两个值 X Y  其中X表示坐标 Y表示在哪一个流水线下面 要求输出每个仓库能从几个流水线流入

    根据题意每个仓库我们给他两个值 一个代表最上边能到达那个仓库 一个代表最下边能到达那个仓库 因为机器人只会连接相邻的两条线 所以保证l到r之间是连续的

    再按机器人的坐标进行升序排序 然后依次读入 每次更新机器能碰到的两条线的l与r   (例二很有用)

    #include <bits/stdc++.h>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define foror(i,a,b) for(i=a;i<b;i++)
    #define foror2(i,a,b) for(i=a;i>b;i--)
    #define EPS 1.0e-8
    #define PI acos(-1.0)
    #define INF 3000000000
    #define MOD 1000000009
    #define mem(a,b) memset((a),b,sizeof(a))
    #define TS printf("!!!
    ")
    #define lson o<<1, l, m
    #define rson o<<1|1, m+1, r
    //using ll = long long;
    //using ull= unsigned long long;
    //std::ios::sync_with_stdio(false);
    using namespace std;
    //priority_queue<int,vector<int>,greater<int>> que;
    typedef long long ll;
    pair<int,int> robot[200010];
    int ans[200010][2];
    bool cmp(pair<int,int> a,pair<int,int> b){return a.first<=b.first;}
    int main()
    {
     //freopen("in.txt", "r", stdin);
     //freopen("out.txt", "w", stdout);
     int n,m;
     while(scanf("%d %d",&n,&m)!=EOF)
     {
     for(int i=1;i<=n;i++)
     ans[i][0]=ans[i][1]=i;
     for(int i=1;i<=m;i++)
     {
            scanf("%d %d",&robot[i].first,&robot[i].second);
     }
     sort(robot+1,robot+1+m,cmp);
     for(int i=1;i<=m;i++)
     {
           int aim=robot[i].second;
           int ans1=min(ans[aim][0],ans[aim+1][0]);
           int ans2=max(ans[aim][1],ans[aim+1][1]);
           ans[aim][0]=ans1;
           ans[aim+1][0]=ans1;
           ans[aim][1]=ans2;
           ans[aim+1][1]=ans2;
     }
     for(int i=1;i<n;i++)
     cout<<ans[i][1]-ans[i][0]+1<<" ";
     cout<<ans[n][1]-ans[n][0]+1<<endl;
     }
      return 0;
    }
    View Code
  • 相关阅读:
    “There appears to be trouble with your network connection. Retrying”
    Nignx 处理异常操作流程
    "...do not match previously installed version; ignoring!"
    文档对象模型(DOM)
    Parsing error: Expression expected.
    让人抓狂的缩进冲突(eslint)
    C#中属性PropertyInfo的使用
    C#调用WebService服务(动态调用)
    pdf转word工具
    PASS系统应用技术手册
  • 原文地址:https://www.cnblogs.com/Aragaki/p/7162712.html
Copyright © 2011-2022 走看看