Chips CodeForces - 333B

题意:有一个n*n的棋盘,其中有m个格子被禁止。在游戏开始前要将一些芯片(?)放到四条边上(但不能是角上)。游戏开始后,每次操作将每一个芯片移动到它四周四格中某一格,并且要用n-1次操作将所有的芯片移到与其初始位置相对的一条边上。在移动过程中,不能有任何芯片经过被禁止的格子,不能有任何多个芯片重叠,不能在一次操作中使两个芯片交换位置(在将两个芯片放在相对的两条边上相对的位置时,就会发生)。问如果要求完成游戏,最多可以在棋盘上放几个芯片。

方法:

事实上,当第i行不为中间行时,这一行是否有芯片、芯片在哪端与其他任何行/列的情况都无关。

但是当第i行是中间行时,如果第i行有芯片,第i列无法有芯片。

第一次程序(错)

 #include<cstdio>
bool deny_row[],deny_column[];
int ans,n,m;
int main()
{
int i,x,y;
scanf("%d%d",&n,&m);
for(i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
deny_row[x]=true;
deny_column[y]=true;
}
for(i=;i<n;i++)
if(!deny_row[i])
{
ans++;
deny_column[i]=true;
}
for(i=;i<n;i++)
if(!deny_column[i])
ans++;
printf("%d",ans);
return ;
}

误以为第i行有芯片,第i列就一定不能有芯片。误以为一定要放在同一端。

第二次(正确)

#include<cstdio>
bool deny_row[],deny_column[];
int ans,p,n,m;
int main()
{
int i,x,y;
scanf("%d%d",&n,&m);
if(n%==)
p=(n+)/;//记录中间行编号,如果其存在
for(i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
deny_row[x]=true;
deny_column[y]=true;
}
for(i=;i<n;i++)
if(!deny_row[i])
ans++;
for(i=;i<n;i++)
if(!deny_column[i]&&(deny_row[i]==true||i!=p))
ans++;
printf("%d",ans);
return ;
}

最新文章

  1. github 和 github for windows 学习使用总结
  2. JQuery Mobile 页面参数传递(转)
  3. React Native iOS环境搭建
  4. ${fn:length(worklicenseList)} #表示不在struts堆栈里,没有#表示从struts堆栈里取
  5. HTML5+J2EE实现文件异步上传
  6. Distributed systems
  7. Ubuntu 16.04开启SSH服务
  8. 跟我学ASP.NET MVC之七:SportsStrore一个完整的购物车
  9. Linux 系统调用过程详细分析
  10. asp.net core 将配置文件配置迁移到数据库(一)
  11. Python网络爬虫精要
  12. Java 动态绑定
  13. asp.net mvc模板布局
  14. jumpserver-1.4.0.2
  15. Android Lint简介
  16. sublimetext 2 编译文件带input时 提示 EOFError: EOF when reading a line
  17. JDBC 调用存储过程代码示例
  18. PHP扩展--Yaf框架安装
  19. MySQL之prepare用法
  20. 一次react滚动列表的实践---兼容ios安卓

热门文章

  1. 图像处理之 opencv 学习---opencv 中的常用算法
  2. ln mv 发挥一个物体的元作用
  3. SpringMVC 学习笔记(四) 处理模型数据
  4. js遍历map
  5. eclipse 修改代码后无法生效,需要clean后才能生效的解决办法
  6. HDU3667 Transportation —— 最小费用流(费用与流量平方成正比)
  7. Python小练习_将数据库中表数据存到redis里
  8. 在canvas标签和style中定义width和height
  9. AM335x Android eMMC mkmmc-android.sh hacking
  10. 【POJ 2752】 Seek the Name, Seek the Fame