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;
}
}

最新文章

  1. 【leetcode❤python】 278. First Bad Version
  2. AngularJS-chapter1-2-四大特性
  3. 一个Activity掌握Android5.0新控件 (转)
  4. HDU 4503 湫湫系列故事——植树节(单色三角形)
  5. mac环境下手动卸载mysql
  6. SU suamp命令学习
  7. SmartWeatherAPI_Lite_WebAPI C# 获取key加密
  8. lintcode:最大子正方形
  9. MVC3中的路由系统(Routes)
  10. append
  11. AIX采用LV创ASM磁盘组
  12. Spring MVC之RequestMapping
  13. 关于transform的3D变形函数
  14. nginx的下载、编译安装和启动
  15. C语言 - 栈和单链表的实现
  16. pandas聚合aggregate
  17. NVIDIA GRID 和 NICE DCV 技术用于实现 Linux 和 Windows&#174; 图形加速虚拟桌面
  18. ant design table column 设置width不生效解决方案
  19. java 格式化输出 printf 总结
  20. svmrank 的误差惩罚因子c选择 经验

热门文章

  1. C# Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0..65535)
  2. Android实战项目——家庭记账本(二)
  3. 大数据才是未来,Oracle、SQL Server成昨日黄花?
  4. VSCode常用插件之ESLint使用
  5. Intel 8086 标志寄存器及JCC指令表
  6. K8S 概述
  7. MY_0001:添加命令到自定义工具栏
  8. C# WPF 时钟动画(1/2)
  9. .net core3.0 webapi搭建(一)
  10. 剑指offer-面试题10-斐波那契数列-递归循环