【yLOI2018】锦鲤抄
题面
https://www.luogu.org/problem/P5008
题解
为了带入氛围还把$QQ$音乐里的《锦鲤抄》点开听了听。
让我们想想删除的顺序是什么样子的:最优的顺序一定是从拓扑序最大的点倒着删,删到拓扑序最小的点。
其中有入度的强连通分量可以全都删完(最后通过“入度”退回拓扑序小的强连通分量)如果最后一个了,就必须留一个点。
贪心即可。
#include<stack> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 500500 #define M 2000500 #define mod 1000000007 #define ri register intusing namespace std;inline int read() {int ret=0; char ch=getchar();while (ch<'0' || ch>'9') ch=getchar();while (ch>='0' && ch<='9') ret*=10,ret+=(ch-'0'),ch=getchar();return ret; }stack<int> s; vector<int> to[N]; int dfn[N],low[N],a[N],bel[N],id[N]; int n,m,k,u[M],v[M],sc=0,vc=0,ins[N],siz[N];void tarjan(int x) {dfn[x]=low[x]=++sc; s.push(x); ins[x]=1;for (ri i=0;i<to[x].size();i++) {int y=to[x][i];if (!dfn[y]) {tarjan(y);low[x]=min(low[x],low[y]);}else {if (ins[y]) low[x]=min(low[x],dfn[y]);}}if (low[x]==dfn[x]) {++vc;while (1) {int t=s.top(); s.pop(); ins[t]=0;bel[t]=vc;siz[vc]++;if (t==x) break;}} }bool cmp(int x,int y) {return a[x]>a[y]; }int main() {n=read(); m=read(); k=read();for (ri i=1;i<=n;i++) a[i]=read();for (ri i=1;i<=m;i++) {u[i]=read(); v[i]=read();to[u[i]].push_back(v[i]);}for (ri i=1;i<=n;i++) if (!dfn[i]) tarjan(i);for (ri i=1;i<=m;i++) {if (bel[u[i]]!=bel[v[i]]) siz[bel[v[i]]]++;}for (ri i=1;i<=n;i++) id[i]=i;sort(id+1,id+n+1,cmp);int ans=0,cnt=0;for (ri i=1;i<=n;i++) {int cur=id[i];if (siz[bel[cur]]>1) {siz[bel[cur]]--;ans+=a[cur];if (++cnt==k) {printf("%d\n",ans);return 0;}}}printf("%d\n",ans);return 0; }
转载于:https://www.cnblogs.com/shxnb666/p/11437503.html
【yLOI2018】锦鲤抄相关推荐
- [yLOI2018] 锦鲤抄
题目 题目背景 你在尘世中辗转了千百年, 却只让我看你最后一眼. 火光描摹容颜燃尽了时间, 别留我一人,孑然一身,凋零在梦境里面. -- 银临 & 云の泣<锦鲤抄> 本题原名< ...
- 计算机音乐锦鲤抄,锦鲤抄 MIDI File Download :: MidiShow
Introduction 锦鲤抄midi "锦鲤抄" is a MIDI music piece in Classical Music style, played by Acous ...
- P5008-[yLOI2018]锦鲤抄【tarjan】
正题 题目链接:https://www.luogu.com.cn/problem/P5008 题目大意 给出nnn个点mmm条边的一张有向无环图,你每次可以选择一个有入度的点获取其点权然后删除这个点. ...
- 6.20校内考试整理——大美江湖腐草为萤锦鲤抄题解
先安利一下题目作者:一扶苏一 先看第一题: 这道题就是一道简单的模拟题,只要不管一开始的位置,模拟移动与格子对应的触发事件就行了.话不多说,看代码: 1 #include<iostream> ...
- 使用python 定时发送微信信息给喜欢的人
原创 使用python 定时发送微信信息给喜欢的人 2019-11-08 16:34:18 冒牌技术小哥 阅读数 171 文章标签: python 更多 分类专栏: python 版权声明:本文为博主 ...
- 【NOI2022】PV「什么是信息学精神?」
[NOI2022]PV「什么是信息学精神?」 [NOI2022]PV「什么是信息学精神?」_哔哩哔哩_bilibili [最美教师]徐先友老师:用10年带出一支信息学强队 [最美教师]徐先友老师:用1 ...
- 天刀服务器在线人数统计,天刀手游各大区活跃人数统计 神刀削弱后不降反增!...
随着所有玩家达到90级并且新一轮职业调整之后,各项数据也有了改变.另外随着剑荡的临近,各位大佬也开始逐渐转职等待剑荡,我们看看都有哪些变化! 1.前言 等级封存:少侠们在新版本之前最高只能达到90级满 ...
- NOI2019滚粗记
Day -15 期末考完了,爆炸爆炸,就连数学和物理都错了好多傻*错误QwQ 哎呀管他的,NOI我来了! 跑到广附集训来了23333 Day -14 -- -2 做题,听题,哇和一群队爷在一个教室,真 ...
- HTML5CSS3基础:HTML的图片、音频、视频(3)
该篇文章对图片.音频.视频的格式和常用标签使用作了个简单总结,主要还是说明这三者在html中如何使用. 文章目录 历篇文章目录 第四节:HTML的图片.音频.视频 前言 一.图片 1.格式 2.标签 ...
最新文章
- 你现在还在使用刷脸支付吗?不,刷手支付已来!!!不侵犯隐私、秒速支付...
- DataTable 排序
- ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略
- 字段计算器中的功能_Flask实践:计算器
- 全球和国产十大AI芯片
- 我的物联网大学【第13章】:王强的逆袭翻身
- 单片机毕业设计 stm32万能红外遥控器
- “红山开源”创新论坛 | ChinaOSC
- 【DS1302驱动】
- 5736. Single-Threaded CPU
- jenkins,maven--创建自由风格的软件项目任务
- 搭建8086汇编语言学习环境——dosbox
- css中的z-index层级问题
- C:通过三边判断三角形种类
- HP-SuperDome MP收集日志
- 2W 字详解 Redis 集群环境搭建实践
- 5、玩转树莓派音频——打造便携式合成器
- EntityFrameWork数据迁移——暨改变数据库结构的方法
- vscode之 Couldn‘t find a tree builder with the features you requested: lxml. Do you need to install a
- 【编程题练习】牛客-阿里:二叉树(卡特兰数)