zoukankan      html  css  js  c++  java
  • zoj 1508 Intervals 差分约束系统

    题目大意:输入n个区间,每个区间有3个值,ai,bi,ci代表在区间[ai,bi]上至少要有ci个整数点,现在要满足所有区间的自身条件,问最少选多少个点。

    类似zoj 2770可以建模成一个差分约束系统.

     

     

    #include <stdio.h>
    #include <string.h>
    int n,dist[50010];
    struct e
    {
    	int u,v,w;
    }edges[50010];
    int mn,mx;
    bool bellman()
    {
    	int i,t;
    	int f=1;
    	while(f)
    	{
    		f=0;
    		for(i=0;i<n;i++)
    		{
    			t=dist[edges[i].u]+edges[i].w;
    			if(dist[edges[i].v]>t)
    			{
    				dist[edges[i].v]=t;
    				f=1;
    			}
    		}
    		for(i=mn;i<=mx;i++)
    		{
    			t=dist[i-1]+1;
    			if(dist[i]>t)
    			{
    				dist[i]=t;
    				f=1;
    			}
    		}
    		for(i=mx;i>=mn;i--)
    		{
    			t=dist[i];
    			if(dist[i-1]>t)
    			{
    				dist[i-1]=t;
    				f=1;
    			}
    		}
    	}
    	return true;
    }
    
    int main()
    {
    	int i,u,v,w;
    	while(scanf("%d",&n)!=EOF)
    	{
    		memset(dist,0,sizeof(dist));
    		mx=1;
    		mn=99999;
    		for(i=0;i<n;i++)
    		{
    			scanf("%d%d%d",&u,&v,&w);
    			edges[i].u=v;
    			edges[i].v=u-1;
    			edges[i].w=-w;
    			if(mn>u)
    				mn=u;
    			if(mx<v)
    				mx=v;
    		}
    		bellman();
    		printf("%d
    ",dist[mx]-dist[mn-1]);
    	}
    	return 0;
    }
    
    


     

     

     

  • 相关阅读:
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    Java学习哈希表2
    Java学习哈希表1
  • 原文地址:https://www.cnblogs.com/vermouth/p/3710216.html
Copyright © 2011-2022 走看看