CF1100D Dasha and Chess
构造
考虑对于国王的坐标,可以将棋盘分成左上,左下,右上,右下四个区域
统计出来这些区域的黑车数量
如果向某一个方向走,那么除其方向反向的区域的黑车不用动以外,其他都要动
比如向右上走,那么除了左下的区域,其他的区域的黑车都要动
那么对于一个国王坐标,走到棋盘四个角中的一个角的步数,小于需要移动黑车的数量
那么在这个坐标是一个必胜点(奇异状态)
那么将国王先移动到棋盘的中点
因为666可以分为166,166,167,167
166+167+167=500
而国王走到一个端点的步数为499
500>499
那么必胜
#include <bits/stdc++.h> using namespace std; const int n=666; int kx,ky,tx,ty,vi[1100][1100]; int dx[5],dy[5],tot; struct node {int x,y; }sh[1000]; struct dir {int num,wh; }a[6]; bool cmp(dir a,dir b) {return (a.num<b.num); } bool run() {tot++;if (vi[kx+tx][ky+ty]){printf("%d %d\n",kx+tx,ky);fflush(stdout);int a,b,c;scanf("%d%d%d",&a,&b,&c);return 1;}printf("%d %d\n",kx+tx,ky+ty);kx+=tx;ky+=ty;fflush(stdout);int k,x,y;scanf("%d%d%d",&k,&x,&y);if (k==-1)return 1;vi[sh[k].x][sh[k].y]--;sh[k].x=x;sh[k].y=y;vi[sh[k].x][sh[k].y]++;return 0; } int main() {scanf("%d%d",&kx,&ky);for (int i=1;i<=n;i++)scanf("%d%d",&sh[i].x,&sh[i].y);for (int i=1;i<=n;i++)vi[sh[i].x][sh[i].y]++;//注意有可能多个在一起if (kx<500)tx=1;if (kx>500)tx=-1;if (ky<500)ty=1;if (ky>500)ty=-1;while (1){if (kx==500 || ky==500)break;if (run())return 0;}if (kx==500 && ky!=500){tx=0;if (ky>500)ty=-1;elsety=1;}if (kx!=500 && ky==500){ty=0;if (kx<500)tx=1;elsetx=-1;}while (1){if (kx==500 && ky==500)break;if (run())return 0;}for (int i=1;i<=499;i++){for (int j=1;j<=499;j++){if (vi[i][j]){a[1].num+=vi[i][j];//left upa[1].wh=1;}}}for (int i=1;i<=499;i++){for (int j=501;j<=999;j++){if (vi[i][j]){a[2].num+=vi[i][j];//right upa[2].wh=2;}}}for (int i=501;i<=999;i++){for (int j=501;j<=999;j++){if (vi[i][j]){a[3].num+=vi[i][j];//right downa[3].wh=3;}}}for (int i=501;i<=999;i++){for (int j=1;j<=499;j++){if (vi[i][j]){a[4].num+=vi[i][j];//left downa[4].wh=4;}}}for (int i=1;i<=4;i++)a[i].wh=i;dx[1]=1;dx[2]=1;dx[3]=-1;dx[4]=-1;dy[1]=1;dy[2]=-1;dy[3]=-1;dy[4]=1;sort(a+1,a+1+4,cmp);tx=dx[a[1].wh];ty=dy[a[1].wh];while (1){if (run())return 0;if (kx==1 || kx==999 || ky==0 || ky==999)break;}tx=-tx;ty=-ty;while (tot<=2000){if (run())return 0;if (kx==1 || kx==999 || ky==0 || ky==999)break;} }
转载于:https://www.cnblogs.com/huangchenyan/p/11230368.html
CF1100D Dasha and Chess相关推荐
- [CF1100D]Dasha and Chess
Dasha and Chess 题解 开始看这道题时你会发现这道题数据给得非常奇怪,但可以先不管. 由于车走的都是最优策略,所以国王只有在行列上同时出现2个小兵时才能获胜. 于是乎我们需要构造出一种情 ...
- HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))
Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu-5794 A Simple Chess(容斥+lucas+dp)
题目链接: A Simple Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- Codeforces 38B - Chess
38B - Chess 思路:懂点象棋的规则就可以,看看哪些点可以放马. 代码: #include<bits/stdc++.h> using namespace std; #define ...
- BZOJ1801: [Ahoi2009]chess 中国象棋
BZOJ1801: [Ahoi2009]chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮 ...
- HDU 4832 Chess 排列组合 DP
Chess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- Codeforces Round #394 (Div. 2) A. Dasha and Stairs 水题
A. Dasha and Stairs 题目连接: http://codeforces.com/contest/761/problem/A Description On her way to prog ...
- Aeroplane chess HDU - 4405(期望dp)
题意: 飞行棋.有n+1格,开始时在0号格子,每一步都要扔一个dice(六个面,概率相同)哪一面朝上他就会向前走x+i步.当x+i大于等于N的时候,游戏结束.另外,地图上有m条航线.第i条航线可以直接 ...
- Codeforces Round #732 (Div. 2) D. AquaMoon and Chess 组合数学 + 找规律
传送门 文章目录 题意: 思路: 题意: 给你一个010101串,当且仅当某个111的某一边i+1,i−1i+1,i-1i+1,i−1有111,这个111可以跟i+2,i−2i+2,i-2i+2,i− ...
最新文章
- 360无痕浏览器_高效使用浏览器,探索你不知道的实用功能
- linux 内核 虚拟文件系统VFS 路径查找 path_lookup
- Rcysoft PDF Watermark Pro中文版
- Wpf体系结构的学习
- 山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将...
- 4道Python基础字典练习题
- python学习-综合练习三(斐波那契数列、阿姆斯特朗数、//和/、十进制转二进制bin、八进制oct、十六进制hex、进制转换源码、python中::和:的区别)
- Python较为经典的53个Python库
- ifamre 大小随页面变_SEO优化中如何让你的页面访问速度更快
- Java-For循环
- php date( w ),PHP Date()函数详解
- 对AI的未来以及优势的一些看法
- webstore安装过程 0913
- linux救援模式使用yum,linux学习笔记-第二课-yum,救援模式,单用户模式,运行级别...
- VMware虚拟机下网络连接的三种模式
- 基于 IPIP.NET 进行公网故障排查
- Algorithm:数学建模大赛(CUMCM/NPMCM)之05A《长江水质综合评价与预测》
- 卷积神经网络概念与原理
- 安卓硬件模拟大师_安卓虚拟大师 可以手机运行免root带xp框架模拟器
- 必看!云桌面与传统PC六项成本对比
热门文章
- python计算机博弈大赛,GitHub - bistu/Dots-and-Boxes: 点格棋
- 基于C#的socket聊天室(附源码)
- 计算机专业认知实践报告1000,计算机专业实习报告1000字
- Ci24R1超低成本高性能 2.4GHz GFSK 无线收发芯片
- 官方金山打字通2009
- c++期末上机oj题目汇总二(2018北邮信通版)纯干货
- 行测中的计算机应用题,广东公务员行测题库:行测每日一练常识应用练习题
- gitlab--基础--5.3--CICD--gitlab-ci.yml关键字
- 家用3d室内装修设计软件一览
- 我们参与投资36Kr股权众筹项目“易途8”的决策过程