【HDU】2829 Lawrence】的更多相关文章

http://acm.hdu.edu.cn/showproblem.php?pid=2829 题意:将长度为n的序列分成p+1块,使得$\sum_{每块}\sum_{i<j} a[i]a[j]$最小(n<=1000,1<=a[i]<=100) #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <iostream&…
传送门:pid=4888">[HDU]4888 Redraw Beautiful Drawings 题目分析: 比赛的时候看出是个网络流,可是没有敲出来.各种反面样例推倒自己(究其原因是不愿意写暴力推断的).. 首先是简单的行列建边.源点向行建边.容量为该行元素和,汇点和列建边.容量为该列元素和.全部的行向全部的列建边,容量为K. 跑一次最大流.满流则有解,否则无解. 接下来是推断解是否唯一. 这个题解压根没看懂.还是暴力大法好. 最简单的思想就是枚举在一个矩形的四个端点.设A.D为主对角…
原题目:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 [算法]多重背包(有限背包) 动态规划 [题解]http://blog.csdn.net/acdreamers/article/details/8563283 优化:若物品数量(num[i])*物品重量(w[i])>背包容量(m),就相当于无限背包. 对于num[i],可以拆成若干个01背包来实现1...num[i]的全覆盖,二进制原理: 1...k中的数可以由1.2.4...2t.k-2t+1+1(2t+2 > k ≥ 2t+1)组…
[题目]2017"百度之星"程序设计大赛 - 初赛(A) [题意]给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度.n<=500000. [算法]线段树+RMQ-LCA+树链的交 [题解]树链的交:记一条链为(a1,b1),LCA为c1.另一条链为(a2,b2),LCA为c2.记a1a2,a1b2,b1a2,b1b2的LCA为d1,d2,d3,d4,按深度排序后得deep[d1]<=deep[d2]<=deep[d3]<=…
[算法]数位DP [题意]定义V-number为从左到看单位数字未出现先递增后递减现象的数字,求0~N中满足条件的数字个数.T<=200,lenth(n)<=100 [题解]百度之星2017复赛,作为送分题出现,拿来练数位DP模板了. 位数多,读入记得用字符串. 记忆化要将有关变量全部纳入. 需要取模的时候别习惯性写"+=",特别是竞速赛,改起来很难受. -1的变量前加~就和0一样了. 最后自己造数据测试了一下,记忆化搜索的速度简直全面碾压递推啊!(从此坚定了信仰) #in…
[算法]trie [题解] 为了让数据有序,求lowbit无法直接排序,从而考虑倒过来排序,然后数据就会呈现出明显的规律: 法一:将数字倒着贴在字典树上,则容易发现两数的lowbit就是它们岔道结点的深度,所以先建树后对于一个数字依次把每次分岔开的另一边的size乘上权值累加答案. 法二:从高位到低位分组求和,即第一位1在上,0在下,则两边之间互相计算过后就再无影响,只剩下各自内部的事情再处理.由于排序后数据的有序性使分治可行. 法三:排序后对于一个数字,它和后面的数字的lowbit有单调性………
[算法]manacher [题解][算法]字符串 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ; int n,p[maxn]; char s[maxn],ss[maxn]; void manacher() { ,id=; ; ;i<=n;i++)//$不管 { if(i<mx) { p[i]=min(p[id*-i],mx-i+); } ; while…
[算法]AC自动机 [题解]本题注意题意是多少关键字能匹配而不是能匹配多少次,以及可能有重复单词. 询问时AC自动机与KMP最大的区别是因为建立了trie,所以对于目标串T与自动机串是否匹配只需要直接访问对应结点,而不用真的比较. 因此可以预处理出拥有对应节点的失配串,不用一次一次跑前跑去找一样的. 然后还有就是一个结点可能对应多个串,所以需要last使统计答案完整. AC自动机的细节标注在代码里了. AC自动机过程: [trie] for 长度 if(!ch[u][c])初始化,ch[u][c…
[算法]离散化 [题解] 答案一定存在于区间的左右端点.与区间左右端点距离0.5的点上 于是把所有坐标扩大一倍,排序(即离散化). 让某个点的前缀和表示该点的答案. 初始sum=∑c[i] 在l[i]处加上a[i]-c[i],在r[i]+1处加上b[i]-a[i]. 从左到右计算sum并比较出最大值即可. #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #inclu…
[题意]一个2*n的网格,再保证步数最少的情况下,求从任意格出发遍历完所有格的方案数,格子八连通.n<=10000,T<=100. [算法]递推,DP [题解]原题链接:蓝桥杯 格子刷油漆(动态规划) 这类题目最重要的是找到一个可以计算所有情况的状态表示. 对于2*x的网格,a[x]表示从左上角出发遍历完所有格子的方案数,b[x]表示从左上角出发遍历完所有格子并在左下角结束的方案数. 显然,b[x]=2*b[x-1]. 先考虑起点在左上角,有三种情况: ①先走到对面(左下角),再往右走,a[x…