「CF559E」 Gerald and Path

为啥我现在做啥题都在想网络流啊

考虑 \(\texttt{DP}\)。

容易想到状态应该包含当前枚举了前 \(i\) 条线段,且第 \(i\) 条线段的方向。

然后你会发现计算贡献并不方便,因为你新加一条线段并不能非常方便的算出它对答案的贡献。

于是我们考虑先对线段端点排序,再考虑储存当前最靠右的线段端点位置,这样新加一条线段的贡献可能会更好计算。

然后你发现还是有特殊情况,有可能你新加的这一条线段不仅两端有贡献,中间也有贡献,你觉得很烦。

图大概长这样

然后你发现事实上 \(b\) 线段和 \(c\) 线段可以合并看成实际上只有一条线段,即端点在 \(c\) 线段右边的线段若被完全包含就不管,能合并就合并掉了,问题就转变成只有两端有贡献了。

所以状态为 \(f_{i,j,0/1}\) 表示前 \(i\) 条线段,最右端点为 \(j\),第 \(i\) 条线段的方向为左/右的答案。

转移即可,注意上面说到的类似于合并线段的问题即可。时间复杂度为 \(O(n^3)\)。

/*---Author:HenryHuang---*/
/*---Never Settle---*/
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e2+5;
pair<int,int> seg[maxn];
int f[maxn][maxn][2];
int ans;
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n;cin>>n;
for(int i=1;i<=n;++i) cin>>seg[i].first>>seg[i].second;
sort(seg+1,seg+n+1);seg[0].first=-(1<<30);
for(int i=0;i<=n;++i){
for(int j=0;j<=i;++j){
for(int k=0;k<2;++k){
ans=max(ans,f[i][j][k]);
int nr=seg[j].first+seg[j].second*k,mx=-(1<<30),x=0,y=0;
for(int l=i+1;l<=n;++l){
for(int m=0;m<2;++m){
int tr=seg[l].first+seg[l].second*m;
if(tr>mx) mx=tr,x=l,y=m;
f[l][x][y]=max(f[l][x][y],f[i][j][k]+mx-tr+min(seg[l].second,tr-nr));
}
}
}
}
}
cout<<ans<<'\n';
return 0;
}

「CF559E」 Gerald and Path的更多相关文章

  1. 零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术

    原文:零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术 本章所介绍的是便利且快速的内建工具Clone ? 本章所介绍的是便利且 ...

  2. 「LOJ#10056」「一本通 2.3 练习 5」The XOR-longest Path (Trie

    #10056. 「一本通 2.3 练习 5」The XOR-longest Path 题目描述 原题来自:POJ 3764 给定一棵 nnn 个点的带权树,求树上最长的异或和路径. 输入格式 第一行一 ...

  3. 「Python」socket指南

    开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...

  4. 【微信小程序】开发实战 之 「配置项」与「逻辑层」

    微信小程序作为微信生态重要的一环,在实际生活.工作.商业中的应用越来越广泛.想学习微信小程序开发的朋友也越来越多,本文将在小程序框架的基础上就微信小程序项目开发所必需的基础知识及语法特点进行了详细总结 ...

  5. 「翻译」Unity中的AssetBundle详解(一)

    AssetBundles AssetBundle是一个存档文件,其中包含平台在运行时加载的特定资产(模型,纹理,预制,音频剪辑,甚至整个场景).AssetBundles可以表示彼此之间的依赖关系;例如 ...

  6. 零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II

    原文:零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II 本章将延续上一章的范例,步骤解析. 本章将延续上一章的范例,步骤解析 ...

  7. 零元学Expression Blend 4 - Chapter 13 用实例了解布局容器系列-「Pathlistbox」I

    原文:零元学Expression Blend 4 - Chapter 13 用实例了解布局容器系列-「Pathlistbox」I 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局 ...

  8. 「题解」「美团 CodeM 资格赛」跳格子

    目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...

  9. 「题解」「HNOI2013」切糕

    文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...

随机推荐

  1. Unity 2018.3.0f 版本用C#编程启动VS时出现"Visual Studio 2010 Shell 无效的许可证数据"的解决办法

    C#编程时,启动VS出现的问题如图: 网上有提到用更改注册表的方式,亲测效果未发生改变,在不确定修改后效果如何时,尽量先将原有的数据备份下来: 本文介绍楼主用另外一种方式解决的: 由于脚本系统默认启动 ...

  2. 云ERP真的已经玩不转了吗?

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 注:以下云ERP特指Saas ERP,非指ERP系统部署在云端. 不得不说,如今市场对传统ERP的接受度要远比云ERP高得多,95%的中大型 ...

  3. Docker_Swarm集群系统

    Docker_Swarm集群系统 一.Docker Swarm 介绍 实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行.然而,面对 Kubernete ...

  4. YOLOv3和YOLOv4长篇核心综述(上)

    YOLOv3和YOLOv4长篇核心综述(上) 对目标检测算法会经常使用和关注,比如Yolov3.Yolov4算法. 实际项目进行目标检测任务,比如人脸识别.多目标追踪.REID.客流统计等项目.因此目 ...

  5. Usb-type-C端口实现的挑战与设计方案

    Usb-type-C端口实现的挑战与设计方案 USB Type-C port implementation challenges and design solutions USB from 1.1 t ...

  6. springboot2.x整合tkmapper

    springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent> <artifactId>spring-boo ...

  7. 密码学系列之:feistel cipher

    密码学系列之:feistel cipher 简介 feistel cipher也叫做Luby–Rackoff分组密码,是用来构建分组加密算法的对称结构.它是由德籍密码学家Horst Feistel在I ...

  8. .NET平台系列27:在 Linux 上安装 .NET Core/.NET5/.NET6

    系列目录     [已更新最新开发文章,点击查看详细] .NET 在不同的 Linux 发行版上可用. 大多数 Linux 平台和发行版每年都有一个主要版本,并提供用于安装 .NET 的包管理器. 本 ...

  9. 如何避免Nginx将url decode

    灵感来自:https://my.oschina.net/jastme/blog/528541 这是最近玩微服务架构遇到的一个情况,因为Spring Boot 1.5的网关不支持websocket的转发 ...

  10. Luat Inside | 致敬经典,使用Air724UG制作简易贪吃蛇

    作者简介: 打盹的消防车--活跃于Luat社群的新生代全能开发者,东北小伙儿爽朗幽默.好学敏思,更是实力行动派.幼年曾手握火红炽铁而后全然无恙,堪称魔幻经历:如今热衷于各类嵌入式软硬件研究,快意物联江 ...