湖南多校对抗赛(csu 1560)
简单的bfs搜索题,对每个初始的水滴依次扩展,当达到规定步数时跳出。这题还是有坑点的,对于每个初始的水滴,已经访问过的位置不再访问,但是对于不同的水滴,别的水滴已经访问过的,对于当前水滴来说可能还要访问,才能使扩展的范围最大。
#include<iostream>
#include<string>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
struct node
{int a;int b;int step;
}N[104];
int vis[2000][2000];
int x,y,t,l,w;
int x1,x2,yy1,y2;
int dir[4][2]={{-1,0},{1,0},{0,1},{0,-1}};void bfs(int bx,int by,int mark)
{node k;queue<node> q;k.a=bx,k.b=by,k.step=0;q.push(k);while(!q.empty()){node temp=q.front();q.pop();if(temp.step>=t)//时间够了,跳出 return ;for(int i=0;i<4;i++){node cur;int xx=temp.a+dir[i][0];int yy=temp.b+dir[i][1];if(xx>=1&&xx<=x&&yy>=1&yy<=y&&(vis[xx][yy]!=-1&&vis[xx][yy]!=mark)){cur.a=xx,cur.b=yy;cur.step=temp.step+1;if(cur.step>=t)return ;else{ q.push(cur);vis[xx][yy]=mark;//当前水源下不要走重复的 }}}}
}
int main()
{while(cin>>x>>y>>t>>l>>w){if(x==-1)break;memset(vis,0,sizeof(vis));for(int i=1;i<=l;i++)cin>>N[i].a>>N[i].b;for(int i=1;i<=w;i++){cin>>x1>>yy1>>x2>>y2;//将墙附为-1 if(x1==x2){if(yy1>y2)swap(yy1,y2);for(int j=yy1;j<=y2;j++){vis[x1][j]=-1;} }else if(yy1==y2){if(x1>x2)swap(x1,x2);for(int j=x1;j<=x2;j++)vis[j][yy1]=-1;}else if(x1<x2){if(yy1>y2){for(int j=x1;j<=x2;j++)vis[j][yy1--]=-1;} else if(yy1<y2){for(int j=x1;j<=x2;j++)vis[j][yy1++]=-1;}}else if(x1>x2){if(yy1<y2){for(int j=x2;j<=x1;j++)vis[j][y2--]=-1;}else if(yy1>y2){for(int j=x2;j<=x1;j++)vis[j][y2++]=-1;}}}for(int i=1;i<=x;i++){for(int j=1;j<=y;j++)cout<<vis[i][j]<<" ";cout<<endl;}for(int i=1;i<=l;i++){vis[N[i].a][N[i].b]=1;bfs(N[i].a,N[i].b,i);//多个水滴 }int ans=0;for(int i=1;i<=x;i++)for(int j=1;j<=y;j++){if(vis[i][j]>=1&&vis[i][j]<=l)ans++;}cout<<ans<<endl;}return 0;
}
湖南多校对抗赛(csu 1560)相关推荐
- Contest2071 - 湖南多校对抗赛(2015.03.28)
Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...
- 湖南多校对抗赛(2015.03.28)
Contest2071 - 湖南多校对抗赛(2015.03.28) Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.cs ...
- 2021湖南多校对抗赛第三场
2021湖南多校对抗赛第三场 排名 第一 第二 第三 中南2队 中南1队 湘潭大学1队 团体成绩 学校 总题数 总罚时 中南大学 26 4396 题解(部分) special thanks: Binb ...
- 2021湖南多校对抗赛第一场
2021湖南多校对抗赛第一场 排名 第一 第二 第三 国防科大1队 湖南大学1队 湖南师范大学4队 团体成绩 学校 总题数 总罚时 中南大学 27 3499 湖南师范大学 29 4927 湘潭大学 2 ...
- 2022湖南多校对抗赛第一场
2022湖南多校对抗赛第一场 队伍排名 第一 第二 第三 中南大学1队 湖南大学1队 湖南大学4队 团体成绩 取每个学校正式队伍前四名 学校 总题数 湖南大学 22 中南大学 19 湖南师范大学 16 ...
- 2022湖南多校对抗赛第四场
2022湖南多校对抗赛第四场 队伍排名 第一 第二 第三 中南大学2队 湖南大学2队 国防科技大学4队 团体成绩 取每个学校正式队伍前四名 学校 总题数 中南大学 30 国防科技大学 27 湘潭大学 ...
- 2022湖南多校对抗赛第六场
2022湖南多校对抗赛第六场 队伍排名 第一 第二 第三 湖南大学1队 湖南大学4队 中南大学2队 团体成绩 取每个学校正式队伍前四名 学校 总题数 湖南大学 16 中南大学 16 国防科技大学 16 ...
- 2022湖南多校对抗赛第三场
2022湖南多校对抗赛第三场 队伍排名 第一 第二 第三 中南大学1队 国防科技大学1队 湖南师范大学3队 团体成绩 取每个学校正式队伍前四名 学校 总题数 中南大学 27 湖南师范大学 27 湖南大 ...
- Contest2089 - 湖南多校对抗赛(2015.05.31) Swipe(csu1648)
Problem E: Swipe Time Limit: 1 Sec Memory Limit: 128 MB Submit: 100 Solved: 15 [Submit][Status][We ...
最新文章
- 解析|一文读懂AGV的关键技术——激光SLAM与视觉SLAM的区别
- Matlab画地球剖面图,分享用matlab显示地震记录的波形变面积图
- vue 路由相关操作
- hadoop 运行java程序_Hadoop java 程序运行
- ubutun 更换网络源_Ubuntu 更换源
- C语言 pthread_join
- Java基础知识回顾--网络编程基础
- java 权限管理框架
- 双线性函数的紧凑超平面散列(Compact Hyperplane Hashing with Bilinear Functions)阅读笔记
- 如何查找qq邮箱的服务器地址
- 短线交易秘诀(原书第2版)
- PX4 FMU [17] stabilize
- python模拟按键网游_Python 实现键盘鼠标按键模拟
- LiveGBS国标流媒体-摄像头网络直播方案部署问题
- kali下安装gvm(原openvas)
- css应该写在html语言的哪个标记里,CSS布局的选择题
- Call to undefined function imagecreatefromjpeg() 解决方案
- psychopy设置中文显示字体 楷体、宋体、微软雅黑
- eclipese相关
- DevOps的道法术器