[CCPC2019 哈尔滨] A. Artful Paintings - 差分约束,最短路
Description
给 \(N\) 个格子区间涂色,有两类限制条件
- 区间 \([L,R]\) 内至少 \(K\) 个
- 区间 \([L,R]\) 外至少 \(K\) 个
求最少要涂多少个格子
Solution
显然有单调性,所以二分
当限定了总个数后,差分约束来判定可行性
直接写bellman-ford就可以
训练时候忘记建 \(d[i+1]-d[i] \ge 0\) 这条边
#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 3005;
int dist[MAXN];
struct Edge {
int u,v,cost;
Edge(int _u=0,int _v=0,int _cost=0):u(_u),v(_v),cost(_cost){};
};
vector <Edge> E;
bool bellman_ford(int start,int n) {
for(int i=1;i<=n;i++) {
dist[i] = INF;
}
dist[start]=0;
for(int i=1;i<n;i++) {
bool flag=false;
for(int j=0;j<E.size();j++) {
int u=E[j].u;
int v=E[j].v;
int cost=E[j].cost;
if(dist[v]>dist[u]+cost) {
dist[v]=dist[u]+cost;
flag=true;
}
}
if(!flag) return true;
}
for(int j=0;j<E.size();j++) {
if(dist[E[j].v] > dist[E[j].u] + E[j].cost) return false;
}
return true;
}
int T,n,m1,m2;
struct Item {
int l,r,k;
} r1[3005],r2[3005];
int main() {
ios::sync_with_stdio(false);
cin>>T;
while(T--) {
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++) cin>>r1[i].l>>r1[i].r>>r1[i].k;
for(int i=1;i<=m2;i++) cin>>r2[i].l>>r2[i].r>>r2[i].k;
int L=0,R=n;
while(R>L) {
int mid=(L+R)/2;
//cout<<"checking "<<mid<<endl;
E.clear();
for(int i=1;i<=n;i++)
E.push_back(Edge(i,i+1,1)),
E.push_back(Edge(i+1,i,0));
for(int i=1;i<=m1;i++) {
E.push_back(Edge(r1[i].r+1,r1[i].l,-r1[i].k));
}
for(int i=1;i<=m2;i++) {
E.push_back(Edge(r2[i].l,r2[i].r+1,mid-r2[i].k));
}
E.push_back(Edge(1,n+1,mid));
E.push_back(Edge(n+1,1,-mid));
//for(int i=0;i<E.size();i++) cout<<E[i].u<<" "<<E[i].v<<" "<<E[i].cost<<endl;
if(bellman_ford(1,n+1)) R=mid;
else L=mid+1;
}
cout<<L<<endl;
}
}
[CCPC2019 哈尔滨] A. Artful Paintings - 差分约束,最短路的更多相关文章
- POJ 3159 Candies(差分约束+最短路)题解
题意:给a b c要求,b拿的比a拿的多但是不超过c,问你所有人最多差多少 思路:在最短路专题应该能看出来是差分约束,条件是b - a <= c,也就是满足b <= a + c,和spfa ...
- POJ 3169 Layout(差分约束+最短路)题解
题意:有一串数字1~n,按顺序排序,给两种要求,一是给定u,v保证pos[v] - pos[u] <= w:二是给定u,v保证pos[v] - pos[u] >= w.求pos[n] - ...
- Layout---poj3169(差分约束+最短路spfa)
题目链接:http://poj.org/problem?id=3169 有n头牛站成一排 在他们之间有一些牛的关系比较好,所以彼此之间的距离不超过一定距离:也有一些关系不好的牛,希望彼此之间的距离大于 ...
- poj3159 差分约束 spfa
//Accepted 2692 KB 1282 ms //差分约束 -->最短路 //TLE到死,加了输入挂,手写queue #include <cstdio> #include & ...
- Candies-POJ3159差分约束
Time Limit: 1500MS Memory Limit: 131072K Description During the kindergarten days, flymouse was the ...
- ZOJ 2770火烧连营——差分约束
偶尔做了一下差分约束. 题目大意:给出n个军营,每个军营最多有ci个士兵,且[ai,bi]之间至少有ki个士兵,问最少有多少士兵. ---------------------------------- ...
- POJ 2983 Is the Information Reliable? 差分约束
裸差分约束. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #i ...
- 2014 Super Training #6 B Launching the Spacecraft --差分约束
原题:ZOJ 3668 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3668 典型差分约束题. 将sum[0] ~ sum ...
- POJ 1364 King --差分约束第一题
题意:求给定的一组不等式是否有解,不等式要么是:SUM(Xi) (a<=i<=b) > k (1) 要么是 SUM(Xi) (a<=i<=b) < k (2) 分析 ...
随机推荐
- go语言开发工具sublime text3 + gosublime配置
开始go语言开发时,网上google了下go的开发工具,大都推荐 sublime text3+gosublime.但是实际操作中gosublime不能直接安装,需要自己手动安装.将自己的安装过程整理一 ...
- 有多少人在面试时,被Java 如何线程间通讯,问哭了?
正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点: thread.join(), object. ...
- mysql第五课
修改表中一行或多行数据: SELECT*FROM student;+----+------+------+| id | name | ban |+----+------+------+| 1 | ...
- java控制台模式控制光标及字符颜色
System.out.println("\033[47;31mhello world\033[5m"); 47是字背景颜色, 31是字体的颜色, hello world是字符串. ...
- Luogu2040 | 打开所有的灯 (广搜+状压)
题目背景 pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz... 题目描述 这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的 ...
- Vue项目中实现tab栏和步骤条的数据联动
也就是tab栏切换步骤条随之变化 <template> <div> <!-- 面包屑导航 --> <el-breadcrumb sepa ...
- PHP中根据二维数组中某个字段实现排序
想要实现二维数组中根据某个字段排序,一般可以通过数组循环对比的方式实现.这里介绍一种更简单的方法,直接通过PHP函数实现.array_multisort() :可以用来一次对多个数组进行排序,或者根据 ...
- MySQL数据库优化(一)
1.1.1. 慢查询日志当查询超过一定的时间没有返回结果的时候,才会记录到慢查询日志中.默认不开启.采样的时候手工开启.可以帮助我们找出执行慢的 SQL 语句查看慢 SQL 日志是否启用(on 表示启 ...
- php 爬虫采集
概述 现在爬虫技术算是一个普遍的技术了,各个语言的爬虫百家争鸣,但是根据笔者自己的感觉还是python是主流.爬虫涉及到太多的东西,笔者并不是专业的爬虫工程师,只不过个人兴趣分享一下.由于笔者是php ...
- 倍加福r2000激光驱动安装及使用
第一次完成激光的驱动安装和激光数据的采集,遇到很多问题,最后一一解决,现在记录下来,方便后面給机器人安装激光使用 激光的了解 (1)激光型号:OMD30M-R2000(30M表示30m) (2)参考手 ...