2020.3.9 ~ 2020.3.15 ACM训练周总结
一、本周ACM学习相关内容
- 学习了dfs和bfs —— 4小时
- 课上系统的学习了vector等stl函数的使用即注意事项—3小时
二、题数与耗时
师哥安排了12道题,做了五道(不包含比赛题);大概4个小时;
题解报告:
POJ - 2386 Lake Counting
很简单的dfs,遍历数组,找到w就dfs周围的八个点,直到递归结束;
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
int m,n;
char a[1001][1001];
void DFS(int i,int j)
{
if(i>=0&&i<n&&j>=0&&j<m&&a[i][j]=='W'){
a[i][j] = '.';
DFS(i-1,j);DFS(i-1,j-1);DFS(i-1,j+1);DFS(i,j-1);DFS(i,j+1);DFS(i+1,j-1);DFS(i+1,j);DFS(i+1,j+1);}
}
int main()
{
int i,j,sum = 0;
cin>>n>>m;
memset(a,'0',sizeof(a));
for(i = 0;i<n;i++)
scanf("%s",a[i]);
for(i = 0;i<n;i++)
for(j = 0;j<m;j++)
if(a[i][j]=='W')
{
sum++;
DFS(i,j);
}
printf("%d\n",sum);
}
POJ - 1979 Red and Black
与上一题类似,不同的是递归到周围四个点即可,并且计数要在函数内
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int w,h,i,j;
int step;
int sx,sy;
char a[21][21];
void dfs(int x,int y)
{
if(x>=0&&x<h&&y>=0&&y<w&&a[x][y]=='.')
{
a[x][y] = '#';
step++;
dfs(x-1,y);dfs(x+1,y);dfs(x,y+1);dfs(x,y-1);
}
}
int main()
{
while(cin>>w>>h&&w!=0&&h!=0){
int flag = 0;
step = 0;
for( i = 0;i<h;i++)
scanf("%s",a[i]);
for( i = 0;i<h;i++){
for( j = 0;j<w;j++)
{
if(a[i][j]=='@')
{
a[i][j] = '.';
sx = i;
sy = j;
flag = 1;
break;
}
}if(flag == 1)
break;
}
dfs(sx,sy);
cout<<step<<endl;
}
}
Aizu - 0118 Property Distribution
与第一题一样
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int w,h;
char a[101][101];
int res;
void dfs(int x,int y,char s)
{
char t;
if(x>=0&&x<h&&y>=0&&y<w&&a[x][y]==s){
t = a[x][y];
a[x][y] = 'O';
dfs(x+1,y,t);dfs(x-1,y,t);dfs(x,y+1,t);dfs(x,y-1,t);}
}
int main()
{
while(cin>>h>>w&&h!=0&&w!=0)
{int i,j;
res = 0;
for(i = 0;i<h;i++)
scanf("%s",a[i]);
for(i = 0;i < h;i++)
for(j = 0;j<w;j++)
{
if(a[i][j]!='O')
{
res++;dfs(i,j,a[i][j]);
}
}
cout<<res<<endl;
}
}
Aizu - 0033 Ball
暴力模拟即可,没有难度。。。。(严重怀疑是师哥为了给我们增长信心加的题)
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int >a;
vector<int >b;
while(n--)
{
int flag = 0;
int i;
int num[10];
for(i = 0;i<=9;i++)
cin>>num[i];
a.push_back(0);
b.push_back(0);
for(i = 0;i<10;i++)
{
if(num[i]>a.back()||num[i]>b.back())
{
if(num[i]>a.back()&&num[i]<b.back())
{
a.push_back(num[i]);
}
else if(num[i]>b.back()&&num[i]<a.back())
{
b.push_back(num[i]);
}
else if(num[i]>a.back()&&num[i]>b.back())
{
if(a.back()>b.back())
a.push_back(num[i]);
else
b.push_back(num[i]);
}
if(i==9)
flag = 1;
}
else{
flag = 0;break;
}
}
if(flag == 1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
a.clear();b.clear();
}
}
Aizu - 0558 Cheese
说实话,这个题才体现出bfs的魅力和难懂性。。。。。。感谢张师姐
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
struct node{
int x,y;
int step;
node(){
step = 0;
}
};
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
char mp[1005][1005];//迷宫
int vis[1005][1005];//访问状态
int sx,sy;//起始位置;
int main()
{
int h,w,n;
cin>>h>>w>>n;//输入
for(int i = 0;i < h;i++)
{
for(int j = 0;j < w;j++)
{
cin>>mp[i][j];
if(mp[i][j]=='S')
{
sx = i;sy = j;
}
}
}//生成地图并寻找起始点
int ans = 0;//声明结果
queue <node> q;
for(int i = 1;i <= n;i++)
{
memset(vis, 0, sizeof(vis));//重置访问状态;
node now,next;
now.x = sx;
now.y = sy;
vis[sx][sy] = 1;
q.push(now);
while(q.empty()==false)
{
now = q.front();
q.pop();
if(mp[now.x][now.y] == '0'+i)
{
sx = now.x;
sy = now.y;
ans = ans+now.step;
break;
}//吃到了
for(int j = 0;j < 4;j++)
{
int xx = now.x+dx[j];
int yy = now.y+dy[j];
if(xx>=0&&xx<h&&yy>=0&&yy<w&&mp[xx][yy]!='X'&&vis[xx][yy]==0)
{
vis[xx][yy] = 1;
next.x = xx;
next.y = yy;
next.step = now.step+1;
q.push(next);
}
}
}
while(!q.empty())
q.pop();
}
cout<<ans<<endl;
}
三、比赛情况
3.14的比赛有事请假了
四、锻炼情况
体育作业:每周1200米
2020.3.9 ~ 2020.3.15 ACM训练周总结的更多相关文章
- 计蒜客 ACM训练联盟周赛 第一场 Alice和Bob的Nim游戏 矩阵快速幂
题目描述 众所周知,Alice和Bob非常喜欢博弈,而且Alice永远是先手,Bob永远是后手. Alice和Bob面前有3堆石子,Alice和Bob每次轮流拿某堆石子中的若干个石子(不可以是0个), ...
- 寒假的ACM训练(一)
今天开始ACM训练,选择了刘汝佳的<挑战编程>,暂时算是开始了. 测评的网址: http://www.programming-challenges.com 第一个题目是水题啦.3n+1. ...
- 计蒜客 28449.算个欧拉函数给大家助助兴-大数的因子个数 (HDU5649.DZY Loves Sorting) ( ACM训练联盟周赛 G)
ACM训练联盟周赛 这一场有几个数据结构的题,但是自己太菜,不会树套树,带插入的区间第K小-替罪羊套函数式线段树, 先立个flag,BZOJ3065: 带插入区间K小值 计蒜客 Zeratul与Xor ...
- 2014暑假ACM训练总结
2014暑假ACM训练总结报告 匆匆之中,一个暑假又过去了,在学校训练的这段日子真的是感觉日子过得好快啊! 时光如箭,日月如梭! 匆忙的学习之中一个暑假就这样结束了,现在就来写一些总结吧,供自己以后阅 ...
- 计蒜客 ACM训练联盟周赛 第一场 Christina式方格取数 思维
助手Christina发明了一种方格取数的新玩法:在n*m的方格棋盘里,每个格子里写一个数.两个人轮流给格子染色,直到所有格子都染了色.在所有格子染色完后,计算双方的分数.对于任意两个相邻(即有公共边 ...
- 计蒜客 ACM训练联盟周赛 第一场 从零开始的神棍之路 暴力dfs
题目描述 ggwdwsbs最近被Zeratul和Kyurem拉入了日本麻将的坑.现在,ggwdwsbs有13张牌,Kyurem又打了一张,加起来有14张牌.ggwdwsbs想拜托你帮他判断一下,这14 ...
- [2020.03]Unity ML-Agents v0.15.0 环境部署与试运行
一.ML-Agents简介 近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习. 先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complex ...
- [每日一题2020.06.13]leetcode #739 #15 单调栈 双指针查找
739 每日温度 ( 单调栈 ) 题目 : https://leetcode-cn.com/problems/daily-temperatures/ 题意 : 找到数组每一个元素之后第一个大于它的元素 ...
- ACM训练小结-2018年6月15日
今天题目情况如下:A题:给出若干条边的边长,问这些边按顺序能否组成一个凸多边形,并求出这个多边形的最小包含圆.答题情况:无思路.正解(某种):第一问很简单.对第二问,如果R大于可行的最小R,那么按照放 ...
- ACM训练赛:第20次
这次的题思维都很强,等之后的考试结束会集中精力重新训练一些思维题. A - A simple question CodeForces - 520B 思路: 直接看的话,很容易发现如果 \(n > ...
随机推荐
- js 浮点数加、减、乘、除。
1.浮点数加法运算 function numAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split("." ...
- 记一个在线工具网站,程序员必备,json格式化、压缩、转义,加解密 编码解码
简用-在线工具箱-简单易用-工具大全 提供 json格式化,json代码压缩,json校验解析,json数组解析,json转xml,xml转json,json解析,json在线解析,json在线解析及 ...
- https原理(二)服务端公钥有没有被CA私钥加密
https://www.dianjilingqu.com/387084.html 在https原理中,一大争议就是服务端是否用CA私钥加密服务器公钥 是-自签名证书浏览器没有CA公钥,无法解密公钥,而 ...
- 使用Swagger和OpenAPI 3规范定义API接口并集成到SpringBoot
1. OpenAPI 3 规范介绍及属性定义 参考官方定义:https://swagger.io/specification/ 2. 使用OpenAPI 3规范定义API接口 官方样例参考:https ...
- docker删除image
删除<None><None>镜像 docker rmi $(docker images -f "dangling=true" -q) 如果删除时出现了ima ...
- C#windows 服务 《转载》
转自:https://blog.csdn.net/Code_May/article/details/123909870 c#应用Windows服务 背景 一.创建windows服务 1.创建windo ...
- Hystrix-Dashboard可视化
Hystrix-Dashboard可视化 1.新建子项目引pom.xml <dependencies> <!--hystrix dashboard--> <depende ...
- 【awk】找出两个文件中的不同值
https://blog.csdn.net/weixin_33534991/article/details/116683524 awk 'NR==FNR{a[$0]}NR>FNR{ if(!($ ...
- VAE变分自编码器公式推导
VAE变分推导依赖数学公式 (1)贝叶斯公式:\(p(z|x) = \frac{p(x|z)p(z)}{p(x)}\) (2)边缘概率公式:\(p(x) =\int{p(x,z)}dz\) (3)KL ...
- svn批量忽略文件夹和批量忽略某种类型文件方法
批量忽略文件夹: 最简单的方法:不勾选这个 1.在svn管理的根目录下点击右键---> TortoiseSVN --> properties 2.点击new-->other 3.在p ...