2021 Hubei Provincial Collegiate Programming Contest E. Revue

news/2024/11/16 22:45:46/文章来源:https://www.cnblogs.com/gmh77/p/18550020

题目描述

n个人,每个人的初始分数不同(具体分数未知)

有m次已知的Revue(按顺序发生),每次Revue形式为(x,y),意为x打败y,之后x的分变成二者max,y变成min

现在你要按顺序在最后加入w次Revue,要保证 在所有m+w次Revue中删掉任意k(k给出)次Revue后 的 所有初始分数的可能中,1都能获得最大分值

最小化w,当w<=1000时输出方案

n,m,k<=1e6

题解

顶级思维题

实际不需要关心其他的分数,只要考虑max最后能否到1上就行

问题等价于:两个人博弈,人A加入w次操作,之后另一个人B确定max位置,同时尽可能删操作使max到不了1
(你只能决定加操作,max位置、删哪些都决定不了,所以不妨设另一个人B来按最优方式干扰你)

假设max位置在x,B删f[x]次操作就可以阻止max到A,当f[x]<=K时你只要加入K+1-f[x]个(1,x)的Revue就可以使max在x时合法,对每个x加边即可保证所有情况合法

现在问题变成了求f[x],修正/严谨一下f[x]的定义,f[x]表示在当前的Revue序列下,要让max最终留在x的最小删次数(这里的最小是所有初始max位置情况的最小)

那么f[x]初始为0(max就在x),之后每加入一个Revue(x,y)时,对于x来说,多了用f[y]次操作让max留在y,然后利用最后/新加的Revue(x,y)把max移到x,所以f[x]←max(f[x],f[y]);
同时,y如果要把max留在y,那么多了这个Revue(x,y)必删,所以f[y]←f[y]+1

然后做完了,f[x]求出后直接构造就行,还是当f[x]<=K时加K+1-f[x]次Revue
这样当B想初始把max放到合适位置,然后删f[x]次操作后到x时,要额外多删K+1-f[x]次;做不到,所以合法

code

#include <bits/stdc++.h>
#define fo(a,b,c) for (int a=b; a<=c; a++)
#define fd(a,b,c) for (int a=b; a>=c; a--)
#define ll long long
//#define file
using namespace std;const int N=1e6+10;
int n,m,K,T;
int f[N];char ch;
int Read()
{int x=0;ch=getchar();while (!(ch>='0' && ch<='9')) ch=getchar();while (ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return x;
}void solve()
{n=Read(),m=Read(),K=Read();fo(i,1,m){int x,y;x=Read(),y=Read();f[x]=min(f[x],f[y]);++f[y];}ll w=0;fo(i,2,n) if (f[i]<=K) w+=K+1-f[i];printf("%lld\n",w);if (w<=1000){fo(i,2,n)if (f[i]<=K){fo(j,1,K+1-f[i])printf("%d %d\n",1,i);}}
}int main()
{
//	freopen("E.in","r",stdin);
//	#ifdef file
//	freopen("a.out","w",stdout);
//	#endifT=1;//scanf("%d",&T);for (;T;--T) solve();return 0;
}

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

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

相关文章

AtCoder Beginner Contest 380

A - 123233 题意给个\(6\)位数,判断是否是\(1\)个\(1\),\(2\)个\(2\),\(3\)个\(3\)。思路模拟。代码点击查看代码 #include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii;const int mxn = 1e6 + 5;void solve() {st…

数学分析

CH1 集合与映射 函数的定义?函数的定义必须要由映射引出来 CH2 数列极限 CH3 函数极限与连续函数 CH4 微分 CH5 微分中值定理及其应用 CH6 不定积分 CH7 定积分 CH8 反常积分

Astro搭建个人博客

大家好,我是Yinph。 今天给大家带来一篇关于如何使用Astro快速搭建个人博客的文章。 直接进入正题: 一、准备工作在Astro挑选一个自己心仪的博客模板 安装nodejs 一个GitHub账号,并建一个仓库 一个Cloudflare账号 一个Netlify账号 最好下载VS Code,方便以后修改博客:::note…

【C++复习】栈-下篇

大家好,这里是不会写开场白的Yinph。 今天我们先来复习一下中缀表达式、前缀表达式和后缀表达式,以及如何用栈来实现它们之间的运算。 一、中缀表达式 ‌‌中缀表达式‌是一种算术或逻辑公式的表示方法,其中操作符位于操作数的中间。这种表示方法符合人们的日常书写习惯,因…

gofiber: 模板:判断if条件

一,代码: 1,controller func (dc *ArticleController) GetArticle(c *fiber.Ctx) error {// 处理获取文章的逻辑article := new(Article)article.Id = 1article.Title = "三国演义金圣叹批本"article.Author = "罗贯中"user:=c.Query("user")m…

starrycan的pwn随笔——ELF文件和延迟绑定机制

一.ELF文件结构 0x01什么是ELF文件 1.linux环境中,二进制可持性文件的类型是ELF(Executable and LinkableFormat)文件。类似windows下的exe 2.elf文件的格式比较简单,我们需要了解的就是elf文件中的各个节、段等概念 3.程序elf的基本信息存在于elf的头部信息中,这些信息包括…

达梦数据库DM管理工具如何浏览数据,用条件筛选数据

前言 大家好,我是小徐啊。达梦数据库是我们一款常用的国产数据库,我之前一直在使用它。用起来和mysql和postgresql比起来,还是差不多的。而且它自带了数据库连接工具DM管理工具,使我们很方便的连接它。 今天,小徐就来介绍下如何用DM管理工具浏览数据,并且用条件去筛选数据…

标注图片怎么导出VOC格式和COCO格式

图片怎么标注参考 https://www.cnblogs.com/minseo/p/18549804下载 从github下载代码,或压缩包# git clone https://github.com/LabelMe/labelme转换 示例文件在以下路径# labelme-main\examples\instance_segmentation目录以及各个目录的用途如下打过标签的图片和json文件放以…

vscode Markdown文件如何使代码超出屏幕可视区域不换行

在编写Markdown文件的表格时,单元格内过长的内容会使得行超出可视区域,Markdown处理方式为单行用多行表示,如下图所示:这样会破坏表格的可读性,利用快捷键Alt+Z,可变为如下形式:使得表格每列对齐以增加可读性

20222325 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 本实践目标是掌握metasploit的用法。 指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容。 (1)前期渗透 ①主机发现(可用Aux中的arp_sweep,search一…

[Linux]gdb基本使用

gdb基本使用 前提 gcc/g++编译出的程序默认是realease版本,要使用gdb调试,首先要在编译的时候加上-g选项。使用readelf -S [程序名]查看可执行文件的节区信息。使用gdb [程序名]:开始调试。q:退出调试。list/l [行号]:从给定的位置显示程序的源代码,每次十行。break/b [行…

美团商家联系电话采集软件团购外卖信息批量提取器

定义目标:明确需要采集的数据,如商家名称、地址、评分、销量等。 分析页面结构:通过浏览器的开发者工具,分析美团团购或外卖页面的HTML结构,找出包含所需数据的标签。 模拟用户请求:使用requests库模拟用户访问美团页面,可能需要处理登录、反爬虫机制(如Cookies、Heade…