一、本周ACM学习相关内容

  1. 学习了dfs和bfs —— 4小时
  2. 课上系统的学习了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训练周总结的更多相关文章

  1. 计蒜客 ACM训练联盟周赛 第一场 Alice和Bob的Nim游戏 矩阵快速幂

    题目描述 众所周知,Alice和Bob非常喜欢博弈,而且Alice永远是先手,Bob永远是后手. Alice和Bob面前有3堆石子,Alice和Bob每次轮流拿某堆石子中的若干个石子(不可以是0个), ...

  2. 寒假的ACM训练(一)

    今天开始ACM训练,选择了刘汝佳的<挑战编程>,暂时算是开始了. 测评的网址: http://www.programming-challenges.com 第一个题目是水题啦.3n+1. ...

  3. 计蒜客 28449.算个欧拉函数给大家助助兴-大数的因子个数 (HDU5649.DZY Loves Sorting) ( ACM训练联盟周赛 G)

    ACM训练联盟周赛 这一场有几个数据结构的题,但是自己太菜,不会树套树,带插入的区间第K小-替罪羊套函数式线段树, 先立个flag,BZOJ3065: 带插入区间K小值 计蒜客 Zeratul与Xor ...

  4. 2014暑假ACM训练总结

    2014暑假ACM训练总结报告 匆匆之中,一个暑假又过去了,在学校训练的这段日子真的是感觉日子过得好快啊! 时光如箭,日月如梭! 匆忙的学习之中一个暑假就这样结束了,现在就来写一些总结吧,供自己以后阅 ...

  5. 计蒜客 ACM训练联盟周赛 第一场 Christina式方格取数 思维

    助手Christina发明了一种方格取数的新玩法:在n*m的方格棋盘里,每个格子里写一个数.两个人轮流给格子染色,直到所有格子都染了色.在所有格子染色完后,计算双方的分数.对于任意两个相邻(即有公共边 ...

  6. 计蒜客 ACM训练联盟周赛 第一场 从零开始的神棍之路 暴力dfs

    题目描述 ggwdwsbs最近被Zeratul和Kyurem拉入了日本麻将的坑.现在,ggwdwsbs有13张牌,Kyurem又打了一张,加起来有14张牌.ggwdwsbs想拜托你帮他判断一下,这14 ...

  7. [2020.03]Unity ML-Agents v0.15.0 环境部署与试运行

    一.ML-Agents简介 近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习. 先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complex ...

  8. [每日一题2020.06.13]leetcode #739 #15 单调栈 双指针查找

    739 每日温度 ( 单调栈 ) 题目 : https://leetcode-cn.com/problems/daily-temperatures/ 题意 : 找到数组每一个元素之后第一个大于它的元素 ...

  9. ACM训练小结-2018年6月15日

    今天题目情况如下:A题:给出若干条边的边长,问这些边按顺序能否组成一个凸多边形,并求出这个多边形的最小包含圆.答题情况:无思路.正解(某种):第一问很简单.对第二问,如果R大于可行的最小R,那么按照放 ...

  10. ACM训练赛:第20次

    这次的题思维都很强,等之后的考试结束会集中精力重新训练一些思维题. A - A simple question CodeForces - 520B 思路: 直接看的话,很容易发现如果 \(n > ...

随机推荐

  1. python实现web应用程序(1)虚拟环境与Django

    前言 在这个系列博客中,我将使用python实现一个名为"OI笔记"的项目. 1 建立项目目录 第一步,我们先为自己的项目建立一个目录. 首先,打开终端. win+r键,然后输入c ...

  2. ubuntu 逻辑卷增加磁盘

    使用lv* 相关的命令 lvdisplay lvscan ACTIVE            '/dev/ubuntu-vg/ubuntu-lv' [<74.00 GiB] inherit lv ...

  3. 好用的天气插件www.tianqi.com/plugin/

    1.好用的天气插件https://www.tianqi.com/plugin/ 根据访问IP地址可以判断当地的天气,生成天气预报信息放到页面上. 2.天气预报接口: import requests U ...

  4. Reactor 模式线程模型

    根据Reactor的数据量和处理资源池线程数量,可以分为3钟典型实现 单Reactor单线程 单Reactor 多线程 主从Reactor 多线程

  5. flex布局的相关注意事项

    文献参考地址:https://www.cnblogs.com/qcloud1001/p/9848619.html 重点事项: 弹性容器的属性 作用于交叉轴 align-items :对单行起作用 al ...

  6. 01、kafka常用命令

    001.kafka版本 kafka_2.13-3.0.0 kafka_2.12-2.8.0 002.模拟给topic名称是 yikuang 的发一条数据(hello world) ./kafka-co ...

  7. OSP6部署流程

    准备4台虚拟机,完成初始化 一.架构如下: Controller  控制节点 也可以复用为计算节点   192.168.6.11 Compute01   192.168.6.21 Compute02  ...

  8. ApacheBench(压力测试)

    1.post请求 (post.txt body信息) ab -c2000 -n50 -p post.txt -T "application/json"  url 2.get 请求 ...

  9. python中使用to_excel时如何不覆盖原有数据来新建sheet页

    经常通过各种三方库操作Excel时,会遇到各种问题.这个库不支持这个方法,那个库支持但是又会丢失原来的数据....都是问题! . . . import openpyxl import pandas a ...

  10. 2N2218仿真估算静态工作点

    (在找到的2N2218技术手册中没有发现输入输出特性曲线,只能自己估算了) 共射极直流通路电路 #静态工作点表达式 #IBQ = (Vcc - UBEQ)/RB #ICQ = (Vcc - UCEQ) ...