Update On 2016/8/10
1.不看数据范围就开数组。
2.死磕一道题不对拍。
3.i和j写反。
4.下标加减的时候数组越界。
代价是noip模拟赛掉200分QAQ
Update On 2016/08/11
5.逻辑混乱的时候去写程序。
6.对拍的bat写错/暴力写错/数据生成器写错。
代价是noip模拟赛掉100分QAQ
Update On 2016/8/12
因为打CF的时候自己Trie树的空间算错了。
这次rating应该得掉100吧。
我们来明确下一些东西的空间大小。
100W int => 4M
100W LL => 8M
所以给定64M的话,我们可以开1.5kW的int。
所以给定128M的话,我们可以开3kW的int。
所以给定256M的话,我们可以开的6kWint。
其实这个背下来就还好的吧。
由于计算/开错数据范围导致的数组开小是绝对不可饶恕的。
由于计算/开错数据范围导致的数组开小是绝对不可饶恕的。
由于计算/开错数据范围导致的数组开小是绝对不可饶恕的。
Update On 2016/8/14
代码能力变差了……
7.dfs版的spfa多次调用判断负环忘记清空vis数组。
Update On 2016/8/16
果然代码能力变差了……
8.并查集和带权并查集的区别:
int find(int x){return f[x] == x ? x : f[x] = find(f[x]);}
int WtFind(int x)
{
if(f[x] == x)return x;
int tmp = f[x];
f[x] = WtFind(f[x]);
v[x] = Calc(v[tmp],tmp);
return f[x];
}
Upd on 2016/11/12
数组又不看范围就开*2
Upd on 2016/11/14
写错文件名*1
哈希表一直写的是错的*1
typedef long long LL;
struct Node
{
const int N = 1007;
int cur,head[N],nxt[100005];LL key[100005],cnt[100005];
void ins(LL x)
{
LL val = x;
x %= N;if(x < 0)x += N;
for(int i = head[x];i;i = nxt[i])
if(key[i] == val){cnt[i] ++;return;}
key[++ cur] = val;cnt[cur] = 1;
nxt[cur] = head[x];
head[x] = cur;
}
int Qry(LL x)
{
LL val = x;
x %= N;if(x < 0)x += N;
for(int i = head[x];i;i = nxt[i])
if(key[i] == val)return cnt[i];
return 0;
}
}