Dasha and Chess

题解

开始看这道题时你会发现这道题数据给得非常奇怪,但可以先不管。

由于车走的都是最优策略,所以国王只有在行列上同时出现2个小兵时才能获胜。

于是乎我们需要构造出一种情形使得国王在一段长度为n的路途中同时面对n以上的小兵。

于是,我们又回到了数据上。一个很神奇的式子:

而499正是从中点走到图的一个顶点的距离。

所以将图平均分成4部分后,当国王在中点时肯定会有三部分的和大于499,于是我们就可以先走到中点,再从中点沿最多的一快块走到端点,即可保证一定可以获得胜利。

源码

注意有人的格子不能走呀。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
using namespace std;
typedef long long LL;
struct ming{int x,y;ming(){}ming(int X,int Y){x=X;y=Y;}
}king,car[700];
int sum[5];
bool vis[1005][1005];
void solve(int dx,int dy){king.x+=dx;king.y+=dy;if(vis[king.x][king.y])king.x-=dx;printf("%d %d\n",king.x,king.y);fflush(stdout);int k,x,y;scanf("%d %d %d",&k,&x,&y);if(k==-1&&x==-1&&y==-1)exit(0);vis[car[k].x][car[k].y]=0;car[k].x=x;car[k].y=y;vis[x][y]=1;
}
signed main(){cin>>king.x>>king.y;for(int i=1;i<=666;i++)cin>>car[i].x>>car[i].y,vis[car[i].x][car[i].y]=1;while(king.x>500)solve(-1,0);while(king.x<500)solve(1,0);while(king.y>500)solve(0,-1);while(king.y<500)solve(0,1);for(int i=1;i<=666;i++)sum[(car[i].x<500)*2+(car[i].y<500)]++;int minn,pnt;for(int i=0;i<4;i++)if(minn>sum[i])minn=sum[i],pnt=i;while(1)solve(pnt/2?1:-1,pnt%2?1:-1);return 0;
}

谢谢!!!

[CF1100D]Dasha and Chess相关推荐

  1. CF1100D 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 ...

  3. hdu-5794 A Simple Chess(容斥+lucas+dp)

    题目链接: A Simple Chess Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Ot ...

  4. Codeforces 38B - Chess

    38B - Chess 思路:懂点象棋的规则就可以,看看哪些点可以放马. 代码: #include<bits/stdc++.h> using namespace std; #define ...

  5. BZOJ1801: [Ahoi2009]chess 中国象棋

    BZOJ1801: [Ahoi2009]chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮 ...

  6. HDU 4832 Chess 排列组合 DP

    Chess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  7. 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 ...

  8. Aeroplane chess HDU - 4405(期望dp)

    题意: 飞行棋.有n+1格,开始时在0号格子,每一步都要扔一个dice(六个面,概率相同)哪一面朝上他就会向前走x+i步.当x+i大于等于N的时候,游戏结束.另外,地图上有m条航线.第i条航线可以直接 ...

  9. 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− ...

最新文章

  1. js,需要更多源字符
  2. 开源WPF控件库MaterialDesignInXAML推荐
  3. Powershell 时间相关
  4. oracle 拼接_老品牌福建泉州49寸液晶拼接屏多少钱品质
  5. maven profile多环境动态配置文件使用
  6. OkHttpClient源码分析(四)—— CacheInterceptor
  7. 首届Ceph亚太峰会来了!内有粉丝福利
  8. c语言中逻辑运算符中感叹号,某棋牌 -官网
  9. 2022-01-08:数组中只有0和1,每过1代,0旁边只有1个1,当前0会变成1。每过1代,0旁边有2个1,当前0还是0。 比如10001,经过1代,会变成11011,再过1代,还是11011 。
  10. 路飞学城Python-Day37(practise)
  11. ni visa pci_VISA/MASTER信用卡在线缴费友邦、保诚步骤!
  12. python分数类_Python——处理分数类Fraction
  13. 笔记本合上盖子就断网怎么办?
  14. 米的换算单位和公式_小学数学单位换算公式大全
  15. dpdk中文-dpdk简单介绍
  16. 微服务架构与开源框架
  17. python无法初始化设备_【无法初始化这个硬件设备驱动程序】无法初始化这个硬件的设备驱动_无法初始化d3d...
  18. Pytorch阅读文档之flatten函数
  19. android平台下OpenGL ES 3.0使用GLSurfaceView对相机Camera预览实时处理
  20. C++实现员工工资管理系统

热门文章

  1. 2022—SWJTU-寒假ACM校队选拔赛第二场-题解
  2. 我的 2019 总结:警钟为谁而鸣
  3. 首先,打破一切常规 学习笔记 之一
  4. wine安装迅雷、qq2009
  5. android 微信支付接口申请分享
  6. 为什么仓库软件不能直接修改库存数量
  7. 中国互联网大厂布局元宇宙现状如何?
  8. c语言英文版孤独怎么说,孤单英文句子 关于“孤独”的英语句子有哪些?
  9. 电驱动机电一体化仿真
  10. gitlab--基础--5.3--CICD--gitlab-ci.yml关键字