Chips CodeForces - 333B
2024-10-15 23:22:59
题意:有一个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 ;
}
最新文章
- github 和 github for windows 学习使用总结
- JQuery Mobile 页面参数传递(转)
- React Native iOS环境搭建
- ${fn:length(worklicenseList)} #表示不在struts堆栈里,没有#表示从struts堆栈里取
- HTML5+J2EE实现文件异步上传
- Distributed systems
- Ubuntu 16.04开启SSH服务
- 跟我学ASP.NET MVC之七:SportsStrore一个完整的购物车
- Linux 系统调用过程详细分析
- asp.net core 将配置文件配置迁移到数据库(一)
- Python网络爬虫精要
- Java 动态绑定
- asp.net mvc模板布局
- jumpserver-1.4.0.2
- Android Lint简介
- sublimetext 2 编译文件带input时 提示 EOFError: EOF when reading a line
- JDBC 调用存储过程代码示例
- PHP扩展--Yaf框架安装
- MySQL之prepare用法
- 一次react滚动列表的实践---兼容ios安卓
热门文章
- 图像处理之 opencv 学习---opencv 中的常用算法
- ln mv 发挥一个物体的元作用
- SpringMVC 学习笔记(四) 处理模型数据
- js遍历map
- eclipse 修改代码后无法生效,需要clean后才能生效的解决办法
- HDU3667 Transportation —— 最小费用流(费用与流量平方成正比)
- Python小练习_将数据库中表数据存到redis里
- 在canvas标签和style中定义width和height
- AM335x Android eMMC mkmmc-android.sh hacking
- 【POJ 2752】 Seek the Name, Seek the Fame