ABC395

news/2025/3/15 20:42:28/文章来源:https://www.cnblogs.com/XOF-0-0/p/18774158

赛时通过:ABC

赛后通过:DEF

D

赛时写了个平衡树,T 飞了。

其实根本没有那么复杂。考虑设一个「位置」的概念,并维护 \(id_i\) 表示鸟 \(i\) 所在的鸟巢的「位置」,\(pos_i\) 表示鸟巢 \(i\) 所在的位置,\(nest_i\) 表示 「位置」\(i\) 的鸟巢。

对于移动操作,令 \(pos_b \to id_a\)

对于交换操作,交换 \(nest_{pos_a},nest_{pos_b}\)\(pos_a,pos_b\)

对于查询操作,输出 \(nest_{id_a}\)

实现
// LUOGU_RID: 208038555
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
using namespace std;const int N=1e6+5;
int n,q;
int pigeon_pos[N],nest_pos[N],pos_nest[N];int main(){ios::sync_with_stdio(0);cin>>n>>q;for(int i=1;i<=n;i++)pigeon_pos[i]=i,nest_pos[i]=i,pos_nest[i]=i;while(q--){int op,a,b;cin>>op>>a;if(op==1){cin>>b;pigeon_pos[a]=nest_pos[b];}else if(op==2){cin>>b;swap(pos_nest[nest_pos[a]],pos_nest[nest_pos[b]]);swap(nest_pos[a],nest_pos[b]);}elsecout<<pos_nest[pigeon_pos[a]]<<'\n';}return 0;
}

反观这个题目,实际上我们暴力的瓶颈就在于交换操作,而此种解法则使用设置中间量的方法,建立鸟与鸟巢之间的「桥梁」,使得我们能够通过交换鸟巢来达到交换两个鸟巢中所有鸟的目的。

E

图论题有特殊要求,考虑建分层图。

应该想到上面这一句,做法就出来了吧。

实现
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
#define int long long
using namespace std;const int N=4e5+5;
int n,m,x;
int dis[N];
bool vis[N];
struct EDGE{int v,w;
};
vector<EDGE> G[N];
struct NODE{int cur,d;bool operator < (const NODE &x) const{return d>x.d;}
};void dijkstra(int s){priority_queue<NODE> pq;memset(dis,0x3f,sizeof dis);pq.push({s,0}),dis[s]=0;while (!pq.empty()) {auto [cur,d]=pq.top();pq.pop();if (vis[cur]) {continue;}vis[cur]=1;for (auto [v,w] : G[cur]) {if (dis[v]>dis[cur]+w) {dis[v]=dis[cur]+w;pq.push({v,dis[v]});}}}
}signed main(){ios::sync_with_stdio(0);cin.tie(0);cin>>n>>m>>x;for(int i=1,u,v;i<=m;i++){cin>>u>>v;G[u].push_back({v,1});G[v+n].push_back({u+n,1});}for(int i=1;i<=n;i++){G[i].push_back({i+n,x});G[i+n].push_back({i,x});}dijkstra(1);cout<<min(dis[n],dis[2*n]);return 0;
}

F

考虑第一个要求,显然我们应该将 \(\min\{u_i+d_i\}\) 作为 \(h\)

考虑第二个要求,实际上我们仅需考虑每个数它前面那个数,若那个数 \(+x\) 比当前数小,就减到前面那个数 \(+x\),否则保持原来的数即可,容易证明这样一定是最优的。

因此,这个题告诉我们:有多个要求,逐个考虑

实现
// LUOGU_RID: 208122656
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
#define int long long
using namespace std;
signed main(){int n,x,sum=0,h=1e18,lastu=1e18,lastd=1e18;cin>>n>>x;for(int i=1,u,d;i<=n;i++)cin>>u>>d,sum+=(u+d),lastu=min(lastu+x,u),lastd=min(lastd+x,d),h=min(h,lastu+lastd);cout<<sum-n*h;return 0;
}

G

不会斯坦纳树。

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

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

相关文章

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp hello_web查看源代码发现有两个文件,访问一下Tips是phpinfo 里面可以看到disable_functions hackme.php中$lapUCm=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%…

使用WLAN接口将温度和相对湿度发送到家庭网络web服务器

在本文中,我想利用WLAN接口,为家庭网络中的web服务器提供温度和相对湿度。但是,我将使用物有所值的DHT20传感器和带有SH1106驱动IC的1.3英寸OLED,以尽量减少重复。 但首先是树莓派Pico W的引脚图,以及树莓派Pico和Pico W的区别:虽然外形尺寸和引脚(很大程度上)保持不变,…

【水】洛谷 P3913 (待续)

今天NaN在刷水题时碰到这么一道题:洛谷P3913 https://www.luogu.com.cn/problem/P3913 代码的思路特别简单:用全部格子数 - 没被車侵占的行数 \(\times\) 列数即可. code void solve() {cin >> n >> k;g = h = n;for (ll i = 1; i <= k; i++){cin >> x …

web77笔记(POST+FFI)

web77 命令执行最后一题,php7.4 FFI,php7.4以上才有 https://www.php.net/manual/zh/ffi.cdef.php https://www.php.cn/php-weizijiaocheng-415807.html $ffi = FFI::cdef("int system(const char *command);");//创建一个system对象 $a=/readflag > 1.txt;//没…

day:22 python函数——介绍及自定义函数运用

一.函数的定义 函数是组织好,可以重复使用,用来实现单一,或者关联功能的代码段 二.pycharm中运用的结构三.函数的优点? a.降低代码的冗余 b.增加代码的复用性,提高开发效率 c.提高程序的拓展性 d.把代码片段放在函数当中 四.定义函数 (1)自定义函数 (一)自定义函数 a.函数格式…

英语单词音标重读符号读法作用

比如explicit,重读的是`后面的第一个元音即i

量子网络操作系统 QNodeOS 资料收集

2025年3月14日,通过科技日报的报道知道了这个量子计算领域的重大突破 —— 全球首个量子网络操作系统 QNodeOS 问世。欧洲的量子互联网联盟(QIA)的研究人员2025年3月12日在《自然》(Nature)杂志上发表了论文 An operating system for executing applications on quantum n…

Typora的基本的一些使用用法

markdown 标题 二级标题 (在最前面两个#号加空格) 三级标题 (在最前面三个#号加空格) 字体 Hello,World!(粗体:两边各两个星号) Hello,World!(斜体:两边各一个星号) Hello,World!(粗体加斜体:两边各三个星号) Hello,World!(删除体:两边各两个波浪号) 引用(大于加…

http--nodejs原生web服务

创建http服务const http = require(node:http) const url = require(node:url)http.createServer((req, res) => {}).listen(98, () => {console.log(server is running on port 98) }) 区分请求方法 例如常见的 POST、GET req表示前端的入参(请求参数)。 res 表示后…

Windows server 中 静默安装SQL SERVER 数据库 命令 参数

这篇文章记录一下自己如何在Windows Server Core上安装和配置SQL Server。 安装之前的检查 安装SQL Server的操作系统要求检查 第一件事是需要仔细检查SQL Server的要求文档,这个文档里详细的列出了目前SQL Server支持的操作系统版本,最重要的一条就是检查当你在使用云上的虚…

(3).工厂方法模式

我们接上一个模式的实例: (1).创建水果接口 IFruit:1 namespace 工厂方法模式2 {3 public interface IFruit4 {5 /// <summary>6 /// 水果的单价7 /// </summary>8 double Amount { get; }9 10 11 /// <s…

nestjs Provider

Nest 实现了 IoC 容器,会从入口模块开始扫描,分析 Module 之间的引用关系,对象之间的依赖关系,自动把 provider 注入到目标对象以上部分只是简写{provide: AppService,useClass: AppService }两种注入方式构造器注入属性注入全局模块一般来说,我们都是在需要导出的模块的m…