BUG!

看上去并没有错误,然而事实上这里的中点变量叫mid , m 是询问个数, 因此就用了2小时的时间换取这个宝贵的教训。千万不要因为一些变量用的熟就忽视检查,以及变量最好比较有意义和独特,显然mid是更好的选择。


img

一眼过去秒切,一看数据倍增都懒得写,结果硬是wa两个点,原因?LCA特判链!

img


前来更新。

关于货车运输:它AC了。

题面题解在2018.9.10post中有,我们来说说各种奇葩bug(晚上可能吃错药了)

1.并查集合并必须合并根节点!

并查集每个节点必须合并根节点,不然由于每个节点只能指一个父亲,合并后有些点就没有fa了!。

img

比如合并2,9。我们直接把2指向9合并的话,可怜的1,3怎么办呢??

2.不熟悉的变量名各种错

显然写代码还是边写边想,不要出现把错误的数组元素返回之类的错误


考前重要note:不要凭感觉取模!!!

只要不涉及除法,那么最后计算答案的所有变量都要不停地取模!不要怕常数,不要估计,不要懒得写!!!

比如这题:

img

在近似菊花图或菊花图下,子节点和不一定爆但平方和一定爆了!!为了这个调了n小时换取教训qwq。


2018.9.20一上午因为常量设小了而调了一上午一道非常简单的环形计数dp。。

主要还是O2的功劳,我一直以为9,10两个点数据范围一样第九个wa了应该是某个细节没处理好?结果开了O2第十个点不知怎么玄学就过了。。。

以后常量设的时候+5就对了,NOIp没有毒瘤卡空间的题。


写树链剖分的时候,思路清晰,代码清晰,理解透彻,然而就是莫名RE两次,原因竟然是?:

img

我的bug多积累下就成书了


img

对于Floyd这东西,0x7f可是相当要命的。


显然要更新一个上面相反的

1537883337230

假如少一个f就是30分,加这个就是满分,就这样。


注意欧拉筛范围,如果分解质因数需要知道剩下具体是哪个质数,是需要筛到n的!


在树上倍增最大值最小值等信息往往同时需要倍增LCA,并且在查询的时候也要和LCA一起,所以千万记住先查询查询值在往上跳公共祖先!


极大极小值一定要开够!严格次小生成树这样的随手卡你极大值。


考试的时候成功就写了一题,原因是把外层多组数据组数循环变量写到了里面,然后10分钟的题 = 1小时+

然后就愉快的垫底了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <stack>
#include <cstring>
std::stack<char> st;
int n;
int main()
{
freopen("strs.in","r",stdin);
freopen("strs.out","w",stdout);
scanf("%d",&n);
for(int i = 1 ; i <= n ; ++i)
{
std::string s;
int flag = 0;
while(!st.empty()) st.pop();
std::cin>>s;
for(int j = 0 ; j < s.length() ; ++j)
{
if(s[j] == '<' || s[j] == '{'|| s[j] == '[' || s[j] == '(')
{
if(st.empty()) {st.push(s[j]) ; continue;}
if(st.top() == '<' && s[j] == '<') {st.push(s[j]) ; continue;}
if(st.top() == '(' && (s[j] != '[' && s[j] != '{')) {st.push(s[j]) ; continue;}
if(st.top() == '[' && s[j] != '{') {st.push(s[j]) ; continue;}
if(st.top() == '{') {st.push(s[j]) ; continue;}
flag = 1;
break;
}
else
{
if(st.empty()){flag = 1 ;break;}
if(s[j] == '>' && st.top() == '<') {st.pop() ; continue;}
if(s[j] == ')' && st.top() == '(') {st.pop() ; continue;}
if(s[j] == '}' && st.top() == '{') {st.pop(); continue;}
if(s[j] == ']' && st.top() == '[') {st.pop(); continue;}
// if(!st.empty()) std::cout<<st.top()<<std::endl;
}
flag = 1 ; break;
}
if(flag) printf("NO\n");
else printf("YES\n");
}
}