[ZPG TEST 115] 种树【差分约束】
4. 种树
(trees.pas/c/cpp)
【问题描述】
一条街的一边有几座房子。因为环保原因居民想要在路边种些树。路边的地区被分割成块,并被编号为1..n。每个块的大小为一个单位尺寸并最多可种一棵树。每个居民想在门前种些树并指定了三个号码b,e,t。这三个数表示该居民想在b和e之间最少种t棵树。当然,b<=e,居民必须保证在指定地区不能种多于地区被分割成块数的树,即要求t<=e-b+1。允许居民想种树的各自区域可以交叉。出于资金短缺的原因,环保部门请你求出能够满足所有居民的要求,需要种树的最少数量。
【文件输入】
第一行为n,表示区域的个数;
第二行为h,表示房子的数目;
下面h行描述居民的需要:b e t (0<b<=e<=30000,r<=e-b+1) 分别用一个空格分开。
【文件输出】
输出为满足所有要求的最少树的数量。
【样例输入】
9
4
1 4 2
4 6 2
8 9 2
3 5 2
【样例输出】
5
【数据规模】
30%的数据满足0<n<=1000;0<h<=500
100%的数据满足n<=30000;h<=5000
此题乃差分约束裸题,只恨当时不会啊。
令a[i]表示i位置有没有放种树,令s[i]表示a数列的前缀和,则对于题目输入的一系列b,e,t转化为一系列不等式s[e] - s[b - 1] >= t,很显然这就是一个差分约束系统。把不等式写成大于等于的形式,是因为这样子就是求最长路,求最长路得出的结果就是最小的一组解集,求最短路得出的结果就是最大的一组解集,不予证明。注意还有两个条件,对于任意的i,s[i] - s[i - 1] >= 0,s[i - 1] - s[i] >= -1.
#include <cstdio>
#include <cstring> const int maxn = 30005, maxe = 80005; int n, h, t1, t2, t3;
int head[maxn], to[maxe], next[maxe], w[maxe], lb;
int que[maxn], head_, tail, d[maxn];
bool inq[maxn]; inline void ist(int aa, int ss, int ww) {
to[lb] = ss;
next[lb] = head[aa];
head[aa] = lb;
w[lb] = ww;
++lb;
} int main(void) {
freopen("trees.in", "r", stdin);
freopen("trees.out", "w", stdout);
memset(head, -1, sizeof head);
memset(next, -1, sizeof next);
scanf("%d", &n);
scanf("%d", &h);
while (h--) {
scanf("%d%d%d", &t1, &t2, &t3);
ist(t1 - 1, t2, t3);
}
for (int i = 0; i < n; ++i) {
ist(i, i + 1, 0);
ist(i + 1, i, -1);
} memset(d, -0x3c, sizeof d);
que[tail++] = 0;
inq[0] = true;
d[0] = 0;
while (head_ != tail) {
h = que[head_++];
inq[h] = false;
if (head_ == n + 1) {
head_ = 0;
}
for (int j = head[h]; j != -1; j = next[j]) {
if (d[to[j]] < d[h] + w[j]) {
d[to[j]] = d[h] + w[j];
if (!inq[to[j]]) {
inq[to[j]] = true;
que[tail++] = to[j];
if (tail == n + 1) {
tail = 0;
}
}
}
}
}
printf("%d\n", d[n]);
return 0;
}
[ZPG TEST 115] 种树【差分约束】的更多相关文章
- 算法复习——差分约束(ssoi种树)
题目: 题目描述 为了绿化乡村,H 村积极响应号召,开始种树了. H 村里有 n 幢房屋,这些屋子的排列顺序很有特点,在一条直线上.于是方便起见,我们给它们标上 1-n .树就种在房子前面的空地上. ...
- Codevs 1768 种树 3(差分约束)
1768 种树 3 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 为了绿化乡村,H村积极响应号召,开始种树了. H村里有n幢 ...
- P1250 种树(差分约束 / 贪心)
题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1-N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定了三个号码B,E,T ...
- 题解——洛谷P1250 种树(差分约束)
一道看一眼就知道差分约束的题目 但是最短路spfa的时候注意松弛条件是 if(dis[u]+w[i]<dis[v[i]]) dis[v[i]]=dis[u]+w[i]; 不能写成 if(dis[ ...
- 【最短路·差分约束】洛谷P1250
题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1..N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定了三个号码B,E, ...
- 最短路 & 差分约束 总结
一.引例 1.一类不等式组的解 二.最短路 1.Dijkstra 2.图的存储 3.链式前向星 4.Dijkstra + 优先队列 ...
- [hdu4598]二分图判定,差分约束
题意: 给一个图,问能否给每个点分配一个实数值,使得存在一个数实数T,所有点满足:|value(i)| < T 且 u,v之间有边<=> |value(u)-value(v)| &g ...
- Candies-POJ3159差分约束
Time Limit: 1500MS Memory Limit: 131072K Description During the kindergarten days, flymouse was the ...
- poj3159 差分约束 spfa
//Accepted 2692 KB 1282 ms //差分约束 -->最短路 //TLE到死,加了输入挂,手写queue #include <cstdio> #include & ...
随机推荐
- spring mvc 集成freemarker模板
主要使用到的jar 文件:spring mvc +freemarker.jar 第一步:spring mvc 集成 freemarker <!-- 定义跳转的文件的前后缀 ,视图模式配置--&g ...
- Android Studio 经常使用手冊
经常使用小操作 单词选择 显示近期操作 改动的文件 文件查找 操作记录 移动行 查找方法调用处 方法的跟进 显示方法的參数 行的高速操作 多行操作 高速补全完毕 代码提示 变量的高速操作 代码折叠 预 ...
- html5摇一摇代码优化
首先对DeviceMotionEvent进行优化: 去除没用的代码,又一次封装DeviceMotionEven if(window.DeviceMotionEvent) { var speed = 2 ...
- Highways POJ 2485【Prim】
Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...
- python实现接口自动化
一.总述 Postman:功能强大,界面好看响应格式自主选择,缺点支持的协议单一且不能数据分离,比较麻烦的还有不是所有的公司都能上谷歌SoupUI:支持多协议(http\soup\rest等),能实现 ...
- 【转载】How browsers work--Behind the scenes of modern web browsers (前端必读)
浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.com到你看到google主页过程中都发生了什么. 将讨论的浏览器 今天,有五种主流浏览器- ...
- 使用正則表達式的格式化与高亮显示json字符串
使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...
- mount: wrong fs type
# mount -t nfs -o nolock 192.168.1.84:/home/jason/filesys /mnt/nfsmount: wrong fs type, bad option, ...
- [办公应用]让WORD自动显示到四级目录
一般情况下,word的目录默认显示到三级目录.如果需要显示到四级目录,你会怎么操作呢? 只要按下图所示,单击“插入”-“引用”-“索引和目录” 然后单击“目录”选项卡,将“显示级别”处的3改为4即可. ...
- 设置ArcGIS的数据源
我从别的地方拿到一份现成的地图文档(*.mxd),在该服务器上运行得好地地,图文并茂,但用我自己机器的arcMap打开就一片空白,啥都没有. 看左边的各个图层目录,图标上都有个粉红色的惊叹号,醒悟过来 ...