上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页
摘要: 通道题意:一棵树上有K个黑色节点,剩余节点都为白色,将其划分成K个子树,使得每棵树上都只有1个黑色节点,共有多少种划分方案思路:dp[i][0]和dp[i][1]分别表示i子树所在联通块不存在黑节点和已经存在一个黑节点的方案数代码:#include#include#include#include#i... 阅读全文
posted @ 2015-08-05 20:17 mithrilhan 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 通道题意:根据那个递推式,找找规律即可。代码:#include #include #include #include #include using namespace std;typedef long long ll;inline bool rd(int &ret) { char c; int... 阅读全文
posted @ 2015-08-04 23:12 mithrilhan 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 通道题意:从A,B分别取出子串X,Y,求多少种不同的X+Y思路:代码:#include #include #include using namespace std;const int MAX_N = 200007;typedef unsigned long long ll;struct SAM { ... 阅读全文
posted @ 2015-08-04 22:34 mithrilhan 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 通道题意:给出n个点,m条边,现在要给边定向使得点的出度和入度的差不超过1思路:对每个点进行出度和入度的判断,如果出度大,就先进行反向的搜索(每搜索一条边u,v就认为这是一条v到u的有向边),反之,进行正向搜索(每搜到一条边u,v认为这是一条u到v的有向边),一直搜索到找不到边能继续为止,每条边只遍... 阅读全文
posted @ 2015-08-04 21:24 mithrilhan 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 通道题意:3种操作,加点,加边,删边,然后对于每次加点操作为不超过k个点,求对于每次加点时加点数量的方案的字典序最小。思路:要保证字典序最小,就倒着来,能加的都加进去。建图方法就是拆点,源点向i建流量为k,tot+i到汇点建流量为1,i到tot+v建流量为1.代码:#include #include... 阅读全文
posted @ 2015-08-04 20:00 mithrilhan 阅读(192) 评论(0) 推荐(0) 编辑
摘要: void solve(){ int ans=0,i,j,front1,front2,rear1,rear2; front1=rear1=0; front2=rear2=0; for(i=1,j=1;jfront1&&d[qmax[rear1-1]]front2&&d[qmin... 阅读全文
posted @ 2015-08-04 11:56 mithrilhan 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 通道题意:给出一个字符串和一个k,将字符串分成k段,每段的求法是sigma【(i − P OS) ∗ P OS】,问如何分段使得总和最小思路:设dp[i][j] 为将前j个字符分成i段的最小值。a[i]为第i个字符在原始字符串的位置。那么dp[i][j] = min(dp[i][j],dp[i-1]... 阅读全文
posted @ 2015-08-03 13:03 mithrilhan 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 通道题意:求一个区间[1,m]内与i的互质的数的个数。这里1#include #include typedef long long LL;const int maxn = 100010;LL ans;int n,m;int fac[maxn];int prime[maxn];int facCnt;v... 阅读全文
posted @ 2015-08-02 19:15 mithrilhan 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 通道题意:一台机器要按照顺序完成n个任务,每个任务都有一个代价f和需要时间t。机器完成任务的方式是分批处理,对于每一批任务需要首先预处理s时间,同批任务中所有单个任务都是同时完成,代价为完成的时刻乘以各自的代价。求最小代价思路:分批考虑情况太多,可以先将问题转化。每个任务对对最后代价的贡献实际上等于... 阅读全文
posted @ 2015-08-02 16:35 mithrilhan 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 通道题意:用数轴描述一条高速公路,有N个村庄,每一个村庄坐落在数轴的某个点上,需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离和最小思路:用f[i][j]表示建好i个邮局时覆盖到第j个村庄的最优解,那么就可以得到f[i][j]=min{f[i-1][k]+w[k+1][j]}(k#inc... 阅读全文
posted @ 2015-08-02 16:28 mithrilhan 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 通道题意:二维坐标上的点,建一个长度和最小的树包含全部点思路:定义状态 dp[i,j]表示点i到点j合并在一起的最小花费(树枝的长度),状态转移方程:dp[i,j]= min(dp[i,k]+dp[k+1,j]+cost(i,j) ) i #include #include #include... 阅读全文
posted @ 2015-08-02 15:46 mithrilhan 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 通道题意:有n个数,分段,每段长度至少为T,这段权值为全修改为最小数花费,求总花费最小思路:先对n个数进行排序,dp[i]表示前i个数得到的最少值,则:从j+1~i作为一组dp[i]=dp[j]+sum[i]-sum[j]-(i-j)*s[j+1];//sum[i]表示前i个数的和=>dp[i]=d... 阅读全文
posted @ 2015-08-02 14:39 mithrilhan 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 总结一下凸包维护规律: 斜率为负,从小到大,维护U左半部分凸包,求最小y截距 斜率为负,从大到小,维护倒U右半部分凸包,求最大y截距 斜率为正,从小到大,维护U右半部分凸包,求最小y截距 斜率为正,从大到小,维护倒U左半部分凸包,求最大y截距 阅读全文
posted @ 2015-08-02 13:03 mithrilhan 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 通道题意:给你n个矩形,长宽已知,求用不超过k个大矩形包含所有给定矩形,使得大矩形总面积和最小思路:dp[i][j]表示前i个用j个大矩形的最少面积 ,则dp[i][j]=Min(dp[k][j-1]+w[i]*h[k+1]) ,斜率维护。代码:#include#includeusing names... 阅读全文
posted @ 2015-08-02 12:35 mithrilhan 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 通道题意:求出长度大于k子序列使得其各个元素之和的平均数最大,并输出最大平均值思路:浅谈数形结合思想在信息学竞赛中的应用代码:#include#include#include#include#includeusing namespace std;const int MAXN=100010;int s... 阅读全文
posted @ 2015-08-02 12:24 mithrilhan 阅读(196) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页