博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[JOYOI] 1415 西瓜种植
阅读量:5831 次
发布时间:2019-06-18

本文共 1376 字,大约阅读时间需要 4 分钟。

题目描述  笨笨种了一块西瓜地,但这块西瓜地的种植范围是一条直线的……  笨笨在一番研究过后,得出了m个结论,这m个结论可以使他收获的西瓜最多。  笨笨的结论是这样的:  从西瓜地B处到E处至少要种植T个西瓜,这个范围的收获就可以最大化。  笨笨不想那么辛苦,所以他想种植的西瓜尽量少,而又满足每一个所得的结论。输入格式第一行两个数n,m(0
<=5000,0<=m<=3000),表示笨笨的西瓜地长n,笨笨得出m个结论。接下来m行表示笨笨的m个结论,每行三个数b,e,t(1<=b<=e<=n,0<=t<=e-b+1)。输出格式输出笨笨最少需种植多少西瓜。提示基本上来说,笨笨的西瓜地就是一条壮观的线……笨笨原创。样例数据输入样例 #1 输出样例 #19 41 4 24 6 28 9 23 5 25

差分约束系统

习惯用最长路,对于xi-xj>=w 从j向i连w的边
重点是约束关系的推导,比如这题就有隐含条件一个地只能种一个西瓜

//Stay foolish,stay hungry,stay young,stay simple#include
#include
#include
using namespace std;const int MAXN=50000;int n,m;struct Edge{ int next,to,w;}e[MAXN];int ecnt,head[MAXN];inline void add(int x,int y,int w){ e[++ecnt].next = head[x]; e[ecnt].to = y; e[ecnt].w = w; head[x] = ecnt;}int val[MAXN];bool inq[MAXN];void spfa(){ for(int i=1;i<=n;i++) val[i]=-(1<<28); queue
Q; Q.push(0); inq[0]=1; while(!Q.empty()){ int top=Q.front() ; Q.pop();inq[top]=0; for(int i=head[top];i;i=e[i].next){ int v=e[i].to ; if(val[v]
>n>>m; for(int i=1;i<=m;i++){ int x,y,w; cin>>x>>y>>w; add(x-1,y,w); } for(int i=1;i<=n;i++){ add(i-1,i,0); add(i,i-1,-1); } spfa(); cout<

转载于:https://www.cnblogs.com/ghostcai/p/9247466.html

你可能感兴趣的文章
oracle建立用户与授权(转载)
查看>>
程序猿应该了解的内容以及程序猿如何强迫自己学习(算法篇)
查看>>
获取相对目标元素的鼠标位置
查看>>
下载的firebug-lite压缩包的调用方法
查看>>
精选30道Java笔试题解答
查看>>
深入理解计算机系统(3.5)---特殊的算术操作指令详解
查看>>
析构函数-复制构造函数-赋值操作符重载-默认构造函数<代码解析>
查看>>
android 中 viewpager 滑动的指示器
查看>>
leetcode -- Binary Tree Preorder Traversal
查看>>
Matlab使用难点记忆
查看>>
ios相关手册、图表等综合
查看>>
产品需求文档写作方法(三)用例文档(UML用例图、流程图)
查看>>
关于JavaScript代码的执行效率总结
查看>>
iOS 基础入门--Bull' Eye 小游戏 
查看>>
IAR USING PRE- AND POST-BUILD ACTIONS
查看>>
C# and android
查看>>
java 笔记(1)-—— JVM基础,内存数据,内存释放,垃圾回收,即时编译技术JIT,高精度类型...
查看>>
Backup--备份相关的信息查看及小技巧
查看>>
(原创)发布一个c++11开发的轻量级的并行Task库TaskCpp
查看>>
signal.h中的宏定义SIG_DFL及SIG_IGN
查看>>