P1645 序列

Portal.

差分约束。

限制条件可以转化成不等关系。设 s i s_i si 表示 i i i 的前缀和,显然有 s R − s L − 1 ≥ C s_R-s_{L-1}\geq C sR−sL−1≥C。又因为每个相邻的前缀和至多差 1 1 1 至少差 0 0 0,即 0 ≤ s R − s R − 1 ≤ 1 0\leq s_R-s_{R-1}\leq 1 0≤sR−sR−1≤1,所以有总式:
{ s R − s L − 1 ≥ C s R − s R − 1 ≥ − 1 s R − s R − 1 ≥ 0 \begin{cases} s_R-s_{L-1}\geq C\\ s_R-s_{R-1}\geq -1\\ s_R-s_{R-1}\geq 0 \end{cases} ⎩ ⎨ ⎧sR−sL−1≥CsR−sR−1≥−1sR−sR−1≥0

直接差分约束跑最长路即可。

注意最后的终点不是 N N N,而是 R max ⁡ R_{\max} Rmax。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int maxn=3e4+5;
int head[maxn],cnt,dis[maxn];
struct edge{int to,nxt,w;}e[maxn];
bool vis[maxn];

void add(int x,int y,int z){e[++cnt]={y,head[x],z},head[x]=cnt;}

void spfa(int s)
{
	queue<int> q;
	q.push(s),dis[s]=0,vis[s]=1;
	while(!q.empty())
	{
		int x=q.front();q.pop();vis[x]=0;
		for(int i=head[x];i;i=e[i].nxt)
			if(dis[e[i].to]<dis[x]+e[i].w)
			{
				dis[e[i].to]=dis[x]+e[i].w;
				if(!vis[e[i].to]) q.push(e[i].to),vis[e[i].to]=1;
			}
	}
}

signed main()
{
	int N;cin>>N;
	int mxr=N;
	for(int i=1,L,R,C;i<=N;i++) cin>>L>>R>>C,add(L-1,R,C),mxr=max(mxr,R);
	for(int i=1;i<=mxr;i++) add(i,i-1,-1),add(i-1,i,0);
	for(int i=1;i<=mxr;i++) dis[i]=-INT_MAX;
	spfa(0);
	cout<<dis[mxr];
	return 0;
}
相关推荐
earthzhang202115 小时前
【2051】【例3.1】偶数
开发语言·数据结构·算法·青少年编程·图论
apcipot_rain17 小时前
CSP集训错题集 第八周 主题:基础图论
算法·图论
天选之女wow17 小时前
【代码随想录算法训练营——Day57(Day56周日休息)】图论——53.寻宝
算法·图论
极客数模1 天前
2025年(第六届)“大湾区杯”粤港澳金融数学建模竞赛准备!严格遵循要求,拿下大奖!
大数据·python·数学建模·金融·分类·图论·boosting
岑梓铭1 天前
《考研408数据结构》第七章(6.1~6.3图的概念、存储方式、深/广度遍历)复习笔记
数据结构·笔记·考研·算法·图论·408·ds
天选之女wow2 天前
【代码随想录算法训练营——Day53】图论——110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
算法·深度优先·图论
武子康2 天前
Java-165 Neo4j 图论详解 欧拉路径与欧拉回路 10 分钟跑通:Python NetworkX 判定实战
java·数据库·性能优化·系统架构·nosql·neo4j·图论
极客数模3 天前
【浅析赛题,一等奖水平】思路模型数据相关资料!2025 年“大湾区杯”粤港澳金融数学建模竞赛B 题 稳定币的综合评价与发展分析~
大数据·算法·数学建模·金融·数据挖掘·图论·1024程序员节
rgb2gray3 天前
共享自行车与电动共享自行车使用中建成环境影响的对比研究:基于合肥数据的时空机器学习分析
人工智能·机器学习·图论·xgboost·shap·gtwr·时空机器学习
天选之女wow3 天前
【代码随想录算法训练营——Day50(Day49周日休息)】图论——98.所有可达路径
算法·图论