传送门: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相关推荐

  1. [CF1100D]Dasha and Chess

    Dasha and Chess 题解 开始看这道题时你会发现这道题数据给得非常奇怪,但可以先不管. 由于车走的都是最优策略,所以国王只有在行列上同时出现2个小兵时才能获胜. 于是乎我们需要构造出一种情 ...

  2. codeforces 1100D

    传送门:http://codeforces.com/contest/1100/problem/D 交互题 题意:在一个999*999的棋盘上,你有一个白骑士,每次可以向相邻的八个格子移动,对方有666 ...

  3. @codeforces - 793G@ Oleg and chess

    目录 @description - translation@ @solution@ @part - 1@ @part - 2@ @part - 3@ @part - 4@ @accepted code ...

  4. codeforces B. Boboniu Plays Chess

    题目 题目: 我们有一个起始点,现在你要从这个点出发,然后访问所有的点并且只能访问一次,每一次走可以像车一样,到达一行或一列的任何一个点(经过不算到达),现在你需要打印出路径. 思路: 因为可以随意到 ...

  5. CF1100D Dasha and Chess

    构造 考虑对于国王的坐标,可以将棋盘分成左上,左下,右上,右下四个区域 统计出来这些区域的黑车数量 如果向某一个方向走,那么除其方向反向的区域的黑车不用动以外,其他都要动 比如向右上走,那么除了左下的 ...

  6. Team Silver_Bullet 训练记录

    Team members Vec Grunt henryrabbit To do list team:起队名 每周组队训练 补题 Vec: Grunt:切题,切题,切更多的题!做好切所有类型题的觉悟! ...

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

  9. Codeforces 754E:Dasha and cyclic table

    Codeforces 754E:Dasha and cyclic table 题目链接:http://codeforces.com/problemset/problem/754/E 题目大意:$A$矩 ...

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

最新文章

  1. 呼叫中心如何规划好工作习惯
  2. c语言编程怎么自学网,c语言函数
  3. 【宜搭客户说】宜搭帮助教育局搭建教育管理平台
  4. oracle 命令日志输出,ORACLE常用命令日志
  5. 苹果cms模板_苹果cms是什么东西?
  6. jq判断是否为整数_jquery怎么判断是否是数字?
  7. 是否可以改变 宏的值_宋轶白成一道光??抓住美白季你也可以
  8. 超实用的mysql分库分表策略,轻松解决亿级数据问题
  9. 【部署问题】解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid“ failed(2:No such file or directory)
  10. 读谱对吉他手来说重要吗?试试它提升你的读谱效率
  11. python实现在线答题_python实现用户答题功能
  12. 计算机中缺失freeimage.dll,修复freeimage.dll
  13. html手机陀螺仪,陀螺仪MEMS - 详解冷门但很重要的手机陀螺仪
  14. 计算机能力参考范文,信息技术能力论文,关于关于中学计算机教学的若干相关参考文献资料-免费论文范文...
  15. 小猫钓鱼游戏(c++实现)
  16. CSDN博客创建目录的方法
  17. Cell:基于33个遗传多样性水稻种质泛基因组分析揭示“隐藏”的基因组变异
  18. YOLOV3解读(3)
  19. easyui label 编辑_EasyUI datagrid 行编辑
  20. 002_2 gtsam/unstable/examples/ISAM2_SmartFactorStereo_IMU.cpp

热门文章

  1. Java并发编程实战读书笔记
  2. 植物根系水力再分配测定与模拟
  3. 你永远别想吃垮一家自助餐厅
  4. 【干货】《小群效应》徐志斌:亲密关系就是“超级信任”、“我很可亲”和“我很可爱”...
  5. 三、H.264简介、整体结构、使用的技术
  6. python从入门到精通视频,python快速入门精讲
  7. Q for Mortals2笔记 -- 原子数据类型
  8. MappedByteBuffer释放内存
  9. IBM T60声卡安装
  10. 商业周刊:挖掘网络友情背后价值