【UOJ#236】[IOI2016]railroad(欧拉回路,最小生成树)

题面

UOJ

题解

把速度看成点,给定的路段看成边,那么现在就有了若干边,然后现在要补上若干边,以及一条\([inf,\)使得原图存在欧拉回路,那么就变成了求从大往小连边的边长的最小值。

而欧拉回路每个点被来回覆盖的次数左右一定是一样的,假设向右-向左覆盖的次数为\(g_i\),那么如果\(g_i>0\),花费\(1\)的代价向\(i-1\)连边,如果\(g_i>0\),那么则可以不花费代价连边\(i\rightarrow i+1\)。

看起来这样子得到了一个解,实际上欧拉回路还需要满足连通性,再求一遍\(MST\)把图连通就行了。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include"railroad.h"
using namespace std;
#define MAX 400200
#define ll long long
int S[MAX<<2],top,cnt,c[MAX];
int f[MAX];int getf(int x){return x==f[x]?x:f[x]=getf(f[x]);}
struct Line{int u,v,w;}e[MAX];
bool operator<(Line a,Line b){return a.w<b.w;}
long long plan_roller_coaster(vector<int> s,vector<int> t)
{
int n=s.size();ll ans=0;
for(int i=0;i<n;++i)S[++top]=s[i],S[++top]=t[i];
S[++top]=-1e9-100;S[++top]=1e9+100;
sort(&S[1],&S[top+1]);top=unique(&S[1],&S[top+1])-S-1;
for(int &i:s)i=lower_bound(&S[1],&S[top+1],i)-S;
for(int &i:t)i=lower_bound(&S[1],&S[top+1],i)-S;
c[2]=-1;c[top]=1;for(int i=1;i<=top;++i)f[i]=i;
for(int i=0;i<n;++i)c[s[i]+1]++,c[t[i]+1]--;
for(int i=0;i<n;++i)f[getf(s[i])]=getf(t[i]);
for(int i=1;i<=top;++i)c[i]+=c[i-1];
for(int i=2;i<=top;++i)
{
if(c[i]==0)continue;
if(c[i]>0)ans+=1ll*c[i]*(S[i]-S[i-1]);
f[getf(i)]=getf(i-1);
}
for(int i=2;i<top-1;++i)if(getf(i)!=getf(i+1))e[++cnt]=(Line){i,i+1,S[i+1]-S[i]};
sort(&e[1],&e[cnt+1]);
for(int i=1;i<=cnt;++i)
if(getf(e[i].u)!=getf(e[i].v))
f[getf(e[i].u)]=getf(e[i].v),ans+=e[i].w;
return ans;
}

【UOJ#236】[IOI2016]railroad(欧拉回路,最小生成树)的更多相关文章

  1. 【欧拉回路+最小生成树】SD开车@山东2018省队一轮集训day1

    目录 [欧拉回路+最小生成树]SD开车@山东2018省队一轮集训day1 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 SOLUTION CODE [欧拉回路+最小生成树]SD开车@ ...

  2. UOJ #236. 【IOI2016】railroad

    Description Anna 在一个游乐园工作.她负责建造一个新的过山车铁路.她已经设计了影响过山车速度的 nn 个特殊的路段(方便起见标记为 00 到 n−1n−1).现在 Anna 必须要把这 ...

  3. UOJ236 IOI2016 Railroad 差分、欧拉回路、最小生成树

    传送门 将"进入路段时速度\(\leq s_i\)"转换为:"进入路段时速度恰好等于\(s_i\),并且铺设铁轨有加速和减速两种,加速无需代价,减速每\(1 km/h\) ...

  4. [JZOJ 5895] [NOIP2018模拟10.5] 旅游 解题报告 (欧拉回路+最小生成树)

    题目链接: https://jzoj.net/senior/#main/show/5895 题目: 题解: 有一个好像比较显然的性质,就是每条边最多经过两次 那么我们考虑哪些边需要经过两次.我们把需要 ...

  5. P6628-[省选联考 2020 B 卷] 丁香之路【欧拉回路,最小生成树】

    正题 题目链接:https://www.luogu.com.cn/problem/P6628 题目大意 给出\(n\)个点的一张完全无向图,\(i\sim j\)的边权是\(|i-j|\). 然后给出 ...

  6. wawawa8的模板复习计划

    wawawa8的模板复习计划 数据结构 //手写堆 [link][https://www.luogu.org/problemnew/show/P3378] //并查集 [link][https://w ...

  7. 全国青少年信息学奥林匹克分区联赛(N)竞赛大纲

    全国青少年信息学(计算机)奥林匹克分区联赛竞赛大纲 一.初赛内容与要求:(#表示普及组不涉及,以下同) 计算机的基本发展 诞生与发展 特点 在现代社会中的应用 计算机系统的基本组成 计算机的工作原理# ...

  8. UOJ#117. 欧拉回路

    #117. 欧拉回路 题目描述 有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次. 一共两个子任务: 这张图是无向图.(50分) 这张图是有向图.(5 ...

  9. 暑假集训2016day3T1 欧拉回路(UOJ #117欧拉回路)(史上最全的欧拉回路纯无向图/有向图解析)

    原题……可惜不会……真是一只大蒟蒻…… ———————————————————————————————— 有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好 ...

随机推荐

  1. IOS - UTF-8转码问题

    2016.07.06 21:45* 字数 61 阅读 921评论 0喜欢 2 IOS中提供的转码. [utf8str stringByAddingPercentEscapesUsingEncoding ...

  2. openstack-KVM-存储配置

    一.块存储设备 1.存储设备类型 IDE SCSI 软盘 U盘 virtio磁盘(KVM使用类型) 2.查看存储设备 lspci | grep IDE lspci | grep SCSI lspci ...

  3. ES优化

    1.内存优化 在bin/elasticsearch.in.sh中进行配置 修改配置项为尽量大的内存: 1 2 ES_MIN_MEM=8g ES_MAX_MEM=8g 两者最好改成一样的,否则容易引发长 ...

  4. java 8 jvm 内存配置

    jdk8内存参数解析与修改(新的参数) - LikeTech - CSDN博客https://blog.csdn.net/lk7688535/article/details/51767333 Java ...

  5. react的项目坑

    首先在构造页面时 应该将页面的结构分析好. 在处理数据异步时 将数据结构进行完全的简单结构化. 使用redux时 注意返回的数据是深拷贝还是浅拷贝 否则会产生 数组不为空但是没有值的问题 使用自制数据 ...

  6. 47.Majority Element I & II

    Majority Element I 描述 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一. You may assume that the array is non ...

  7. prop与attr

    1.都是获取当前元素某个属性的值 2.当获取多选框的状态时,如果没有选中,此时没有checked属性,用attr获取得到undifien prop得到false. 3.html原生属性用prop获取, ...

  8. python数据结构与算法第十五天【二叉树】

    1.树的特点 (1)每个节点有零个或多个子节点: (2)没有父节点的节点称为根节点: (3)每一个非根节点有且只有一个父节点: (4)除了根节点外,每个子节点可以分为多个不相交的子树: 2.树的种类 ...

  9. C-Lodop设置页面一加载就打印

    C-Lodop由于是服务不是np插件,调用打印语句(print或preview等)时机太早,在页面第一次加载完成后有几百毫秒时间等待WebSocket通讯服务准备完成,在没完成的时候会提示“C-Lod ...

  10. 学习 Spring (十七) Spring 对 AspectJ 的支持 (完结)

    Spring入门篇 学习笔记 @AspectJ 的风格类似纯 java 注解的普通 java 类 Spring 可以使用 AspectJ 来做切入点解析 AOP 的运行时仍旧是纯的 Spring AO ...