差分约束系统,$spfa$。

首先判断无解,若某个约束的$t$大于区间长度,则一定无解。

否则一定有解,可以得到一系列的不等式:

最终区间和大于等于目前的区间和:$S[R]-S[L-1]≥val$,

每一个位置的值小于等于$1$:$S[R]-S[R-1]≤1$,

每一个约束条件:$S[R]-S[L-1]≥t$,

最终是要求$S[n]-S[0]$最小是多少,扔进差分约束系统,跑$S[0]$到$S[n]$的最长路即可。

#include <cstdio>
#include <cmath>
#include <set>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std; int T;
int n,m,k;
int dis[2000],f[2000]; int h[2200000];
int to[2200000];
int val[2200000];
int nx[2200000];
int sz; int a[2000]; int cas=1; void add(int a,int b,int c)
{
to[sz] = b;
val[sz] = c;
nx[sz] = h[a];
h[a] = sz++;
} void spfa()
{
for(int i=0;i<=n;i++) dis[i] = -n-1, f[i] = 0; queue<int>Q; Q.push(0); f[0] = 1; dis[0] =0;
while(!Q.empty())
{
int x =Q.front(); Q.pop(); f[x]=0; for(int i=h[x];i!=-1;i = nx[i])
{
int y = to[i], cost = val[i]; if(dis[x] + cost > dis[y])
{
dis[y] = dis[x] + cost;
if(f[y]==0)
{
f[y] = 1;
Q.push(y);
}
}
}
} } int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&k); for(int i=0;i<=n;i++) h[i]=-1, a[i] = 0;
sz=0; for(int i=1;i<=k;i++)
{
int x; scanf("%d",&x); a[x]=1;
} for(int i=1;i<=n;i++)
{
a[i] = a[i]+a[i-1];
add(i,i-1,-1);
} bool fail=0;
for(int i=1;i<=m;i++)
{
int L,R,t; scanf("%d%d%d",&L,&R,&t);
add(L-1,R,t);
if(R-L+1<t) fail=1;
} if(fail)
{
printf("Case %d: %d\n",cas,-1);
cas++;
} else
{
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
add(i-1,j,a[j] - a[i-1]);
}
} spfa();
printf("Case %d: %d\n",cas,dis[n] - a[n]);
cas++;
} }
return 0;
}

最新文章

  1. xamarin真的是一个鸡肋吗?
  2. js原生实现选项卡功能
  3. 如何解读SQL Server日志(2/3)
  4. 20145330《Java程序设计》课程总结
  5. 【html】:禁止鼠标事件
  6. android Service Activity交互之传递复杂数据类型的远程服务
  7. js鼠标右键操作
  8. tr 替换删除字符
  9. (转)WINDOWS内核对象
  10. 总结的OSM 地图相关的分析
  11. Unity3d的序列帧动画
  12. 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率
  13. linux c编程:初识进程与线程
  14. CentOS7 修改网卡名称为eth0
  15. Schedule Problem spfa 差分约束
  16. C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结
  17. 网页html格式导出Excel.xls
  18. XXS level8
  19. [Windows Azure] Create a Virtual Network in Windows Azure
  20. Vue前端框架面试问题

热门文章

  1. nodejs文件压缩-使用gulp命令(安装过程)
  2. [洛谷P2745] [USACO5.3]窗体面积Window Area
  3. ADO.NET中带参数的Sql语句的陷阱
  4. 【洛谷 P2120】 [ZJOI2007]仓库建设(斜率优化)
  5. dataTables.js 响应式/package-lock.json 作用/eclipse 目录和工作区建立连接/navcat 导出数据库/vscode 快速进入方法
  6. js base64加密解密
  7. 网易android开发面试题及心得
  8. 深入理解Spring系列之十二:@Transactional是如何工作的
  9. JS几个常用的工具函数
  10. [Leetcode] Sum 系列