打树上倍增 时要注意先计算边权,再往上跳 。
for ( int i= 17 ; i>= 0 ; -- i)
if ( dep[ f[ x] [ i] ] >= dep[ y] )
s+= g[ x] [ i] , x= f[ x] [ i] ;
尽可能不打 读入优化 ,如果真的要用一定要注意判负号 !
inline void read ( int & x)
{
char ch= 0 ; bool b= 0 ;
while ( ch= getchar ( ) , ch!= '-' && ( ch< '0' || ch> '9' ) ) ;
if ( ch== '-' ) b= 1 , ch= getchar ( ) ; x= ch- 48 ;
while ( ch= getchar ( ) , ch>= '0' && ch<= '9' ) x= x* 10 + ch- 48 ;
if ( b) x= - x;
}
调试完之后记得把文件输入输出的注释去掉。 一定要注意数组会不会MLE (尤其是正解打挂后决定打部分分时),绝对不能再犯CSP-s 2019的错误了!!! 一定要在定义变量时仔细思考它的用途,以此推断出它的范围。不要开int
开得太high了用int
来存long long
的值!此外,注意从大范围数据类型赋值到小范围数据类型时是否爆了范围。 有些题目的最大数据范围可能不在题目底部的部分分数据范围处,如gmoj 6828. 【2020.10.25提高组模拟】幂 : 还有的题目可能会更坑,最大数据范围还要自己算的,比如GDOI2018 Day1 T1 农场 : 注意,这里n最大是
1
0
6
(
n
=
∑
i
=
1
n
a
i
min
a
i
)
10^6\quad\left(n=\cfrac{\sum_{i=1}^n a_i}{\min_{a_i}}\right)
1 0 6 ( n = min a i ∑ i = 1 n a i ) ,而不是
1
0
5
10^5
1 0 5 ! 打完代码后不要急着测样例,先看一遍代码(最麻烦的就是第一次测就过了样例,殊不知代码里有一个巨大的锅)。 比赛开始先写暴力,这样一是可以检验对题意的理解是否正确,二是可以方便对拍,三是可以保证拿到部分分。 为了避免重蹈
C
S
P
−
s
2020
T
1
CSP-s2020\text{ } T1
CSP − s 2020 T 1 的覆辙,这里写一下在使用fc命令的方法:
在文件夹下点击Shift +鼠标右键 ,在弹出的菜单中选择“在此处打开 Powershell 窗口(S)”。 输入cmd
,切换至cmd模式; 输入fc a.out b.out
。
无论暴力程序能否跑出结果,都要用极限数据检验代码,看看有没有负数之类的鬼畜输出; 注意取模的问题。 什么类型输出都要对应其类型,用%d
输出long long
或用%lld
输出int
都会没有分(RE),因此最好开启-Wall