上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 25 下一页
摘要: 【算法】最近公共祖先(LCA) 【题解】 点x,y到最近公共祖先z的距离之和相当于x,y到根的距离减去两倍z到根的距离, 即ans=dis[x]+dis[y]-2*dis[z] 记得边数组要开两倍!!!T_T #include<cstdio> #include<algorithm> using na 阅读全文
posted @ 2017-07-20 16:25 ONION_CYC 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 【算法】贪心 【题解】 DP可以f[i][0],f[i][1]表示选了i分别满足条件AB的答案,其优化也是利用了下面的性质,不多赘述。 想象数列的波动,最大值一定是取每个波峰和每个波谷,那么只要O(n)统计就可以了。 #include<cstdio> #include<cstring> #inclu 阅读全文
posted @ 2017-07-19 08:33 ONION_CYC 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 【算法】最小生成树 【题解】 想到网络流,但是好像不能处理流量和费用的关系。 想到最短路,但好像不能处理重复选边的问题。 每条边只需要选一次,每个点就要遍历到,可以想到最小生成树。 建超级源向每个点连边,点与点连边,对n+1个点求最小生成树(MST)即可。 #include<cstdio> #inc 阅读全文
posted @ 2017-07-17 22:34 ONION_CYC 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 【算法】模拟 #include<cstdio> #include<algorithm> using namespace std; const int maxn=100010,maxm=1000010; int a[maxn],A[maxm],n; int main() { scanf("%d",&n 阅读全文
posted @ 2017-07-17 22:02 ONION_CYC 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 【算法】DP+斜率优化 【题意】n(n≤50000)块土地,长ai宽bi,可分组购买,每组代价为max(ai)*max(bi),求最小代价。 【题解】 斜率优化:http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 因为对于土 阅读全文
posted @ 2017-07-17 21:04 ONION_CYC 阅读(803) 评论(0) 推荐(1) 编辑
摘要: 【题意】给定G,N,求: $$ans=G^{\sum_{i|n}\binom{n}{i}}\ \mod\ \ p$$ 1<=N,G<=10^9,p=999911659。 【算法】欧拉定理+组合数取模(lucas)+中国剩余定理(CRT) 【题解】 先考虑简化幂运算,因为模数为素数,由欧拉定理可知G^ 阅读全文
posted @ 2017-07-17 16:22 ONION_CYC 阅读(389) 评论(0) 推荐(2) 编辑
摘要: 【算法】中国剩余定理 【题意】给定n件物品分给m个人,每人分到wi件,求方案数%p。p不一定是素数。 【题解】 首先考虑n全排列然后按wi划分成m份,然后对于每份内都是全排列,除以wi!消除标号影响,注意剩余的(n-W)也视为一份。 所以ans=n!/(w1!w2!...wm!(n-W)!)%p 也 阅读全文
posted @ 2017-07-16 22:18 ONION_CYC 阅读(546) 评论(0) 推荐(3) 编辑
摘要: 【题意】n个数,每个数有附加属性0或1,初始全为1。m个操作,每个操作可以改变一个数字的属性为0或1。对于每次操作后的序列求有多少子序列满足要求:5个数字,中间3个数相等且属性为1,左右两个数小于等于中间三个数且属性任意。n,m<=10^5。 【算法】线段树 【题解】朴素的算法,奇妙的使用>_<! 阅读全文
posted @ 2017-07-16 16:44 ONION_CYC 阅读(427) 评论(0) 推荐(1) 编辑
摘要: 【算法】欧拉函数 欧拉线性筛 【题解】将图从左至右,从下至上,分别标号0~n-1。 除了坐标0,一个点会被观察到当且仅当其坐标(i,j)的i与j互质,否则会被(i/d,j/d)挡住。 所以累加2~n-1的欧拉函数,再在处理左下角三个点即可。 #include<cstdio> #include<alg 阅读全文
posted @ 2017-07-08 15:09 ONION_CYC 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 【算法】组合数取模——lucas定理 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int p=10007; int fac[p+10],inv[p+10]; void gcd(in 阅读全文
posted @ 2017-07-08 14:13 ONION_CYC 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 【算法】贪心+堆 【题意】n个数字的序列,要求选择互不相邻的k个数字使和最大。 【题解】 贪心,就是按一定顺序选取即可最优,不会反悔。 考虑第一个数字选择权值最大的,那么它相邻的两个数字就不能选择,那么我们可以把这三个数字视为一个整体。操作为将pre[pre[x]]和x和suc[suc[x]]连接起 阅读全文
posted @ 2017-06-28 14:17 ONION_CYC 阅读(396) 评论(0) 推荐(1) 编辑
摘要: 【算法】贪心,一般DP 【题解】 胡策k≤10的环状DP做法: 1.钦定法:先确定第一位(可能和第n位)的状态,然后后面正常做DP,显然正确答案是一定会被记录的,因为从整体上看不会有影响。 2.环的特性:取的段和不取的段数量相等,位置互补。所以1和n的连接处都选或都不选都会有不被包括的情况,一选一不 阅读全文
posted @ 2017-06-27 20:13 ONION_CYC 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 【算法】trie 【题解】 为了让数据有序,求lowbit无法直接排序,从而考虑倒过来排序,然后数据就会呈现出明显的规律: 法一:将数字倒着贴在字典树上,则容易发现两数的lowbit就是它们岔道结点的深度,所以先建树后对于一个数字依次把每次分岔开的另一边的size乘上权值累加答案。 法二:从高位到低 阅读全文
posted @ 2017-06-26 19:49 ONION_CYC 阅读(254) 评论(0) 推荐(1) 编辑
摘要: 【算法】DP 【题解】f[i][j][0]表示在i,j位置往下走的球数,f[i][j][1]表示在i,j位置往右走的球数,经过i,j的球若为-1则(num+1)/2往下,其余往右。+1类似。 转移见代码。 #include<stdio.h> #include<cstring> #include<cc 阅读全文
posted @ 2017-06-20 21:35 ONION_CYC 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 【算法】贪心 #include<cstdio> #include<algorithm> #include<cstring> #include<queue> using namespace std; const int maxn=50010; struct cyc{int num,value;}b[m 阅读全文
posted @ 2017-06-20 20:49 ONION_CYC 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 【算法】数学 【题解】 1.平均数:累加前缀和。//听说要向下取整? 2.中位数:双堆法,大于中位数存入小顶堆,小于中位数存入大顶堆,保证小顶堆内数字数量≥大顶堆,奇数则取小堆顶,偶数则取两堆顶/2。 3.方差=(平方的均值)-(均值的平方),即对于a,b,c,s2=(a2+b2+c2)/3-((a 阅读全文
posted @ 2017-06-20 13:10 ONION_CYC 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 【题解】通过画图易得结论:最大斜率一定出现在相邻两点之间。 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=10010; const double eps=1e-6; 阅读全文
posted @ 2017-06-20 12:44 ONION_CYC 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 【算法】贪心 【题解】比较经典,用l,r两个定位指针分别从左右向中间推进。 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=10010; int n,m,a[maxn 阅读全文
posted @ 2017-06-19 16:51 ONION_CYC 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 【算法】数位DP 【题解】数位dp总结 之 从入门到模板 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=20; int n,a[maxn],NUM[maxn]; l 阅读全文
posted @ 2017-06-19 13:57 ONION_CYC 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 【算法】Link-Cut Tree+线段树(维护DFS序) 【题解】整整三天……T_T 这篇题解比较资瓷:permui 这道题虽然树形态没有变化,但用lct写的原因在于把题目中的操作一进行了神转化:每条重链表示一种颜色,点到根的颜色数=经过的轻链数+1。 询问一个点的子树所有结点到根的代价和(的平均 阅读全文
posted @ 2017-06-08 23:26 ONION_CYC 阅读(354) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 25 下一页