03 2018 档案

摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1072 数字串最多只有10位,所以考虑用状压; 压缩的状态是哪些数字被用过,这样可以从一种状态加一个数字转移到另一种状态; 求能整除一个数的个数,那么当然记录当前状态下mod该数的余数,则在一种 阅读全文
posted @ 2018-03-30 00:33 Zinn 阅读(179) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P2530 太弱了不会用DP,于是暴搜; 每次传进一个数组c记录当前状态各种物品有多少个,枚举取哪种物品,返回最小值,外加记忆化; 因为各种愚蠢小错误WA了好久。 代码如下: 阅读全文
posted @ 2018-03-29 19:00 Zinn 阅读(153) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3177 找桥,缩点,总之都是板子; 对于每个叶子,互相连一条边即可;若最后剩下一个,则去和根节点连边; 所以叶子节点数+1再/2即答案。 代码如下: 阅读全文
posted @ 2018-03-29 00:19 Zinn 阅读(135) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP,注意初始化!! 因为没记忆化,TLE了一晚上,区间DP尤其要注意不重复递归!!!!! 代码如下: 阅读全文
posted @ 2018-03-28 00:24 Zinn 阅读(185) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3208 数位DP,首先按位数预处理出每一种位数的情况,包括有多少个魔鬼数和有多少个以6开头的非魔鬼数,以便递推、累加等等; 然后先找出第X个魔鬼数的位数,再一位一位从0开始填数; 写法有些技巧,详见代码及注释。 代码如下: 阅读全文
posted @ 2018-03-27 22:39 Zinn 阅读(323) 评论(0) 推荐(0)
摘要:题目: 首先按限制高度从小到大排序,不会影响可行解,而不排序可能卡掉正确的情况; 用%2滚动数组时一定注意每次复制上一种情况,因为这个WA了好几次。 代码如下: 阅读全文
posted @ 2018-03-26 22:57 Zinn 阅读(191) 评论(0) 推荐(0)
摘要:题目:http://www.joyoi.cn/problem/tyvj-1659 想清楚了是非常简单的最小生成树: 1、树中每条边都会被走两边; 2、每个点会走度数遍,起点又多走一遍; 根据以上两条处理边权,即输入的边权*2+两边点的点权,这样每个点都被加了度数遍; 再求最小生成树,答案加上点权最小 阅读全文
posted @ 2018-03-22 22:55 Zinn 阅读(192) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3422 最大费用最大流: 拆点,在自点之间连两条边,一条容量为1,边权为数字;一条容量为k-1,边权为0;表示可以走k次,只有一次能取到数字; 从每个格子能向下或向右走,于是向下面的点、右面的点连边; 将E-K算法中的bfs改成spfa求最 阅读全文
posted @ 2018-03-22 19:06 Zinn 阅读(324) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1966 把一个点拆成入点和出点,之间连一条边权为1的边,跑最大流即最小割; 原始的边权赋成inf防割; 枚举源点和汇点,直接相邻的两个点不必枚举; 注意:1、源点为枚举点i的出点,汇点为枚举点j的入点; 2、读入方式,免空格; 3、在din 阅读全文
posted @ 2018-03-22 00:10 Zinn 阅读(933) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1149 不把猪圈当做点,而把顾客当作点,把猪当作边权(流量); 因为猪圈中的猪可流动,所以共用一个猪圈的人互相连边; 注意应该连成链的形式,来保证先后顺序。 代码如下: 阅读全文
posted @ 2018-03-21 22:37 Zinn 阅读(195) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3281 网络流做图中的匹配,注意为了限制每头牛只匹配一种食物和一种饮料,要把牛拆成两个点,之间连边权为1的边。 代码如下: 阅读全文
posted @ 2018-03-20 23:07 Zinn 阅读(129) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1135 先在图中跑一遍最短路,最后倒的牌可能是dis值最大的点,也可能是在dis值最大的点所连的边上,尝试一下即可; 坑:n=1的时候输出点1。 代码如下: 阅读全文
posted @ 2018-03-20 18:50 Zinn 阅读(157) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3013 看似生成树,实则最短路,可以将题意转化为点权*根到此点的边权和(最短路使其最小)。 代码如下: 阅读全文
posted @ 2018-03-20 18:41 Zinn 阅读(199) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2584 以人和衣服作为点,建立超级源点和超级汇点,人连边权为1的边,衣服对源点连边权为件数的边(别弄乱顺序); 试图写构造函数,但CE了,最后只好用冗杂的写法。 代码如下: 阅读全文
posted @ 2018-03-19 23:54 Zinn 阅读(184) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; queueq; int INF=1e9; int n,m,head[10005],cur[10005],ct=1,s,t,d[10005],ans; struct N{ int to,next,w; }edge[200005]; void add(int x,int y,in... 阅读全文
posted @ 2018-03-19 23:04 Zinn 阅读(154) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2228 dp[i][j][0/1]表示前i小时中第j小时睡(1)或不睡(0)的最优值; 注意第一个小时,若睡则对最终取结果有要求,即第n个小时必须睡,所以据此DP两遍; 可以开滚动数组,否则容易MLE。 代码如下: 阅读全文
posted @ 2018-03-19 22:55 Zinn 阅读(104) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3585 二次扫描与换根法,一次dfs求出以某个节点为根的相关值,再dfs遍历一遍树,根据之前的值换根取最大值为答案。 代码如下: 阅读全文
posted @ 2018-03-19 22:46 Zinn 阅读(203) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1179 区间DP,值得注意的是有负值,而且有乘法,因此可能会影响最大值; 注意memset中写-1仅仅是-1,-2才是一个很小的负数; 最后找mxx时也要注意可能最大是负值,因此不能随便给mxx赋成0或-1之类。 代码如下: 阅读全文
posted @ 2018-03-15 23:53 Zinn 阅读(156) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1742 贪心地想,1、如果一种面值已经可以被组成,则不再对它更新; 2、对于同一种面值的硬币,尽量用较少硬币(一个)更新,使后面可以用更多此面值硬币。 代码如下: 阅读全文
posted @ 2018-03-15 22:20 Zinn 阅读(169) 评论(0) 推荐(0)
摘要:题目:http://www.joyoi.cn/problem/tyvj-1061 DP记录状态为当前任务时不在此任务位置上的两个人的位置(因为一定有一个人在此任务位置上); 不妨设初始位置p[0]=3,另外两个人在1,2位置上; 每次考虑上一任务的哪个人来到这一任务位置,更新; 开滚动数组以防止爆空 阅读全文
posted @ 2018-03-15 13:10 Zinn 阅读(165) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1015 DP的第一维是选了几个人,第二维是当前D与P的差值,而值存的是当前D与P的和; 技巧1:通过平移避免负角标,即代码中的fix; 技巧2:做完DP后找出最小的差的绝对值时,如下的那一小段代码很有效率; 技巧3(*):记录路径——①更新 阅读全文
posted @ 2018-03-15 00:19 Zinn 阅读(285) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3666 很普通的DP,离散化(sort)一下即可; mn的求法很不错(比我原来开了mn[]……简洁)。 代码如下: 阅读全文
posted @ 2018-03-13 23:02 Zinn 阅读(161) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2279 书上的DP做法会爆内存,尝试写了一个,过了样例。 转载: 代码如下: #include<iostream> #include<cstdio> #include<cstring> #define ll unsigned long lo 阅读全文
posted @ 2018-03-13 22:41 Zinn 阅读(921) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2127 LCIS,注意存储路径的方法。 代码如下: //void print(ll sx,ll sy)//{// if(f[sx][sy]==0)return;// ll xx=prex[sx][sy];// ll yy=prey[sx][ 阅读全文
posted @ 2018-03-10 11:33 Zinn 阅读(189) 评论(0) 推荐(0)
摘要:题目:http://codevs.cn/problem/2189/ 通过增加一维,将最优性转化为可行性。 代码如下: 阅读全文
posted @ 2018-03-10 09:24 Zinn 阅读(197) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P1018 区间DP+高精,注意初始化和转移的细节。 代码如下: 阅读全文
posted @ 2018-03-09 13:19 Zinn 阅读(158) 评论(0) 推荐(0)
摘要:题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1042 递推,再用容斥原理减掉多余的,加上多减的……(dfs)即可。 代码如下: 阅读全文
posted @ 2018-03-08 23:03 Zinn 阅读(138) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P1080 排序方法的确定,只需任取两个人,通过比较与推导,可以得出ai*bi小的人排在前面; 高精度写的时候犯了些细节错误,详见注释。 代码如下: 这个运行起来有点慢,有些地方写得不够好,下面有一篇运行很快的代码,可 阅读全文
posted @ 2018-03-08 22:35 Zinn 阅读(234) 评论(0) 推荐(0)
摘要:题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1853 dfs实现容斥原理即可。 注意:若在init中写“cnt++”,则出来后需要先cnt--再继续!! 代码如下: 阅读全文
posted @ 2018-03-08 00:32 Zinn 阅读(171) 评论(0) 推荐(0)
摘要:今天尝试写了高精度除法(n进制),感觉不错,只有一处一开始没有注意到,后来才看书发现,见注释。 代码如下: 阅读全文
posted @ 2018-03-07 23:18 Zinn 阅读(230) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P1525 二分答案+二分图染色。 阅读全文
posted @ 2018-03-07 13:37 Zinn 阅读(142) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P1525 二分答案,二分图染色判断是否可行。 代码如下: 阅读全文
posted @ 2018-03-07 13:36 Zinn 阅读(125) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2411 状态压缩,一行的状态记为一个二进制数,从上往下逐行DP,答案输出最后一行填0的方案数。 代码如下: 阅读全文
posted @ 2018-03-07 00:15 Zinn 阅读(219) 评论(0) 推荐(0)
摘要:题目:http://www.joyoi.cn/problem/tyvj-1035 将点分为两类:x+y为偶数和x+y为奇数,这样则可以在两部分之间连边,作为一块骨牌; 然后二分图求最大匹配即可。 代码如下: 阅读全文
posted @ 2018-03-06 23:08 Zinn 阅读(136) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P3386 二分图匹配模板,注意左部点只dfs未匹配点。 代码如下: 阅读全文
posted @ 2018-03-06 19:13 Zinn 阅读(140) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P1020 主要是第二问,使用了dilworth定理:一个序列中最长不上升子序列的最大覆盖=最长上升子序列长度。 dilworth定理:http://www.cnblogs.com/nanke/archive/2011 阅读全文
posted @ 2018-03-05 23:04 Zinn 阅读(147) 评论(0) 推荐(0)
摘要:题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2467 可以得出只需在每个五角形中去掉任意一条边,在某个五角形中去掉包括内边的两条边即可。 代码如下: 阅读全文
posted @ 2018-03-01 15:46 Zinn 阅读(263) 评论(0) 推荐(0)