0
点赞
收藏
分享

微信扫一扫

第七周周结

花姐的职场人生 2022-04-27 阅读 65
算法c++

这一周多,都在疯狂的看搜索的题。

看了很多题,但是敲的很少,dfs9道,bfs1道。

每次,看完题解后,自己尝试时,总是出现各种各样的bug。看题看懂题解半个小时,敲半个小时,找bug一个多小时。这几乎是我每道题最快的时间了,而且看题时及其容易走神发呆。

这一个多周,我学到了五点。

一是如何快速看题。

看不懂看输出输入案例,看题目的输出输入的解释说明。因为之前拉下了居多的题目没有看,所有这一周多,每次都要尽快可能快的看完。感觉现在的看题速度比之前提高了不少。

二是如何找bug。

改bug也是一种能力,更是一个心理挑战,比的就是谁能沉得住气,谁能高效,细心。

还有输出变量值。

就这俩个就够用了。在if,循环里面BD;查看哪些语句是执行过的,哪些是没有执行的,甚至是执行过几次。

必要时也在特殊位置输出变量值,查看是否执行变换。

还有查看循环的条件,for循环敲起来容易固定思维。

三是发现有些是万变不离其宗的,有套路有模板的。

有道自己没看题解就敲出来的普及/提高-的题,感觉自己很强。那题就是细胞染色,细胞数量,海战的变式。只要每个题型一种通用的知识,那么即使它再怎么变都能很快的敲出来。

感觉要总结,写个每种题型的答题思路,方向。

四是状态的调整。

交文件的前一天晚上,上了大学后头一次体验到了心无旁骛,拼尽全力的去看题解做题,可能是对挂科的恐惧吧。

五是如何整理。

整理东西的时候要认真,规范,而且要复习。当时stl整理的烂七八糟,还没记住。每次想要从自己csdn上找的时候不是没找到,就是写的太烂太乱不想看,我是真的服了,每次用到之前的知识,都要重新从海量的文章中找 出一篇写的通俗易懂,全的,每次都要花费大量的时间和经历。

还有之前总结的周总,就一篇系统的总结了一下,还能用。每次做题,做到和之前类似的题时,想找一下,之前的题,都不知道在哪里找。收藏的网站,csnd上的文章分类也都乱七八糟的,这几天要好好整理一下。很多东西当看了,结果事后没有整理,都忘了,甚至有限都找不到了。要及时整理。只有整理的,才是自己的。

六是图的三种表示。

ans[i][j] = 值

i表示点i,j表示点j。值可以表示权,也可以用0,1表示有没有链接的路。

vector<int> ans[]

P2419 [USACO08JAN]Cow Contest S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)icon-default.png?t=M3K6https://www.luogu.com.cn/problem/P2419这题也是新的题型。

无向图的问题。用vector解决。用迭代器去遍历,*it去传递递归的参数。

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cout.tie(0);cout.tie(0)
#define DB cout<<"....................."<<endl
#define DB1 cout<<"-----------------"<<endl 
#define ll long long
#define ull unsigned long long 
#define pi acos(-1,0)
#define INF 0x3f3f3f3f
#define For(i,j,k) for(int i=j;i<=k;i++)
#define ms(a,b) memset(a,b,sizeof(a))
const double e=exp(1);
using namespace std;
vector<int> win[110];
vector<int> lose[110];
int vis_win[110];
int vis_lose[110];
int n,m,a,b,win_num,lose_num,sum;
void add(int x,int y){
	win[x].push_back(y);
	lose[y].push_back(x);
}
void dfs_win(int now){
	vector<int>::iterator it;
	for(it=win[now].begin();it!=win[now].end();it++){
		if(vis_win[*it]==0){
			vis_win[*it]=1;
			win_num++;
			dfs_win(*it);
		}
	} 
}
void dfs_lose(int now){
	vector<int>::iterator it;
	for(it=lose[now].begin();it!=lose[now].end();it++){
		if(vis_lose[*it]==0){
			vis_lose[*it]=1;
			lose_num++;
			dfs_lose(*it);
		}
	} 
}
int main(){
	IOS;
	cin>>n>>m;
	For(i,1,m){
		cin>>a>>b;
		add(a,b);
	} 
	For(i,1,n){
		win_num=lose_num=0;
		dfs_win(i);
		dfs_lose(i);
		ms(vis_win,0);
		ms(vis_lose,0);
		if(lose_num+win_num==n-1)
			sum++;
	}
	cout<<sum<<endl;
	return 0;
}

思路来自:

题解 P2419 【[USACO08JAN]牛大赛Cow Contest】 - lixiao189 的博客 - 洛谷博客 (luogu.com.cn)icon-default.png?t=M3K6https://www.luogu.com.cn/blog/lixiao189blog/solution-p2419用结构体表示。

问题:

树是真的看不懂。

有些时候熬夜看题解,第二天白天效率就很差,上课直接撑不住,感觉有点得不偿失。

反思:

多整理。

少熬夜,白天提高效率。

其他零碎的知识:

一下子看了太多,有些忘了在哪里出现的,下周一起整理。 

举报

相关推荐

第七周总结

第七周学习总结

第七周ACM博客总结

N63044-第七周

0 条评论