随笔分类 - 差分约束
摘要:思路:首先就是判断是否有奇环,若存在奇环,则输出No。然后用差分约束找是否符合条件。对于e(i,j)属于E,并且假设顶点v[i]为正数,那么v[i]-v[j]>=T--->v[j]-v[i]#include#include#include#include#define Maxn 1010#define Maxm Maxn*Maxn#define inf 100000000#define T 400using namespace std;int head[Maxn],vi[Maxn],col[Maxn],map[Maxn][Maxn],e,n,cnt[Maxn],dis[Maxn];
阅读全文
摘要:看完题目第一遍,感觉很简单。当写完程序跑测试用例的时候,发现第二个总是过不了,然后好好研究了一下测试用例,才知道原来不是程序有问题,而是我的建图方式错了。对于这些无序的点,如果高的在右边,不等式是dis[tall]-dis[short]#include#include#include#include#define Maxn 1010#define inf 0x7fffffff#define Maxm Maxn*Maxnusing namespace std;int dis[Maxn],index[Maxn],vi[Maxn],e,n;struct Edge{ int to,next,va...
阅读全文
摘要:水水的。给几个不等式:dis[b]-dis[a]>=2; 0#include#include#include#include#define inf 1000000000#define Maxn 10110#define Maxm 160000using namespace std;int index[Maxn],dis[Maxn],vi[Maxn],e,n,Que[2000100];struct Edge{ int to,next,val;}edge[Maxm];void init(){ memset(vi,0,sizeof(vi)); memset(index,-1,siz...
阅读全文
摘要:思路:班长的糖果要比snoopy的多。并且要用手写堆栈,且堆栈的大小要开到20000000.#include#include#include#include#include#define inf 1000000000#define Maxn 30110#define Maxm 160000using namespace std;int index[Maxn],dis[Maxn],vi[Maxn],e,n,Que[20000100];struct Edge{ int to,next,val;}edge[Maxm];void init(){ memset(vi,0,sizeof(vi)...
阅读全文
摘要:思路:设dis[i]为从0点到第i点的序列总和。那么对于A B gt k 来讲意思是dis[B+A]-dis[A]>k; 对于A B lt k来讲就是dis[B+A]-dis[A] 2 #include 3 #include 4 #include 5 #define Maxn 1100 6 #define inf 1<<30 7 using namespace std; 8 int dis[Maxn],vi[Maxn],n,index[Maxn],e; 9 struct Edge{10 int from,to,val,next;11 }edge[Maxn*1000];12 v
阅读全文
摘要:思路:设dis[i]为标号为i的点到0号点的距离。对于P A B X,我们能得到等式dis[a]-dis[b]=x,那么可以化为两个不等式dis[a]-dis[b]>=x和dis[b]-dis[a]>=-x。这样就可以建两条边。V A B的话,我们知道dis[a]-dis[b]>=1,可以建一条边。这些边建起来后,图可能是一个离散的图,那么我们就定义一个超级源点连接所有的点,权值为0.进行求最长路时,只要判断是否有正圈存在,正圈的含义是绕着这个圈使每个点的dis值不断增大。用bellman-ford算法就行。还有一个笨的方法,其实是卡数据的,我们就用spfa求最长路,若循环次
阅读全文
摘要:http://www.cnblogs.com/wangfang20/p/3196858.html题意:求集合Z中至少要包含多少个元素才能是每个区间[ai,bi]中的元素与Z中的元素重合个数为ci。思路:对于dis[b]-dis[a]>=c的形式,我们建一条a到b的边,权值为c,最后求最长路就是要得到的最小值。可举一例,[1,8]假使有7个不同的数,[1,4]假使有2个不同的数,[4,8]假使有3个不同的数,都满足f[8]-f[1]>=7,f[4]-f[1]>=2,f[8]-f[4]>=3.若求最短路,那么肯定得到的结果是5,与f[8]-f[1]>=7相矛盾。故求得
阅读全文

浙公网安备 33010602011771号