1. 程式人生 > >Summer training #6

Summer training #6

its else b- color 線下 con 分享 oid 模擬

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("!!!\n") #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("!!!\n")
#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("!!!\n")
#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

Summer training #6