HDU
文章平均质量分 81
小酒窝.
大三菜鸡一只,欢迎来交流讨论,一起进步!
展开
-
杭电多校十 - Wavy Tree (贪心)
要变成偏高的位置,如果此时把 i+1 位置变低了,那么就是相当于给 i+2 位置更多生存的空间了,很可能其就不用操作就能满足比左右两边都大,所以就相当于节省了操作次数,这样就很贪心。一种是偶数位置都比奇数位置大,一种是偶数位置都比奇数位置小。场上想这道题的时候思维都是混乱的,一直想着怎么变才能让这个位置都大于两边的数或者都小于两边的数,然后这个数变过之后又会对后面的数产生影响,然后就不知道怎么变了。如果当前位置很小,而要变成比左右两个位置都大,那么此时不应该将当前位置 i 直接变成左右最大值+1,而是把。原创 2022-08-19 13:58:18 · 235 阅读 · 0 评论 -
2022“杭电杯”中国大学生算法设计超级联赛(8)
不能有超过 2 个点连续,那么对于以当前节点 x 为根的子树中,如果当前节点拿了,那么其子节点可以不拿,也可以只拿一个。如果当前节点没拿,那么其子节点可以不拿,可以拿一个,也可以往下连续拿两个。所以此时,用当前点拿不拿这两个状态已经不能表示了,需要多加一个状态,表示拿了几个。一开始没想清楚就直接上去写了,状态 f[i, 2] 想错了,觉得这个是连续两个中后面一个,上面一定有一个,就完全忽略了独立存在一个点的情况。表示,当前节点不拿,以该节点为根的子树中可拿的最大节点数。表示,只拿当前节点,…...原创 2022-08-14 03:51:43 · 247 阅读 · 0 评论 -
2022“杭电杯”中国大学生算法设计超级联赛(7)
对于节点 x 的相邻节点来说,从所有儿子数大于等于 2 的节点中选出一个当作身体,从其余的所有儿子数大于等于 1 的节点中选出两个作为手臂,再从其余的所有节点中选出一个作为头。作为身体的那个节点的所有儿子中要选出两个作为腿,作为手臂的两个节点要分别从所有儿子中选出一个作为手。让合并的盒子数尽可能多,那么就把 (1,1) 都合并成一个,然后 (0, 1)(1, 0) 合并成一个。用 (0, 0), (1, 0), (0, 1), (1, 1) 来分别表示各个种类的盒子,1 代表黑色,0 代表白色。...原创 2022-08-09 23:57:25 · 183 阅读 · 0 评论 -
(22杭电多校二)Two Permutation (dp),Package Delivery (贪心)
题意 给定长度为 n 的全排列 a[],b[]a[], b[]a[],b[],长度为 2n 的数列 c[]c[]c[]。 现在要用 2n 次操作构造一个长度为 2n 的数列,每次操作从全排列 a[]a[]a[] 或 b[]b[]b[] 的最前端取一个数字,将其从该数列删掉,然后加到构造数列的末端。 问,构造数列最终变为数列 c[]c[]c[] 共有多少种构造方案?1≤n≤300000,方案数 mod 9982443531≤n≤300000,方案数\bmod 9982443531≤n≤300000,方案数m原创 2022-07-27 17:15:24 · 283 阅读 · 0 评论