当世人 逐渐将英雄遗忘 我最终展露了疯狂 与烧灼许久的欲望 已无人描绘 我的画像

news/2025/11/11 19:28:22/文章来源:https://www.cnblogs.com/chelsyqwq/p/19211375

test37

  • 没有大样例。

  • 小样例无法复制。

  • 没有部分分。

  • 题解几句话。

  • 证明留作作业。

  • 就给个std。

  • 三道图论。

  • 四题都是问最小代价。

  • 交换来的。


均分纸牌

猜测上界是 \(n-1\),所以现在希望每个间隔是经过一次,因为间隔左右的和是一定的,所以这个操作的权值肯定容易确定。考虑会有多少值流过这个间隔,如果非 \(0\) 的话就是 \(i-1\) 达到 \(flow\) 可以流向 \(i\) / \(i\) 达到 \(flow\) 可以流向 \(i-1\)。因为要字典序最优,那么贪心操作可以操作的最好的地方即可,显然总有点可以操作,并且操作之后这个间隔未来无用。

#pragma GCC optimize(1,2,3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)using namespace std;const int N=300005;int n, a[N], s[N], ave, L[N], R[N], ans;
priority_queue<int,vector<int>,greater<int> > q;signed main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n;up(i,1,n) cin >> a[i], s[i]=s[i-1]+a[i];ave=s[n]/n;up(i,1,n-1) {int flow=s[i]-ave*i;if(flow) ++ans;if(flow>0) R[i]=flow; else L[i+1]=-flow;}cout << ans << '\n';up(i,1,n) if(L[i]&&a[i]>=L[i]||R[i]&&a[i]>=R[i]) q.push(i);while(q.size()) {int i=q.top();q.pop();if(L[i]&&a[i]>=L[i]) {cout << i << ' ' << i-1 << ' ' << L[i] << '\n';a[i]-=L[i], a[i-1]+=L[i], L[i]=0;if(R[i]&&a[i]>=R[i]) q.push(i);if(L[i-1]&&a[i-1]>=L[i-1]||R[i-1]&&a[i-1]>=R[i-1]) q.push(i-1);}else if(R[i]&&a[i]>=R[i]) {cout << i << ' ' << i+1 << ' ' << R[i] << '\n';a[i]-=R[i], a[i+1]+=R[i], R[i]=0;if(L[i+1]&&a[i+1]>=L[i+1]||R[i+1]&&a[i+1]>=R[i+1]) q.push(i+1);}}return 0;
}

吞噬变异

转移是 \(p_c=\min\{p_c,p_a+p_b\}\),我们现在要找一个复杂度正确的松弛顺序。

此时 \(p_u=\min\{p_i\}\)\(p_u\) 肯定被确定了,我们希望更新掉 \(a/b=u\) 的贡献然后删除(或者说未来不考虑)\(u\),好像不能直接删,因为可能会有 \((a,b,c)\) 需要 \((p,q,b)\) 的前置,虽然我们不好动态松弛掉 \(p_u\) 的所有贡献,但是按照顺序确定好像可以诶,就是你考虑拿 \(p_u\) 作为 \(a/b\) 另一个 \(b/a\) 用比 \(p_u\) 更小的 \(v\),然后去松弛,不过讲真的我感觉我对这个理解不够透彻,感觉是合并的使用是一个 DAG 这样可以扫出来吧。

#pragma GCC optimize(1,2,3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)
#define pii pair<int,int>
#define pb push_back
#define mp make_pair using namespace std;const int N=100005;int n, m, tag[N], dis[N];
vector<pii> to[N];
priority_queue<pii,vector<pii>,greater<pii> > q;signed main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;up(i,1,n) cin >> dis[i];while(m--) {int u, v, w;cin >> u >> v >> w;to[u].pb(mp(v,w));to[v].pb(mp(u,w));}up(i,1,n) q.push(mp(dis[i],i));while(q.size()) {int x=q.top().second;q.pop();if(tag[x]) continue;tag[x]=1;for(pii u:to[x]) {int y=u.first, w=u.second;if(tag[y]&&dis[x]+dis[y]<dis[w]) {dis[w]=dis[x]+dis[y];q.push(mp(dis[w],w));} }}up(i,1,n) cout << dis[i] << ' ';return 0;
}

连线问题

证明留作作业都来了。

你去脑测一个 kruskal 的过程,你可能连到 \(a/b\) 里面的邻边,不然你就要连叉边,那是在你前继连通块的基础上增加的,发现拓展会一直保持连到前后继的形态。所以找到前后继承的边和相邻边扔着跑跑 mst 就好了。

#pragma GCC optimize(1,2,3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define ldb long double
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)using namespace std;const int N=2500005;int n, m, tot, A, B, a[N], b[N], dsu[N];
ldb Ans;
struct node { int x, y; ldb w; } p[N];inline ldb pw(ldb x) { return x*x; }
int get(int x) { return x==dsu[x]?x:dsu[x]=get(dsu[x]); }signed main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m >> A >> B;up(i,1,n) cin >> a[i], a[i]+=a[i-1];up(i,1,m) cin >> b[i], b[i]+=b[i-1];up(i,2,n) p[++tot]=(node){i-1,i,a[i]-a[i-1]};up(i,2,m) p[++tot]=(node){n+i-1,n+i,b[i]-b[i-1]};up(i,1,n) {int l=upper_bound(b+1,b+1+m,a[i])-b-1;int r=lower_bound(b+1,b+1+m,a[i])-b;if(1<=l&&l<=m) p[++tot]=(node){i,n+l,sqrtl(pw(a[i]-b[l])+pw(A-B))};if(1<=r&&r<=m) p[++tot]=(node){i,n+r,sqrtl(pw(a[i]-b[r])+pw(A-B))};}up(i,1,n+m) dsu[i]=i;sort(p+1,p+1+tot,[](node i,node j){return i.w<j.w;});up(i,1,tot) {int x=get(p[i].x), y=get(p[i].y);if(x!=y) Ans+=p[i].w, dsu[x]=y;}cout << fixed << setprecision(2) << (double)Ans << '\n';return 0;
}

走迷宫

晕了,就是按照题意模拟广搜出来,没啥好说的,具体看代码。

#pragma GCC optimize(1,2,3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)
#define x first
#define y second 
#define pii pair<int,int>
#define mp make_pairusing namespace std;const int N=100005, inf=1e9;int n, m;
pii S, a[N];
unordered_map<int,set<int> > X, Y;
unordered_map<int,map<int,int> > p, q; 
queue<pair<pii,int> > qwq;pii query(set<int> &suf,int v) {pii ret=mp(0,0);auto it=suf.lower_bound(v);if(it!=suf.end()) ret.second=*it;if(it!=suf.begin()) ret.first=*--it;return ret;
}void solve(unordered_map<int,set<int> > &X,unordered_map<int,map<int,int> > &p) {for(pair<int,set<int> > stain:X) {int x=stain.x;set<int> now=stain.second;map<int,int> nxt;now.insert(inf);for(int r:now) {int res=inf;while(p[x].size()) {auto it=p[x].begin();if(it->x==r) { p[x].erase(it), nxt[r]=p[x][r]; continue; }if(it->x>r) break;res=min(res,it->second), p[x].erase(it);} if(res<inf) nxt[r-1]=res;}p[x]=nxt; }
}signed main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m >> S.x >> S.y;up(i,1,n) {cin >> a[i].x >> a[i].y;X[a[i].x].insert(a[i].y);Y[a[i].y].insert(a[i].x);}p[S.x][S.y]=1, qwq.push(mp(S,0));q[S.y][S.x]=1, qwq.push(mp(S,1));while(qwq.size()) {int type=qwq.front().y;pii u=qwq.front().x;qwq.pop();if(type==0) {pii sav=query(X[u.x],u.y);int l=sav.first, r=sav.second;if(l&&l+1<u.y&&q[l+1].find(u.x)==q[l+1].end()) {q[l+1][u.x]=p[u.x][u.y]+1;qwq.push(mp(mp(u.x,l+1),1));} if(r&&u.y<r-1&&q[r-1].find(u.x)==q[r-1].end()) {q[r-1][u.x]=p[u.x][u.y]+1;qwq.push(mp(mp(u.x,r-1),1));} }else {pii sav=query(Y[u.y],u.x);int l=sav.first, r=sav.second;if(l&&l+1<u.x&&p[l+1].find(u.y)==p[l+1].end()) {p[l+1][u.y]=q[u.y][u.x]+1;qwq.push(mp(mp(l+1,u.y),0));}if(r&&u.x<r-1&&p[r-1].find(u.y)==p[r-1].end()) {p[r-1][u.y]=q[u.y][u.x]+1;qwq.push(mp(mp(r-1,u.y),0));} }}solve(X,p), solve(Y,q);while(m--) {int x, y, ans=inf;cin >> x >> y;if(mp(x,y)==S) { cout << 0 << '\n'; continue; }if(p[x].find(y)!=p[x].end()) ans=min(ans,p[x][y]);if(q[y].find(x)!=q[y].end()) ans=min(ans,q[y][x]);auto L=p[x].lower_bound(y), R=L; pii u=query(X[x],y); int l=u.first, r=u.second;if(L!=p[x].end()) if(!r||r>L->first) ans=min(ans,L->second);if(L!=p[x].begin()) {--R;if(!l||l<R->first) ans=min(ans,R->second);}L=q[y].lower_bound(x), R=L, u=query(Y[y],x), l=u.first, r=u.second;if(L!=q[y].end()) if(!r||r>L->first) ans=min(ans,L->second);if(L!=q[y].begin()) {--R;if(!l||l<R->first) ans=min(ans,R->second);}if(ans==inf) ans=-1;cout << ans << '\n';}return 0;
}

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

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

相关文章

关于IP、TCP、UDP的校验和计算

1. MAC MAC没有校验和的概念,可能设计者认为L2层不容易出错,就没有设计 2. IP IP的校验和仅校验首部(而不是校验整个IP包),这是出于性能考虑:如果每一跳都要校验全部数据,那对网络的压力太大了,所以IP被设计为…

元叙事提示注入:突破AI安全边界的攻击技术

本文深入探讨元叙事提示注入技术,通过三个实际案例展示如何通过直接与AI系统对话来绕过安全机制,包括Google Gemini后端代码执行、SOC分析应用和GCP云助手的漏洞利用。元叙事提示注入 2025年10月20日 在利用AI应用程…

NOIP 2025 游记

2023 noip 拿了 \(100+20+ε=120+ε\) 分。 2024 noip 拿了 \(55+100+4+20=179\) 分。 我今年能翻盘吗?回望初三一整年,我似乎一点进步都没有呢。失去你 我忘了天空曾经是 蓝色 找不到你 我眼睛才在帽子下 躲着 不是…

FZNCTF2025-PWN-WP

FZNCTF-Langx-PWN-WP fmt 格式化字符串漏洞 int __fastcall main(int argc, const char **argv, const char **envp) {int fd; // [rsp+4h] [rbp-24Ch]char buf[48]; // [rsp+10h] [rbp-240h] BYREFchar format[520]; …

102302138 林楚涵 作业2

🌦️ 第二次爬虫作业实录|天气 + 股票 + 大学榜作业①:在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在数据库。 ① 核心代码与运行截图点击查看代码 import sqlite3, urllib.reques…

如何在 Windows 中使用 Kimi CLI(PowerShell 补充版)

字数 334,阅读大约需 2 分钟如何在 Windows 中使用 Kimi CLI(PowerShell 版)说明:本教程适用于 PowerShell 环境。如需在 WSL (Windows Subsystem for Linux) 中安装,请参考其他相关教程。一、安装 uv(包管理器)…

【计算机网络表格图表解析】网络体系结构、资料链路层、网络层、传输层、应用层、网络安全、故障排查

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

PWM妙用:解锁LED亮度调节与呼吸灯的LuatOS开发之旅

在嵌入式开发的精彩世界里,PWM技术有着举足轻重的地位。本次,我们将聚焦于PWM的经典应用——LED亮度控制及呼吸灯效果的实现。通过LuatOS开发环境,详细展示如何运用PWM功能,让开发者能够迅速掌握这一实用技能,开启…

主子式与顺序主子式

主子式 (Principal Minor)是线性代数中一个与矩阵相关的重要概念。 定义 对于一个nnn cross n 𝑛𝑛的方阵 Abold cap A 𝐀 ,它的 kk 𝑘阶主子式是指从矩阵中选取相同的行号和列号构成的一个 kkk cross k �…

python项目跟练 外星人入侵 01 3个位置

3个位置 1、游戏屏幕大小 2、飞船图片大小 3、飞船在游戏屏幕中位置游戏屏幕大小 # 将屏幕大小设置存到一个单独设置类中 self.screen_width = 1000 # 定义屏幕 宽xx像素 self.screen_height = 800 # 定义屏幕 高xx…

ONES 重磅升级|全新内核,深度可配置,适配复杂业务流

ONES 于近期完成创业十年来最大范围内核代际升级。深度灵活的自定义引擎,完善的开放平台体系,AI 友好的数据交互架构。此次内核升级的首批上层功能已正式发布。 此次 ONES Project 全新升级,围绕工作项信息管理与多…

类的继承

类的继承子类: public class teacher extends stu{}父类 public class stu {public String name="111";public void say(){System.out.println("shuohua");} }使用 public class Main {public st…

CUDA安装注意事项

参考网站:https://blog.csdn.net/weixin_52677672/article/details/135853106?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522f12aadfcb1121e89732052c8440ee6c5%2522%252C%2522scm%2522%253A%252220140…

豆包Seed-Coder编程能力小试

豆包Seed-Coder编程能力小试背景 最近字节发布doubao-seed-code-preview-251028模型面向Agentic编程任务深度优化 - 支持256K长上下文,让模型轻松处理长代码文件、多模块依赖等复杂场景,更好支持端到端自主编程…

数据类型 标识符 键盘录入

数据类型 标识符 键盘录入数据类型 标识符 键盘录入 数据类型 基本数据类型 ![基本数据类型](/Users/eefile/Documents/截屏2025-11-11 17.37.18.png) 代码测试 public class num { public static void main(String[]…

102302145 黄加鸿 数据采集与融合技术作业2

作业2目录作业2作业①1)代码与结果2)心得体会3)Gitee链接作业②1)代码与结果2)心得体会3)Gitee链接作业③1)代码与结果F12调试分析Gif2)心得体会3)Gitee链接作业① 1)代码与结果 中国气象网在之前任务中已经…

详细介绍:Spring Boot

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …