摘要:http://www.cnblogs.com/chengsheng/p/5535316.html 题目大意:给你n个银行中的存款(负值表示借贷),是成环的,1跟n相接,这n个数的和为0。可以从i向i的相邻两侧转移存款,问你最少转移多少次,可以让所有银行的存款都为0。 解题思路:n个数的和为0,假设是
阅读全文
摘要:分析转载自http://blog.csdn.net/yukizzz/article/details/51029628 题意: 给定n个点和m条双向边,将双向边改为单向边,问无法到达的顶点最少有多少个? 分析: 无法到达的话即入度为0。 DFS判断每一个连通块中是否存在环,如果存在环,就能保证环中每个
阅读全文
摘要:大神博客转载http://www.cppblog.com/MatoNo1/archive/2011/07/05/150231.aspx多重背包的单调队列初中就知道了但一直没(不会)写二进制优化初中就写过一直不写会心虚就写一下这个吧朴素方程dp[i,j]=max(dp[i-1,j-w[i]*k]+c[
阅读全文
摘要:单调队列DP复出练手题 朴素方程dp[i]=min(dp[j]+(s[i]-s[j-1])^2+m 你懂得 1 var dp,s:array[0..500000]of int64; 2 a,q:array[1..500000]of longint; 3 n,m,i,t,w:longint; 4 5
阅读全文
摘要:题意:给你一张有向图,叫你给出四个点的序列a,b,c,d,使得这四个点依次间的最短路之和最大。(4 ≤ n ≤ 3000, 3 ≤ m ≤ 5000) 思路:O(n4)可用来对拍 我们需要O(n2)级别的算法 若枚举c,d,预处理出x到b比较远的3个x,d到y比较远的3个y,时间复杂度O(9n2)
阅读全文
摘要:给定一个循环数组a0, a1, a2, …, an-1,现在对他们有两个操作: Inc(le, ri, v):表示区间[le, ri]范围的数值增加v Rmq(le, ri):表示询问区间[le, ri]范围内的最小值 注意,这个是循环数组,所以如果n=5, le=3, ri=1,那么询问的是a3,
阅读全文
摘要:1 const MAX=1000000; 2 var Prime:array[0..MAX] of longint; 3 v:array[0..MAX] of boolean; 4 5 procedure GetPrime; 6 var i,j,tmp,size:longint; 7 begin 8
阅读全文
摘要:1 const int MAXN=3000001; 2 int prime[MAXN];//保存素数 3 bool vis[MAXN];//初始化 4 void Prime(int n) 5 { 6 int cnt=0; 7 memset(vis,0,sizeof(vis)); 8 for(int
阅读全文
摘要:1 1 #include<iostream> 2 2 #include<cstdlib> 3 3 #include<cstdio> 4 4 #include<cstring> 5 5 #include<algorithm> 6 6 #include<cmath> 7 7 using namespac
阅读全文
摘要:每块多米诺骨牌所在的位置设为x,每块多米诺骨牌高度为h。如果将x位置上的多米诺骨牌向右翻到,它就可以影响[x+1, x+h-1]范围内的所有多米诺骨牌,让他们也翻到,同时这些被翻到的多米诺骨牌还能影响到其他多米诺骨牌,现在BSNY给出n块多米诺骨牌的位置和高度,问如果向右翻到第i块多米诺骨牌,会有多
阅读全文