这一周多,都在疯狂的看搜索的题。
看了很多题,但是敲的很少,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)https://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)https://www.luogu.com.cn/blog/lixiao189blog/solution-p2419用结构体表示。
问题:
树是真的看不懂。
有些时候熬夜看题解,第二天白天效率就很差,上课直接撑不住,感觉有点得不偿失。
反思:
多整理。
少熬夜,白天提高效率。
其他零碎的知识:
一下子看了太多,有些忘了在哪里出现的,下周一起整理。