摘要:
我觉得很有思维含量的一道题 首先根据置换的知识, 每一个置换都可以表示成若干不想交的循环的乘积 所有循环的规模A1+A2+……AK=n 显然要求可能的排数,就是问n拆分成若干个数其可能的最小公倍数的个数 考虑到任意一个数大于1的自然数X一定能这样分解 令p为质数数组 X=p1^m1*p2^m2*…p 阅读全文
posted @ 2014-07-19 21:39
acphile
阅读(642)
评论(0)
推荐(0)
摘要:
首先这肯定是一道LIS的变形,这次求的是方案,还要求字典序最小 (注意这个字典序最小是指下标最小而不是数最小) 首先预处理以每个数为首,能组成多长的上升序列(这里我们用单调队列解决) 然后按照位置顺序扫一遍顺出可行即可 要注意每行末的空格 1 var f,a,q:array[0..10010] of 阅读全文
posted @ 2014-07-19 20:48
acphile
阅读(180)
评论(0)
推荐(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)
推荐(0)
摘要:
水题列表 bzoj2429 裸的最小生成树 bzoj1567 二分答案+hash判断,判断序列、矩阵是否相同常用hash bzoj1087 简单的状压dp bzoj1754 高精度乘法,模拟竖式即可 阅读全文
posted @ 2014-07-19 15:54
acphile
阅读(101)
评论(0)
推荐(0)
摘要:
维护一个小根堆,先把每种珠子的出现第一个位置放入堆中,每次取出彩带最左边的珠子 放入取出同类珠子的下一颗同种类的珠子,并且更新彩带最优解。 直到取出的珠子是这类珠子的最右边的一颗时候结束 1 type link=^node; 2 node=record 3 loc:longint; 4 next:l 阅读全文
posted @ 2014-07-19 15:53
acphile
阅读(164)
评论(0)
推荐(0)
摘要:
首先有向图的题目不难想到先tarjan缩点 一个强连通分量中的点的连通数显然是相等; 据说这样直接dfs就可以过了,但显然不够精益求精 万一给定的是一个完全的DAG图怎么办,dfs铁定超时; 首先想,dfs进行了很多不必要的操作,比如说i >j 那么j的连通数一定也是i的连通数,但我们做dfs是需要 阅读全文
posted @ 2014-07-19 15:42
acphile
阅读(206)
评论(0)
推荐(0)
摘要:
带有限制的生成树 首先不难想到二分答案转化为判定性问题 假设二分出了一个答案p, 首先我们先考虑建一级公路。 由于一级公路费用是大于二级公路的,所以对于那些一级公路花费<=p的道路, 不难想到让他们建一级公路显然更合适。 如果能建一级公路的建道路数>=k 并且再选择二级公路能选到n-1条,说明答案可 阅读全文
posted @ 2014-07-19 14:47
acphile
阅读(274)
评论(0)
推荐(0)
摘要:
知道了并查集写的问题后,我也明白了为什么之前这道题TLE的原因; 有这道题的合并操作不难想到用并查集维护; 由于并查集易于向上查询而不易于向下查询 所以对于询问方块x下面有多少个方块,我们可以转化为立方柱的规模-x上方的方块数-1 所以我们可以再维护这两个域即可 1 var fa,s,up:arra 阅读全文
posted @ 2014-07-19 13:21
acphile
阅读(129)
评论(0)
推荐(0)
摘要:
第一问dfs不说 第二问很容易让人想到最小树形图,但是我不会,而且时间复杂度也不允许 还有什么不同的方法呢? 首先想到的是prim的思想,设根节点已经确定,其他点未确定 我们就不断从已确定的点延伸,找到到未确定点中高度最高的那个点的最短边距(如果有多个高度相同的点,肯定选边距最短的) 将边距加入an 阅读全文
posted @ 2014-07-19 13:15
acphile
阅读(205)
评论(0)
推荐(0)
摘要:
题目要求最近的两个部落间距尽可能最远 不难想到一种贪心的方法,对每两个点之间距离从小到大排序, 把每个点看成一个部落 然后不断将距离近的两个部落合并成一个部落,直到剩下了k个部落,那么下一条不同部落之间的边的长度就是答案 显然这个算法是用并查集实现 1 type node=record 2 x,y: 阅读全文
posted @ 2014-07-19 11:43
acphile
阅读(200)
评论(0)
推荐(0)
摘要:
首先到每个点的速度实际上是一个定值,就是v0*2^(起点与当前点高度差) 所以当前点i到任意一个相邻点的时间都是一个定值, 不难想到构图最短路径 1 const dx:array[1..4] of integer=(-1,1,0,0); 2 dy:array[1..4] of integer=(0, 阅读全文
posted @ 2014-07-19 11:16
acphile
阅读(220)
评论(0)
推荐(0)
摘要:
乍一看这题好难,根本不会; 直到看到1<=m<=2…… 显然分类讨论dp, 很快想到这题的dp和poj2430相类似 m=2的时候f[i,j,k]表示到第i行用了j个矩阵结尾状态为k时最大权值和 k=0~4表示5种结尾可能的状态 转移很类似poj2430,这里就不赘述了 1 const inf=10 阅读全文
posted @ 2014-07-19 11:11
acphile
阅读(120)
评论(0)
推荐(0)
摘要:
不难发现,每个点出度显然为1,要想整个图形成环,必然每个点的入度也为1; 所以,不难想到将每个点i拆成两个点i1,i2构成二分图, 连边s >i1 流量为1,费用为0,i2 >t流量为1,费用为0 这样左右两边的点都只能匹配1次,也就满足了出入度为1; 对于点i的上下左右4个点,分别连i1 >j2, 阅读全文
posted @ 2014-07-19 11:00
acphile
阅读(177)
评论(0)
推荐(0)
摘要:
以后写完题要立刻写解题报告,否则容易忘…… 阅读全文
posted @ 2014-07-19 10:42
acphile
阅读(123)
评论(0)
推荐(0)
浙公网安备 33010602011771号