摘要:
我觉得很有思维含量的一道题 首先根据置换的知识, 每一个置换都可以表示成若干不想交的循环的乘积 所有循环的规模A1+A2+……AK=n 显然要求可能的排数,就是问n拆分成若干个数其可能的最小公倍数的个数 考虑到任意一个数大于1的自然数X一定能这样分解 令p为质数数组 X=p1^m1*p2^m2*…p
阅读全文
posted @ 2014-07-19 21:39
acphile
阅读(642)
推荐(0)
摘要:
首先这肯定是一道LIS的变形,这次求的是方案,还要求字典序最小 (注意这个字典序最小是指下标最小而不是数最小) 首先预处理以每个数为首,能组成多长的上升序列(这里我们用单调队列解决) 然后按照位置顺序扫一遍顺出可行即可 要注意每行末的空格 1 var f,a,q:array[0..10010] of
阅读全文
posted @ 2014-07-19 20:48
acphile
阅读(180)
推荐(0)
摘要:
首先先预处理每行刷1~m次最多能正确涂出多少格 然后把每行涂色看做一个物品,当重量为j(这行涂了j次),价值为对应能正确涂出的格子数; 总重量为k,然后做分组背包即可 1 var f:array[0..60,0..60,0..60] of longint; 2 sum:array[0..60,0..
阅读全文
posted @ 2014-07-19 20:09
acphile
阅读(128)
推荐(0)
摘要:
水题列表 bzoj2429 裸的最小生成树 bzoj1567 二分答案+hash判断,判断序列、矩阵是否相同常用hash bzoj1087 简单的状压dp bzoj1754 高精度乘法,模拟竖式即可
阅读全文
posted @ 2014-07-19 15:54
acphile
阅读(101)
推荐(0)
摘要:
维护一个小根堆,先把每种珠子的出现第一个位置放入堆中,每次取出彩带最左边的珠子 放入取出同类珠子的下一颗同种类的珠子,并且更新彩带最优解。 直到取出的珠子是这类珠子的最右边的一颗时候结束 1 type link=^node; 2 node=record 3 loc:longint; 4 next:l
阅读全文
posted @ 2014-07-19 15:53
acphile
阅读(164)
推荐(0)
摘要:
首先有向图的题目不难想到先tarjan缩点 一个强连通分量中的点的连通数显然是相等; 据说这样直接dfs就可以过了,但显然不够精益求精 万一给定的是一个完全的DAG图怎么办,dfs铁定超时; 首先想,dfs进行了很多不必要的操作,比如说i >j 那么j的连通数一定也是i的连通数,但我们做dfs是需要
阅读全文
posted @ 2014-07-19 15:42
acphile
阅读(206)
推荐(0)
摘要:
带有限制的生成树 首先不难想到二分答案转化为判定性问题 假设二分出了一个答案p, 首先我们先考虑建一级公路。 由于一级公路费用是大于二级公路的,所以对于那些一级公路花费<=p的道路, 不难想到让他们建一级公路显然更合适。 如果能建一级公路的建道路数>=k 并且再选择二级公路能选到n-1条,说明答案可
阅读全文
posted @ 2014-07-19 14:47
acphile
阅读(274)
推荐(0)
摘要:
知道了并查集写的问题后,我也明白了为什么之前这道题TLE的原因; 有这道题的合并操作不难想到用并查集维护; 由于并查集易于向上查询而不易于向下查询 所以对于询问方块x下面有多少个方块,我们可以转化为立方柱的规模-x上方的方块数-1 所以我们可以再维护这两个域即可 1 var fa,s,up:arra
阅读全文
posted @ 2014-07-19 13:21
acphile
阅读(129)
推荐(0)
摘要:
第一问dfs不说 第二问很容易让人想到最小树形图,但是我不会,而且时间复杂度也不允许 还有什么不同的方法呢? 首先想到的是prim的思想,设根节点已经确定,其他点未确定 我们就不断从已确定的点延伸,找到到未确定点中高度最高的那个点的最短边距(如果有多个高度相同的点,肯定选边距最短的) 将边距加入an
阅读全文
posted @ 2014-07-19 13:15
acphile
阅读(205)
推荐(0)