hihocoder 1630 Chinese Checkers [大模拟]
来源:互联网 发布:网络推广术语 编辑:程序博客网 时间:2024/04/28 09:42
题意:跳棋= =,但是只要中间棋子对称就可以跳,不能拿别人的棋子!!没有棋子也不能走!!
题解:大模拟= =。
AC代码:
#include<stdio.h>#include<map>#include<string>#include<string.h>#include<iostream>using namespace std;int start[18]={0,12,11,10,9,0,1,2,3,4,3,2,1,0,9,10,11,12};int have[18]={0,1,2,3,4,13,12,11,10,9,10,11,12,13,4,3,2,1};int zhongs[18]={0,0,0,0,0,5,4,3,2,1,2,3,4,5,0,0,0,0};int zhonge[18]={0,0,0,0,0,9,9,9,9,9,9,9,9,9,0,0,0,0};int dui[7]={0,6,5,4,3,2,1};int mark[30][30];int mp[30][30];int ans[6]={1,6,4,3,5,2};int gety(int s,int num){return s+2*num-2;}int fangety(int x,int y){return (y+2-start[x]-1)/2;}void pout(){for(int i=1;i<=17;i++){for(int j=1;j<30;j++){if(mark[i][j]==-1)printf(" ");else printf("%d",mark[i][j]);}printf("\n");}}int dir[6][2]={{0,-2},{-1,-1},{-1,1},{0,2},{1,1},{1,-1}};map<string,int>mpp;bool judge(int sx,int sy,int ex,int ey,int di,int step){if(step<1)return false;int f=0;int nowx=sx,nowy=sy;while(nowx!=ex||nowy!=ey){if(mp[nowx][nowy]||mp[ex][ey])f=1;nowx+=dir[di][0];nowy+=dir[di][1];}if(mp[nowx][nowy]||mp[ex][ey])f=1;for(int i=0;i<step/2;i++){if((!!mp[sx][sy])!=(!!mp[ex][ey]))return false;sx+=dir[di][0];sy+=dir[di][1];ex-=dir[di][0];ey-=dir[di][1];}if(f)return true;else return false;}int col(int x,int y){if(x<=4)return 1;if(x>13)return 6;if(x>=5&&x<=8&&y<=10)return 2;if(x>=5&&x<=8&&y>18)return 3;if(x>=10&&x<=13&&y<=10)return 4;if(x>=10&&x<=13&&y>18)return 5;}int main(){//printf("%d\n",gety(start[0]+1,have[0]));int n;while(~scanf("%d",&n)){memset(mark,-1,sizeof(mark));mpp["L"]=0;mpp["UL"]=1;mpp["UR"]=2;mpp["R"]=3;mpp["LR"]=4;mpp["LL"]=5;for(int i=1;i<=17;i++)for(int j=1;j<30;j++){if(!(j>start[i]&&j<=gety(start[i]+1,have[i])))mark[i][j]=-1;else mark[i][j]=0;}for(int i=1;i<=17;i++){for(int j=1;j<=have[i];j++){int y=gety(start[i]+1,j);mark[i][y]=col(i,y);mp[i][y]=col(i,y);if(zhongs[i]<=j&&j<=zhonge[i]){mark[i][y]=0;mp[i][y]=0;}}}int fuck=-1;while(n--){fuck=(fuck+1)%6;//pout();int x,y;string A;scanf("%d%d",&x,&y);cin>>A;int di=mpp[A];int nowx=x;int nowy=gety(start[x]+1,y);int step=0;int dx=nowx,dy=nowy;if(mp[dx][dy]!=ans[fuck])continue;int hax=-1,hay=-1;while(mark[dx+dir[di][0]][dy+dir[di][1]]!=-1){step++;dx+=dir[di][0];dy+=dir[di][1];if((judge(nowx+dir[di][0],nowy+dir[di][1],dx-dir[di][0],dy-dir[di][1],di,step-1)||step==1)&&mp[dx][dy]==0){if(mark[dx][dy]!=0){if(dui[mp[nowx][nowy]]==mark[dx][dy]||mp[nowx][nowy]==mark[dx][dy])hax=dx,hay=dy;}else hax=dx,hay=dy;}}if(hax==-1)continue;swap(mp[nowx][nowy],mp[hax][hay]);}for(int k=0;k<6;k++){int num=ans[k];int sum=0;for(int i=0;i<30;i++)for(int j=0;j<30;j++)if(mp[i][j]==num){sum++;if(sum==10)printf("%d %d\n",i,fangety(i,j));else printf("%d %d ",i,fangety(i,j));}}//pout();}}
阅读全文
0 0
- hihocoder 1630 Chinese Checkers [大模拟]
- hihocoder 1228 大模拟
- Chinese checkers 跳棋(广搜)
- NYOJ 692 Chinese checkers(广搜)
- hihoCoder-1632-Secret Poems(大模拟)
- nyoj-692-Chinese checkers【思维题】【好题】
- UVA 11210 Chinese Mahjong(中国麻将 , 大模拟)
- hihoCoder 1383 模拟
- hihoCoder 1228 Mission Impossible 6 2015北京网络赛 大模拟
- 【hdu3830】Checkers
- hihoCoder挑战赛12 顺子 模拟
- UVa 11210 Chinese Mahjong (模拟&枚举&回溯)
- 11210 - Chinese Mahjong【暴力、模拟、减枝】
- UVA Chinese Mahjong(暴力枚举+模拟)
- Chinese Girls' Amusement (大数模拟)
- HDU 6213 Chinese Zodiac(水题,模拟)
- **"Chinese"
- chinese
- 四.替换空格
- mysql安装常见问题(系统找不到指定的文件、发生系统错误 1067 进程意外终止)
- OpenVPN 网桥模式
- 深度拷贝
- Teams Gym-101028E
- hihocoder 1630 Chinese Checkers [大模拟]
- HDU 1004map的初步使用
- LeetCode题解 第十周
- swift设置状态栏为白色
- 函数作用记录
- 加法电路原理
- 《Vision based autonomous driving
- 分类叠加
- js原型和继承