摘要: 通道题意:求一个区间[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 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 通道题意:一台机器要按照顺序完成n个任务,每个任务都有一个代价f和需要时间t。机器完成任务的方式是分批处理,对于每一批任务需要首先预处理s时间,同批任务中所有单个任务都是同时完成,代价为完成的时刻乘以各自的代价。求最小代价思路:分批考虑情况太多,可以先将问题转化。每个任务对对最后代价的贡献实际上等于... 阅读全文
posted @ 2015-08-02 16:35 mithrilhan 阅读(178) 评论(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 阅读(154) 评论(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 阅读(147) 评论(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 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 总结一下凸包维护规律: 斜率为负,从小到大,维护U左半部分凸包,求最小y截距 斜率为负,从大到小,维护倒U右半部分凸包,求最大y截距 斜率为正,从小到大,维护U右半部分凸包,求最小y截距 斜率为正,从大到小,维护倒U左半部分凸包,求最大y截距 阅读全文
posted @ 2015-08-02 13:03 mithrilhan 阅读(372) 评论(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 阅读(195) 评论(0) 推荐(0) 编辑