上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 25 下一页
摘要: 【题意】给定n头牛和m对大小关系,求最坏情况下至少还需要比较几对奶牛的大小(在未确定顺序的奶牛对中随机比较) 【算法】floyd求传递闭包 【题解】可达说明大小已知,则不可达点对数量就是最少比较次数。 使用bitset优化传递闭包,复杂度O(n^3 /32)。 #include<cstdio> #i 阅读全文
posted @ 2017-09-27 07:34 ONION_CYC 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定s个股票和d天,给出价格矩阵s*d,每天可以买入或卖出整数倍股票,初始资金m,求最大利益。m<=200000,s<=50,d<=10。 【算法】完全背包 【题解】关键在于转化:第一天买入-第三天卖出,相当于,第一天买入-第二天卖出-第二天买入-第三天卖出。那么买卖股票就变成相邻两天的事情 阅读全文
posted @ 2017-09-27 07:02 ONION_CYC 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定n*n网格,有k个物品,每次可以消灭一行或一列,求消灭掉所有物品的最少操作次数。 【算法】二分图最小覆盖 【题解】此题是最小覆盖模型的出处。 将物品的x-y连边建立二分图。 最小覆盖:选择最少的点,使每条边至少有一个端点被覆盖。 刚好对应题意。 最小覆盖可以用最小割解决,将选择点视为割去 阅读全文
posted @ 2017-09-26 19:25 ONION_CYC 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 【算法】树形DP 【题解】没有上司的舞会?233 f[x][0]=∑max(f[v][0],f[v][1]) f[x][1]=(∑f[v][0])+1 #include<cstdio> #include<algorithm> #include<cstring> using namespace std 阅读全文
posted @ 2017-09-26 16:09 ONION_CYC 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定有向图,边严格从大编号指向小编号,求前k短路。n<=1000,m<=10000,k<=100。 【算法】归并+拓扑排序||A*求第k短路 【题解】因为此题自带拓扑序的特殊性,可以用归并写。 f[i][j]表示从i出发的第j短路,将i出去的点的前k短路依次归并。 复杂度O(m*k)。 #i 阅读全文
posted @ 2017-09-26 15:06 ONION_CYC 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 【算法】区间DP 【题解】回文问题的套路做法:区间DP。 f[i][j]表示区间i~j回文的最小代价,则有f[i][j]=min{①②③}。 ①f[i+1][j]+min(a[s[i]],b[s[i]]) ②f[i][j-1]+min(a[s[j]],b[s[j]]) ③f[i+1][j-1],s[ 阅读全文
posted @ 2017-09-26 10:15 ONION_CYC 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定带点权树,要求选择两个点x,y,满足所有点到这两个点中较近者的距离*点权的和最小。n<=50000,h<=100。 【算法】树的重心 【题解】代码参考自:cgh_Andy 观察要求容易发现和重心的定义【所有点距离和最小】十分相似。 要把树分成两部分,于是考虑枚举割掉一条边后,在两棵树中各 阅读全文
posted @ 2017-09-26 08:28 ONION_CYC 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定m条边的无向图,起点s,终点t,要求找出s到t恰好经过n条边的最短路径。n<=10^6,m<=100。 【算法】floyd+矩阵快速幂 【题解】 先对点离散化,得到点数N。 对初始边建立初始矩阵,然后考虑每次多跑一条边相当于一次矩阵乘法,即c[i][j]=min(a[i][k],a[k] 阅读全文
posted @ 2017-09-25 08:23 ONION_CYC 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定h,w,d,要求构造矩阵h*w满足任意两个曼哈顿距离为d的点都不同色,染四色。 【算法】结论+矩阵变换 【题解】 曼哈顿距离是一个立着的正方形,不方便处理。d=|xi-xj|+|yi-yj| 将矩阵旋转45°,转为切比雪夫距离(正方形)。d=max{|xi-xj|,|yi-yj|} (图 阅读全文
posted @ 2017-09-25 08:06 ONION_CYC 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 【算法】线段树||树状数组&&并查集 【题解】修改必须暴力单点修改,然后利用标记区间查询。 优化:一个数经过不断开方很快就会变成1,所以维护区间最大值。 修改时访问到的子树最大值<=1时,该区间就不必修改。 #include<cstdio> #include<cmath> #include<algo 阅读全文
posted @ 2017-09-23 07:35 ONION_CYC 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 【算法】贪心扫描线(+堆) 【题意】给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数。 【题解】 参考:[bzoj1707]: [Usaco2007 Nov]tanning分配防晒霜 by czllgzmzl 本题同样是区间和点的贪 阅读全文
posted @ 2017-09-22 22:10 ONION_CYC 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 【算法】高精度乘法 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=100; char s1[maxn],s2[maxn]; int a[maxn],b[maxn], 阅读全文
posted @ 2017-09-22 20:15 ONION_CYC 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 【算法】DP+数学优化 【题意】把n个1~m的数字分成k段,每段的价值为段内不同数字个数的平方,求最小总价值。n,m,ai<=40000 【题解】 参考自:WerKeyTom_FTD 令f[i]表示把前i个数分成若干段的最小价值。 转移中我们定义,从i开始往前到有j个不同的数的最小位置为b[j]。 阅读全文
posted @ 2017-09-22 19:56 ONION_CYC 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 【算法】贪心+线段树 【题意】给定n个数字ci,m个区间[a,b](1<=a,b<=10^5),每个位置最多被ci个区间覆盖,求最多选择多少区间。 附加退化问题:全部ci=1,即求最多的不相交的区间。 【题解】本题是区间和点之间的经典贪心,有两种经典做法,本质思想都是通过排序实现扫描线,细节根据题目 阅读全文
posted @ 2017-09-22 12:58 ONION_CYC 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 【算法】模拟 【题解】O(n^2)预处理横线(y),纵线(x),主对角线(y-x+n),副对角线(x+y)。 然后n^2枚举每个点。 阅读全文
posted @ 2017-09-22 07:17 ONION_CYC 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 【算法】搜索 【题意】给定无向图,现在可能有一些点已经被删除,只给出信息是c个点不能到达结点1,求最少的不能到达结点1的个数(含已删除点)。 【题解】 真是一道奥妙重重的题目。 每个点不能到达结点1,就需要阻断所有它和1之间的路径,而要使答案最小,显然阻断该点相邻的点最优。 如果该点的邻点不能到达1 阅读全文
posted @ 2017-09-21 22:01 ONION_CYC 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 【算法】基环树DP 【题意】给定若干有向基环树,每个点能走的最远路径长度。 【题解】 参考:【BZOJ1589】Trick or Treat on the Farm 基环树裸DP by 空灰冰魂 考虑DAG上DP,令f[x]表示点x开始能到达的最远长度,则f[x]=f[y]+1,x >y。 环套树最 阅读全文
posted @ 2017-09-21 21:33 ONION_CYC 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 【算法】数学置换 【题意】给定n个数,要求通过若干次交换两个数的操作得到排序后的状态,每次交换代价为两数之和,求最小代价。 【题解】 考虑置换的定义:置换就是把n个数做一个全排列。 从原数组到排序数组的映射就是经典的置换,这样的置换一定能分解成循环的乘积。 为什么任意置换都可以这样分解:原数组的每个 阅读全文
posted @ 2017-09-21 18:29 ONION_CYC 阅读(235) 评论(0) 推荐(1) 编辑
摘要: 【算法】动态规划+组合数学 【题意】有一个h行w列的棋盘,定义一些格子为不能走的黑点,现在要求从左上角走到右下角的方案数。 【题解】 大概能考虑到离散化黑点后,中间的空格子直接用组合数计算。 然后解决容斥问题就很重要了。 定义f[i]为走到第i个黑点且不经过其它黑点的方案数。 f[i]=calc(x 阅读全文
posted @ 2017-09-21 07:40 ONION_CYC 阅读(651) 评论(0) 推荐(1) 编辑
摘要: 【算法】树型DP 【题意】给定含n个点的树的形态,和n个数字Xv,要求给每个点赋予黑色或白色和权值,满足对于每个点v,子树v中和v同色的点的权值和等于Xv。n<=10^5 【题解】首先每个点的权值可以任意大,那么v的子树(不含v的部分)权值多少就无所谓了(因为缺的可以由v来补足),但是太大的话超过X 阅读全文
posted @ 2017-09-18 07:36 ONION_CYC 阅读(757) 评论(0) 推荐(2) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 25 下一页