摘要: 参考:http://blog.csdn.net/Regina8023/article/details/44158947 神奇的做法。题意相当于若干个数取不相邻的k个使最小。先把数组差分,len表示这段空的长度。设二元组(i,len[i]),开一个小根堆把二元组塞进去,以len排序。每次取出一个二元组 阅读全文
posted @ 2018-02-07 22:54 lokiii 阅读(253) 评论(1) 推荐(0) 编辑
摘要: 记得cnt=1!!因为是无向图所以可以把回来的路看成另一条向东的路。字符串用map处理即可。拆点限制流量,除了1和n是(i,i+n,2)表示可以经过两次,其他点都拆成(i,i+n,1),费用设为1,原图中的边(i,j)连接(i+n,j,1),注意特判掉i==q&&j==nst直接相连的情况,流量要设 阅读全文
posted @ 2018-02-07 21:43 lokiii 阅读(199) 评论(0) 推荐(0) 编辑
摘要: (x,y,z)表示格子(x,y)的值为z,也就是x行+y列加的次数等于z,相当于差分约束的条件,用dfs判断冲突即可。 cpp include include include using namespace std; const int N=2005; int T,n,m,k,cnt,p,h[N], 阅读全文
posted @ 2018-02-07 15:27 lokiii 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 死于开小数组的WA?! 第一问n方dp瞎搞一下就成,f[i]记录以i结尾的最长不下降子序列。记答案为mx 第二问网络流,拆点限制流量,s向所有f[i]为1的点建(s,i,1),所有f[i]为mx(i+n,t,1),然后对于j include include include using namespa 阅读全文
posted @ 2018-02-07 10:05 lokiii 阅读(155) 评论(0) 推荐(0) 编辑