- 博客(5)
- 收藏
- 关注
原创 P3969
j=(j-1)&i) 枚举子集。就相当于每个集合都从子集转移到父集合,且假设是一层层递增的。f[i][j]是指到自己的距离是i,选择情况为j的最小值。而trans[i][j]是指从情况i到情况j的花费。
2024-05-18 15:10:50
274
原创 CF1929D
/ans的求解:之所以是所有的f之和是因为有可能出现一个i选了自己,那么贡献的答案就是Σ(j∈son[i] )f[i],而只选的i的可能性会被f[1]统计。那么最后等价于Σf[i]//递推公式:f[i]=∏(j∈son[i])(f[j]+1)考虑只选j和j的子树的情况。//dp思路:令f[i]为i的子树内(不含i)没有祖先关系的可能性的个数。// 至于加一就是加只选了1的情况。
2024-05-02 15:12:42
15
1
原创 P3622
2,这些小朋友可能对某些动物不感兴趣,所以不能只存他们喜欢什么动物,异或之后看是否大于0,而应该分开存储li(like),和fri(害怕的)两个,然后分别异或j和j反过来(^M)3,第46行后面的(k>>(i-fr-1))^(j&((1<<(5-i+fr))-1))只能这么写才能保证正确性。1,可以直接初始化f[i][i][4]为0,其他为-无穷,这样可以简化代码。5,第67行这里是(e[k]-n+3)而不是(e[k]-n+4)4,第64行这里j在前,i在后,不能反过来。
2024-04-27 18:17:10
103
1
原创 错题集()
if(a[j].yr==a[i].yl&&(a[j].xl<a[i].xr&&a[j].xr>a[i].xl)){//记得这里是有两个范围的,一个是j的右端点在i的左端点后,一个是j的左端点在i有右端点前。在预处理pipei(匹配)数组时,记得两个端点都要特判(其实这句特判就是指左端点或者右端点在该区间内,只是有两个条件只要另外两个条件成立就必然成立,所以不用写了)有一种特殊情况,会导致你无法从多条可以断开的边中随便一条断开。还有我们在dfs()时可能会到0,要特判x==0。(参考题目输入方式)
2024-04-27 13:44:36
478
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人