標籤:div blog end == 多校 names bre pos ems
思路:
類比。
代碼:
#include<bits/stdc++.h>using namespace std;#define ll long long#define pb push_back#define mem(a,b) memset(a,b,sizeof(a))int dir[4][2]={-1,0,1,0,0,-1,0,1};int mp[5][5];int belong[15];int inx,iny;bool is(int x,int y,int xx,int yy){ if(x==inx&&y==iny)return true; if(xx==inx&&yy==iny)return true; return false;}int main(){ ios::sync_with_stdio(false); cin.tie(0); int cs=0,n,q,p; while(cin>>n){ for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++)mp[i][j]=0; } mp[1][1]=11;mp[1][2]=10;mp[1][3]=9;mp[1][4]=8; mp[2][1]=12; mp[2][4]=7; mp[3][1]=1; mp[3][4]=6; mp[4][1]=2;mp[4][2]=3;mp[4][3]=4;mp[4][4]=5; for(int i=1;i<=6;i++)belong[i]=1; for(int i=7;i<=12;i++)belong[i]=2; while(n--){ cin>>q>>p; for(int i=1;i<=4;i++){ bool f=false; for(int j=1;j<=4;j++){ if(mp[i][j]==q){ mp[i][j]=0; f=true; inx=i+dir[p-1][0]; iny=j+dir[p-1][1]; //cout<<inx<<" "<<iny<<endl; mp[inx][iny]=q; break; } } if(f)break; } for(int i=1;i<=4;i++){ if(is(i,1,i,2)&&mp[i][1]>0&&belong[mp[i][1]]==belong[mp[i][2]]&&belong[mp[i][2]]!=belong[mp[i][3]]&&mp[i][4]==0)mp[i][3]=0; if(is(i,2,i,3)&&mp[i][2]>0&&belong[mp[i][2]]==belong[mp[i][3]]&&belong[mp[i][3]]!=belong[mp[i][4]]&&mp[i][1]==0)mp[i][4]=0; if(is(i,2,i,3)&&mp[i][2]>0&&belong[mp[i][2]]==belong[mp[i][3]]&&belong[mp[i][2]]!=belong[mp[i][1]]&&mp[i][4]==0)mp[i][1]=0; if(is(i,4,i,3)&&mp[i][3]>0&&belong[mp[i][3]]==belong[mp[i][4]]&&belong[mp[i][3]]!=belong[mp[i][2]]&&mp[i][1]==0)mp[i][2]=0; } for(int i=1;i<=4;i++){ if(is(1,i,2,i)&&mp[1][i]>0&&belong[mp[1][i]]==belong[mp[2][i]]&&belong[mp[2][i]]!=belong[mp[3][i]]&&mp[4][i]==0)mp[3][i]=0; if(is(2,i,3,i)&&mp[2][i]>0&&belong[mp[2][i]]==belong[mp[3][i]]&&belong[mp[3][i]]!=belong[mp[4][i]]&&mp[1][i]==0)mp[4][i]=0; if(is(2,i,3,i)&&mp[2][i]>0&&belong[mp[2][i]]==belong[mp[3][i]]&&belong[mp[2][i]]!=belong[mp[1][i]]&&mp[4][i]==0)mp[1][i]=0; if(is(4,i,3,i)&&mp[3][i]>0&&belong[mp[3][i]]==belong[mp[4][i]]&&belong[mp[3][i]]!=belong[mp[2][i]]&&mp[1][i]==0)mp[2][i]=0; } /*for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ cout<<setw(3)<<mp[i][j]; } cout<<endl; }*/ } cout<<"#Case "<<++cs<<":"<<endl; for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ cout<<setw(3)<<mp[i][j]; } cout<<endl; } } return 0;}
2018年全國多校演算法寒假訓練營練習比賽(第一場)C 六子沖