codeforces contest 327
来源:互联网 发布:淘宝网名昵称大全男 编辑:程序博客网 时间:2024/06/05 14:56
http://codeforces.com/contest/327
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
D 327D Block Tower
题意:给出一个n*m的地图,初始每个格子不是空的就是坏的,你可以在空的格子上执行操作
1,建蓝色的建筑,可容纳100人
2,建红色的建筑(必须建在蓝色建筑旁边),可容纳200人
3,摧毁建筑
总操作数有限,求能让最后总人口最多的建造方案
题解:虽然限定了总操作数,但是算一下就发现给出的操作数足够在每个格子上操作三次。
先在所有格子上建蓝色建筑,然后dfs每一个联通块,回溯的时候再把红色建筑建上。
#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <set>#include <map>using namespace std;typedef long long ll;#define de(x) cout << #x << "=" << x << endlconst int N=505;char s[N][N];int vis[N][N];struct Ans { char ch; int x,y;}ans[1000005];int cnt,n,m;void dfs(int x,int y) { vis[x][y]=1; if(!vis[x-1][y]&&s[x-1][y]=='B') dfs(x-1,y); if(!vis[x+1][y]&&s[x+1][y]=='B') dfs(x+1,y); if(!vis[x][y-1]&&s[x][y-1]=='B') dfs(x,y-1); if(!vis[x][y+1]&&s[x][y+1]=='B') dfs(x,y+1); s[x][y]='R'; ans[++cnt].ch='D'; ans[cnt].x=x; ans[cnt].y=y; ans[++cnt].ch='R'; ans[cnt].x=x; ans[cnt].y=y;}void doing(int x,int y) { vis[x][y]=1; if(!vis[x-1][y]&&s[x-1][y]=='B') dfs(x-1,y); if(!vis[x+1][y]&&s[x+1][y]=='B') dfs(x+1,y); if(!vis[x][y-1]&&s[x][y-1]=='B') dfs(x,y-1); if(!vis[x][y+1]&&s[x][y+1]=='B') dfs(x,y+1);}int main() { while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;++i) { scanf("%s",s[i]+1); s[i][0]='#';s[i][m+1]='#'; } for(int i=0;i<=m+1;++i) { s[0][i]='#'; s[n+1][i]='#'; } cnt=0; for(int i=1;i<=n;++i) { for(int j=1;j<=m;++j) { if(s[i][j]=='.') { s[i][j]='B'; ans[++cnt].ch='B'; ans[cnt].x=i; ans[cnt].y=j; } } } memset(vis,0,sizeof(vis)); for(int i=1;i<=n;++i) { for(int j=1;j<=m;++j) { if(s[i][j]=='B'&&!vis[i][j]) { doing(i,j); } } } printf("%d\n",cnt); for(int i=1;i<=cnt;++i) printf("%c %d %d\n",ans[i].ch,ans[i].x,ans[i].y); } return 0;}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
E
http://blog.csdn.net/qq_32707623/article/details/53340236
0 0
- codeforces contest 327
- Codeforces Contest Rules
- CodeForces 501A Contest
- CodeForces 501A Contest
- codeforces contest 315
- codeforces contest 479
- codeforces contest 733
- codeforces contest 339
- codeforces contest 738
- codeforces contest 344
- codeforces contest 189
- codeforces contest 352
- codeforces contest 353
- codeforces contest 742
- codeforces contest 357
- codeforces contest 358
- codeforces contest 355
- codeforces contest 349
- 互联网下的分布式事务
- Ubuntu下查看进程pid及结束无响应程序
- 【算法概论】FAS问题与顶点覆盖问题
- 开发一个程序基本思路
- 小米手机升级系统后无法真机调试
- codeforces contest 327
- eclipse闪退
- 图片下拉放大 自定义scrollView
- ubuntu 下su root 失败su: Authentication failure
- 细节记录
- mysql之select 查询表数据(一)
- UIActionSheet/ UIAlaterView/UIAlertController
- Linux内核之BUS驱动设备模型理解
- php中引入facebook的messenger消息接口