codeforces 1100D-Dasha and Chess
传送门:QAQQAQ
题意:This is an interactive task.
999*999国际象棋棋盘中有一个王和666个车,玩家走王,电脑走车,玩家先走,玩家的目的是让对方的车将到自己的王,电脑的车可以“飞”(即移动到棋盘上任意一点),但吃子规则不变,玩家必须要在2000步之内获胜
思路:哇塞这是国际象棋!好激动好激动!(然而没做出来)
我们考虑一般情况:根据王的位置一横一竖把棋盘分成4个部分,加入王往一个方向走(这里假设往左上走),则除了背对他的方向其它所有车都要闪开(即左上,右上,左下)
假如我们从左上角开始赶车:有666个车要被赶走,王走到右下角(即把车赶光)要998步,太多了;
那么如果王在最中间呢?——最少的一个方向最多也就166个,也就是王在中间背对车个数最少的方向走最少也可以赶走500个车,而王走到最底下只要499步——有2个车来不及闪开了
所以我们先把王移到正中间,再背对车个数最少的方向逼近就行了
活生生打成了码农题(200多行,有很多函数是多余的),一直说越界(其实电脑骗人,只要wronganswer就说越界),加了很多特判,结果发现把王的位置也读入的时候mp赋值为1了
代码:
#include<bits/stdc++.h> using namespace std; const int inf=200000000; int dx[]={-1,-1,1,1}; int dy[]={-1,1,-1,1};struct node{int x,y; }a[667]; int mp[1020][1020];void init() {memset(mp,0,sizeof(mp));for(int i=0;i<=666;i++) {scanf("%d%d",&a[i].x,&a[i].y);if (i) mp[a[i].x][a[i].y]++;//之前没判i!=0 } }void print() {printf("%d %d\n",a[0].x,a[0].y);fflush(stdout); }void up() {a[0].x--;print(); }void down() {a[0].x++;print(); }void left() {a[0].y--;print(); }void right() {a[0].y++;print(); } void leftup() {if(mp[a[0].x-1][a[0].y-1]) {up();return;}a[0].x--; a[0].y--;print(); }void leftdown() {if(mp[a[0].x+1][a[0].y-1]) {down();return;}a[0].x++; a[0].y--;print(); }void rightdown() {if(mp[a[0].x+1][a[0].y+1]) {down();return;}a[0].x++; a[0].y++;print(); }void rightup() {if(mp[a[0].x-1][a[0].y+1]) {up();return;}a[0].x--; a[0].y++;print(); }void read() {int id,xx,yy;scanf("%d%d%d",&id,&xx,&yy);if(id==-1) {exit(0);}mp[a[id].x][a[id].y]--;a[id].x=xx; a[id].y=yy;mp[a[id].x][a[id].y]++; }void ready() {while(a[0].x<500){down();read();}while(a[0].x>500){up();read();}while(a[0].y>500){left();read();}while(a[0].y<500){right();read();} }int dir,minn=inf,tmp; void judge_direction() {int cnt[4]={0,0,0,0};//0:leftup 1:rightup 2:leftdown 3:rightdownfor(int i=1;i<=999;i++){for(int j=1;j<=999;j++){if(i<500){if(j<500) cnt[0]+=mp[i][j];if(j>500) cnt[1]+=mp[i][j];} if(i>500){if(j<500) cnt[2]+=mp[i][j];if(j>500) cnt[3]+=mp[i][j];}}}for(int i=0;i<4;i++){if(minn>cnt[i]) minn=cnt[i],tmp=i;}dir=3-tmp; }void move(int dir) {if(dir==0) leftup();else if(dir==1) rightup();else if(dir==2) leftdown();else rightdown(); }void solve() {while(1){move(dir);read();} }int main() {init();ready();judge_direction();solve();return 0; }
View Code
转载于:https://www.cnblogs.com/Forever-666/p/11235148.html
codeforces 1100D-Dasha and Chess相关推荐
- [CF1100D]Dasha and Chess
Dasha and Chess 题解 开始看这道题时你会发现这道题数据给得非常奇怪,但可以先不管. 由于车走的都是最优策略,所以国王只有在行列上同时出现2个小兵时才能获胜. 于是乎我们需要构造出一种情 ...
- codeforces 1100D
传送门:http://codeforces.com/contest/1100/problem/D 交互题 题意:在一个999*999的棋盘上,你有一个白骑士,每次可以向相邻的八个格子移动,对方有666 ...
- @codeforces - 793G@ Oleg and chess
目录 @description - translation@ @solution@ @part - 1@ @part - 2@ @part - 3@ @part - 4@ @accepted code ...
- codeforces B. Boboniu Plays Chess
题目 题目: 我们有一个起始点,现在你要从这个点出发,然后访问所有的点并且只能访问一次,每一次走可以像车一样,到达一行或一列的任何一个点(经过不算到达),现在你需要打印出路径. 思路: 因为可以随意到 ...
- CF1100D Dasha and Chess
构造 考虑对于国王的坐标,可以将棋盘分成左上,左下,右上,右下四个区域 统计出来这些区域的黑车数量 如果向某一个方向走,那么除其方向反向的区域的黑车不用动以外,其他都要动 比如向右上走,那么除了左下的 ...
- Team Silver_Bullet 训练记录
Team members Vec Grunt henryrabbit To do list team:起队名 每周组队训练 补题 Vec: Grunt:切题,切题,切更多的题!做好切所有类型题的觉悟! ...
- 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 ...
- 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− ...
- Codeforces 754E:Dasha and cyclic table
Codeforces 754E:Dasha and cyclic table 题目链接:http://codeforces.com/problemset/problem/754/E 题目大意:$A$矩 ...
- Codeforces Round #313 (Div. 1) C. Gerald and Giant Chess DP
C. Gerald and Giant Chess Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...
最新文章
- 呼叫中心如何规划好工作习惯
- c语言编程怎么自学网,c语言函数
- 【宜搭客户说】宜搭帮助教育局搭建教育管理平台
- oracle 命令日志输出,ORACLE常用命令日志
- 苹果cms模板_苹果cms是什么东西?
- jq判断是否为整数_jquery怎么判断是否是数字?
- 是否可以改变 宏的值_宋轶白成一道光??抓住美白季你也可以
- 超实用的mysql分库分表策略,轻松解决亿级数据问题
- 【部署问题】解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid“ failed(2:No such file or directory)
- 读谱对吉他手来说重要吗?试试它提升你的读谱效率
- python实现在线答题_python实现用户答题功能
- 计算机中缺失freeimage.dll,修复freeimage.dll
- html手机陀螺仪,陀螺仪MEMS - 详解冷门但很重要的手机陀螺仪
- 计算机能力参考范文,信息技术能力论文,关于关于中学计算机教学的若干相关参考文献资料-免费论文范文...
- 小猫钓鱼游戏(c++实现)
- CSDN博客创建目录的方法
- Cell:基于33个遗传多样性水稻种质泛基因组分析揭示“隐藏”的基因组变异
- YOLOV3解读(3)
- easyui label 编辑_EasyUI datagrid 行编辑
- 002_2 gtsam/unstable/examples/ISAM2_SmartFactorStereo_IMU.cpp
热门文章
- Java并发编程实战读书笔记
- 植物根系水力再分配测定与模拟
- 你永远别想吃垮一家自助餐厅
- 【干货】《小群效应》徐志斌:亲密关系就是“超级信任”、“我很可亲”和“我很可爱”...
- 三、H.264简介、整体结构、使用的技术
- python从入门到精通视频,python快速入门精讲
- Q for Mortals2笔记 -- 原子数据类型
- MappedByteBuffer释放内存
- IBM T60声卡安装
- 商业周刊:挖掘网络友情背后价值