Codeforces Round #712 (Div. 2) E. Travelling Salesman Problem 思维转换

传送门

文章目录

  • 题意:
  • 思路:

题意:

给你nnn个点,从iiijjj的花费是max(ci,aj−ai)max(c_i,a_j-a_i)max(ci,ajai),求从111开始经过每个点再回到111的最小花费。

思路:

首先可以发现我们的起点在哪里是一样的,只需要走出一个环来就行。让后由于花费是max(ci,aj−ai)max(c_i,a_j-a_i)max(ci,ajai),所以我们至少要花费cic_ici,最终的花费一定>=∑i=1nci>=\sum _{i=1} ^n c_i>=i=1nci,所以我们将cic_ici减去,即花费变成max(0,aj−ai−ci)max(0,a_j-a_i-c_i)max(0,ajaici),观察可知当从大的aia_iai到小的aja_jaj的时候,花费一定是000,所以我们按照aaa从小到大排序,这样到最后一个点的时候回退到没有走过的点花费是000,我们只需要确定从111开始走的最小花费即可,也就是让ai+cia_i+c_iai+ci最大,所以对于每个iii,我们都从maxj<i(aj+cj)max_{j<i}(a_j+c_j)maxj<i(aj+cj)转移过来就好啦,不能转移的就相当于没走,当到最后一个点的时候往后免费回退即可。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
PII p[N];
LL ans;int main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d%d",&p[i].X,&p[i].Y),ans+=p[i].Y;sort(p+1,p+1+n);LL mx=p[1].X+p[1].Y;for(int i=2;i<=n;i++){ans+=max(0ll,p[i].X-mx);mx=max(mx,1ll*p[i].X+p[i].Y);}printf("%lld\n",ans);return 0;
}
/**/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDU - 5877 Weak Pair (dfs序+树状数组+离散化)

VJ地址 题意&#xff1a;给一个有根树给你&#xff0c;计算一下满足下列条件的序列对的数目 &#xff08;1&#xff09;u是v的祖先&#xff08;不能是它自己&#xff09; &#xff08;2&#xff09;a[v]*a[u]<k 思路&#xff1a;用DFS序分裂每一条链&#xff0c;使链上的点…

Codeforces Round #614 (Div. 2) D. Aroma‘s Search 暴力 + 思维

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你x0,y0,ax,ay,bx,byx_0,y_0,a_x,a_y,b_x,b_yx0​,y0​,ax​,ay​,bx​,by​&#xff0c;让后根据[ax∗xi−1bx,ay∗yi−1by][a_x*x_{i-1}b_x,a_y*y_{i-1}b_y][ax​∗xi−1​bx​,ay​∗yi−1​by​]构造出…

Insider Dev Tour 2019巡演中国站

Insider Dev Tour 2019全球巡演中国站落下帷幕&#xff0c;在线直播加六大城市会场&#xff0c;作为四十余位讲师的一份子&#xff0c;我在线分享了Microsoft Graph及Microsoft Teams开发平台的内容&#xff0c;很高兴与几千位开发者共同度过了一个特别的星期天&#xff0c;很不…

HDU - 6267 (概论/找规律/递推)

VJ地址 题目大意&#xff1a; 有n个节点 从0-&#xff08;n-1&#xff09;&#xff0c;连边的规律为 即i点的父亲只能是比i小的数&#xff0c;而且是随机的&#xff0c;现在随机选择应该一个节点作为根&#xff0c;求这子树的和的期望是多少。 思路&#xff1a;可以知道总共有…

Educational Codeforces Round 81 (Rated for Div. 2) D. Same GCDs 欧拉函数\莫比乌斯

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给定a,ma,ma,m&#xff0c;求满足gcd(a,m)gcd(ax,m)gcd(a,m)gcd(ax,m)gcd(a,m)gcd(ax,m)的xxx的个数&#xff0c;且0<x<m0<x<m0<x<m。 思路&#xff1a; 由辗转相除法得&#xff1a;gcd…

Microsoft Graph Toolkit 初探

在今年的Build大会上面, Microsoft Graph 产品组公开宣布了一套新的Web组件&#xff0c;Microsoft Graph Toolkit&#xff08;简称mgt&#xff09;&#xff0c;这套组件可以与任何前端开发平台无缝整合&#xff0c;通过几行代码就能实现基于Microsoft Graph的应用&#xff0c;而…

CodeCraft-21 and Codeforces Round #711 (Div. 2) 题解

先上链接CodeCraft-21 and Codeforces Round #711 (Div. 2) A&#xff1a; 从n开始往后找&#xff0c;不出几十个 一定能找到的&#xff0c;所以暴力就好了 void sovle(){cin>>n;while(1){ll kn;ll sum0;while(k) sumk%10,k/10;if(gcd(n,sum)>1) {cout<<n<&…

Educational Codeforces Round 81 (Rated for Div. 2) B. Infinite Prefixes 数学

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你个串sss&#xff0c;让后把它重复无限次得到ttt&#xff0c;定义前缀的价值为cnt0−cnt1cnt_0-cnt_1cnt0​−cnt1​&#xff0c;求ttt的前缀价值为xxx的前缀个数&#xff0c;若有无限多输出−1-1−1。 …

终于等到你!微软正式上线 Windows Terminal 预览版

前一段时间&#xff0c;一直在知乎、技术社区收到技术小伙伴们的终极拷问&#xff1a;微软Build 大会上提到的「6月中旬」要上Windows store 的 Windows Terminal 到底啥时候可以用到呀&#xff1f;有一次&#xff0c;我跑去我给 Windows Terminal 提的某个 issue 里问 Windows…

牛客练习赛76 E 牛牛数数(线性基加二分)

牛客地址 思路&#xff1a;全部组合异或&#xff0c;很容易想到使用线性基&#xff0c;正好线性基中有一个求第k小的用法&#xff0c;那我们可以二分来找 K是第几小的数&#xff0c;然后用总数减去。 #include <iostream> #include <cstdio> #include <fstream…

Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个打乱的排列&#xff0c;每个位置都各有一个价值&#xff0c;让你选择一个分界点&#xff0c;分成p1,p2,...,prp_1,p_2,...,p_rp1​,p2​,...,pr​和pr1,...,pn−1,pnp_{r1},...,p_{n-1},p_{n}pr1​,…

几种设计良好结构以提高.NET性能的方法

写在前面设计良好的系统&#xff0c;除了架构层面的优良设计外&#xff0c;剩下的大部分就在于如何设计良好的代码&#xff0c;.NET提供了很多的类型&#xff0c;这些类型非常灵活&#xff0c;也非常好用&#xff0c;比如List&#xff0c;Dictionary、HashSet、StringBuilder、…

牛客挑战赛47 D Lots of Edges(最短路+递归枚举子集)

牛客挑战赛47 D Lots of Edges 思路&#xff1a;点的权值最多只有&#xff08;1<<17&#xff09;-1(131071) ,那我们可以枚举终点的值来算最短路&#xff0c;每个点能连边的值都是固定的&#xff0c;可以通过递归枚举子集&#xff08;技巧&#xff09;来找&#xff0c;每…

Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给定一个序列aaa&#xff0c;每次拿出来任意一个数(注意每次选的数不同)&#xff0c;让后定义maxmax(a1,a2,...,ai)maxmax(a_1,a_2,...,a_i)maxmax(a1​,a2​,...,ai​)&#xff0c;minmin(a1,a2,...,ai)min…

.NET CORE下最快比较两个文件内容是否相同的方法

最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:项目是.NET CORE,所以使用C#进行编写比较方法文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要使用非缓存的比较方式)不依赖第三方库越快越好为了选出最优的解决方案,我搭建了一个…

牛客挑战赛47 A 一道GCD问题

牛客挑战赛47 A 一道GCD问题 思路参考牛客上的题解&#xff1a; 根据多维的更相减损术得gcd(x,y,z)gcd(x,y−x,z−y)得 gcd(a1k,a2k,a3k…,ank)gcd(a1k,a2-a1,a3-a2…)gcd(a1k,a2k,a3k…,ank)gcd(a1k,a2−a1,a3−a2…) 我们很容易可以求得等式右边的值为g我们很容易可以求得等…

Codeforces Round #715 (Div. 2) D. Binary Literature 构造

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你个nnn和三个长度为n∗2n*2n∗2的串&#xff0c;让你构造一个长度≤n∗3\le n*3≤n∗3的串&#xff0c;使其子序列包含至少两个给定串。 思路&#xff1a; 先考虑如果没有长度限制&#xff0c;那么我们…

[译]试用新的System.Text.Json API

译注尝试新的System.Text.Json API对于.NET Core 3.0&#xff0c;我们 提供了一个名为System.Text.Json的全新命名空间 &#xff0c;支持读取器/写入器&#xff0c;文档对象模型&#xff08;DOM&#xff09;和序列化。在这篇博文中&#xff0c;我告诉你为什么我们建造它&#x…

牛客挑战赛47 C 条件(Floyd bitset优化)

牛客挑战赛47 C 条件 思路&#xff1a;首先我们要两个图&#xff0c;一个是一定能到达的&#xff0c;一个是可能到达的&#xff0c;如果我们使用floyd (n^3)就有可能会超时&#xff0c;因为只要求询问能否到达&#xff0c;所以权值只有0和1&#xff0c;那我们可以使用bitset来…

Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String 序列自动机

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你两个串s,ts,ts,t&#xff0c;每次可以取sss串的一个子序列&#xff0c;问你最少取多少次子序列&#xff0c;将这些子序列拼起来能得到ttt。 思路&#xff1a; 发现我题解里面没写过序列自动机&#xf…