2025-11-14 ZYZ28-NOIP模拟赛-Round6 hetao1733837的record

news/2025/11/14 15:55:39/文章来源:https://www.cnblogs.com/hetao1733837/p/19222399

2025-11-14 ZYZ28-NOIP模拟赛-Round6 hetao1733837的record

2025-11-14 ZYZ28-NOIP模拟赛-Round6 hetao1733837的record

比赛链接:ZYZ28-NOIP模拟赛-Round6

比赛背景:无

A.teleport

提交链接:teleport

题面

给定一个$N$个节点(节点有对应坐标),$M$条边的带权无向联通图,此外,从点$u$到点$v$不仅可以通过边,也可以支付$\min(|x_u-x_v|,|y_u-y_v|)$来到达。问从$1$号节点出发的单源最短路。(不知道叙述的到不到位)。

1

分析

观察发现,强行$O(n^2)$建图是无法通过的,考虑线段树优化建图……我并不会。考场上发现对于$u(x_u,y_u)$和$v(x_v,y_v)$之间通过点之间瞬移较为优的情况是在以两者为左下角和右上角的矩形中走出一个凸包?个人感觉比较像,可能是错的,但是理解起来更好受。那么,我们只需要对于$x$和$y$分别排序,然后统计相邻节点即可(就差这一步,我好烫)。最后,跑一遍$Dijkstra$结束!

正解

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 200005;
int n, m;
struct node{int x, y, id;
}pos[N];
bool cmp1(node a, node b){return a.x < b.x;
} 
bool cmp2(node a, node b){return a.y < b.y;
}
vector<pair<int, int>> e[N];
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
int d[N];
bool vis[N];
void dijkstra(int S){for (int i = 1; i <= n; i++)d[i] = 0x3f3f3f3f3f3f3f3f;memset(vis, 0, sizeof(vis));d[S] = 0;q.push({d[S], S});while (!q.empty()){auto o = q.top();int l = o.first, u = o.second;q.pop();if (vis[u])continue;for (auto o : e[u]){int v = o.first, w = o.second;if (d[v] > d[u] + w){d[v] = d[u] + w;q.push({d[v], v});}}}
}
signed main(){freopen("teleport.in", "r", stdin);freopen("teleport.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m;bool flag = 1;for (int i = 1; i <= n; i++){cin >> pos[i].x >> pos[i].y;if (pos[i].x != pos[i].y)flag = 0;pos[i].id = i;}for (int i = 1; i <= m; i++){int u, v, w;cin >> u >> v >> w;e[u].push_back({v, w});e[v].push_back({u, w});}sort(pos + 1, pos + n + 1, cmp1);for (int i = 1; i < n; i++){e[pos[i].id].push_back({pos[i + 1].id, abs(pos[i].x - pos[i + 1].x)});e[pos[i + 1].id].push_back({pos[i].id, abs(pos[i].x - pos[i + 1].x)});}sort(pos + 1, pos + n + 1, cmp2);for (int i = 1; i < n; i++){e[pos[i].id].push_back({pos[i + 1].id, abs(pos[i].y - pos[i + 1].y)});e[pos[i + 1].id].push_back({pos[i].id, abs(pos[i].y - pos[i + 1].y)});}dijkstra(1);for (int i = 2; i <= n; i++)cout << d[i] << " ";
}

B.permutation

提交链接:permutation

题面

2

分析

显然,我们在考场上尽全力推出了式子,但是适用范围很小,正解状压$DP$我不想多说,但是,AeeE5x的组合数学令我很感兴趣,现在就去问。(14点55分)发现他在睡觉,那先研究状压$DP$。

方法一:状压$DP$

$1\le \frac{n}{k}\le10$是突破口,我也意识到了。(14点56分)他醒了。

考虑设$f_{i,j,k}$表示当前是第$i$位,这十个数的出现情况状压之后是$j$,最后一个(如果是这10个之中的)是哪一个。

转移枚举下一位放谁即可。注意对于不是关键的数字,可以认为是1,然后后期再加上这部分的方案数。

复杂度$O(n\times 2^{10}\times 11^2)$

还可以滚动数组优化,不过没必要。

方法二:组合数学+二项式定理

设存在$tmp$个$k$的倍数。

设$f_i$表示钦定$i$个数互不相邻剩余随便放,固定$n-tmp$个数,相当于插板,还有剩下的全排列,得出式子$f_i=fac_{n-tmp}\times \dbinom{n-tmp+1}{i}$。但是,并不完整,上午我们也意识到了$\gcd(2k,4k)=2k$,像这样的可以放在一起,那么,会出现诸如$f_5+2f_4+f_3$的式子,他们的系数满足杨辉三角,这样统计下来 ,就可以过了。

正解

方法二

#include <bits/stdc++.h>
#define int long long
#define mod 998244353
using namespace std;
const int N = 3005;
int fac[N], fac_inv[N];
int calc(int n, int m){return fac[n] * fac_inv[n - m] % mod * fac_inv[m] % mod; 
}
int qpow(int a, int b){int res = 1;while (b){if (b & 1)res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}
int n, k;
int d[25], gcd[25][25];
signed main(){freopen("permutation.in", "r", stdin);freopen("permutation.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> k;if (n == 1){cout << 1;return 0;}if (k == 1){cout << 0;return 0;}fac[0] = 1;for (int i = 1; i <= n; i++){fac[i] = fac[i - 1] * i % mod;}fac_inv[n] = qpow(fac[n], mod - 2);for (int i = n - 1; i >= 0; i--){fac_inv[i] = fac_inv[i + 1] * (i + 1) % mod;}int tmp = n / k;if (tmp == 1){cout << fac[n];return 0;}int ans = 0;for (int i = 1; i <= tmp; i++)for (int j = 1; j <= tmp; j++)gcd[i][j] = __gcd(i, j);for (int i = 1; i <= tmp; i++)d[i] = i;do{int cnt = 0; //打包插板 for (int i = 2; i <= tmp; i++)cnt += (gcd[d[i - 1]][d[i]] != 1);for (int i = 0; i <= cnt; i++)ans = (ans + fac[n - tmp] * calc(n - tmp + 1, tmp - i) % mod * calc(cnt, i)) % mod;}while (next_permutation(d + 1, d + 1 + tmp));cout << ans;
}

C.simulator

提交链接:simulator

题面

83c224cab3071a65b0b96b416a15a51d

32

分析

场上一眼定出神秘线段树,可是没能写出来。

使用线段树维护区间最小值,区间最小值个数,区间死亡个数,区间总护甲数。遇到护甲、die等情况,直接暴力。

正解

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INT_MAX (int)(1e18)
#define mid (l+r>>1)
const int N=2e5+10; 
int n;
int a[N],b[N];
int trd[N<<2]; //die的人 trd
int trm[N<<2]; //除去die的人最小值 trm
int trc[N<<2]; //除去die的人最小值个数 trc
int trh[N<<2]; //有护盾的人 trh
int lan[N<<2]; //血量更改懒标记 lan 
inline int read(){int t=0,f=1;register char c=getchar();while(c<'0'||c>'9') f=(c=='-')?(-1):(f),c=getchar();while(c>='0'&&c<='9') t=(t<<3)+(t<<1)+(c^48),c=getchar();return t*f;
}
void pushup(int bian){trd[bian]=trd[bian<<1]+trd[bian<<1|1];trh[bian]=trh[bian<<1]+trh[bian<<1|1];trm[bian]=min(trm[bian<<1],trm[bian<<1|1]);if(trm[bian<<1]==trm[bian<<1|1]) trc[bian]=trc[bian<<1]+trc[bian<<1|1];else if(trm[bian<<1]>trm[bian<<1|1]) trc[bian]=trc[bian<<1|1];else trc[bian]=trc[bian<<1];
}
void pushdown(int bian){trm[bian<<1]+=lan[bian],trm[bian<<1|1]+=lan[bian],lan[bian<<1]+=lan[bian],lan[bian<<1|1]+=lan[bian],lan[bian]=0;
}
void build(int bian,int l,int r){if(l==r){trd[bian]=0,trm[bian]=a[l],trc[bian]=1;return;}build(bian<<1,l,mid);build(bian<<1|1,mid+1,r);pushup(bian);
}
void update(int bian,int l,int r,int L,int R,int x){if(L<=l&&R>=r&&!trh[bian]&&trm[bian]>=x){trm[bian]-=x,lan[bian]-=x;return;}if(l==r){if(trh[bian]){trh[bian]--;return;}if(trm[bian]<x){trm[bian]=INT_MAX,trd[bian]=1,trh[bian]=0;return;}}pushdown(bian);if(L<=mid) update(bian<<1,l,mid,L,R,x);if(R>mid) update(bian<<1|1,mid+1,r,L,R,x);pushup(bian);
}
void update1(int bian,int l,int r,int L,int R,int x){if(L<=l&&R>=r){trm[bian]+=x,lan[bian]+=x;return;}pushdown(bian);if(L<=mid) update1(bian<<1,l,mid,L,R,x);if(R>mid) update1(bian<<1|1,mid+1,r,L,R,x);pushup(bian);
}
void update2(int bian,int l,int r,int x){if(l==r){if(trd[bian]!=1) trh[bian]++;return;}pushdown(bian);if(x<=mid) update2(bian<<1,l,mid,x);else update2(bian<<1|1,mid+1,r,x);pushup(bian);
}
int query(int bian,int l,int r,int L,int R){if(L<=l&&R>=r) return trd[bian];pushdown(bian);int res=0;if(L<=mid) res+=query(bian<<1,l,mid,L,R);if(R>mid) res+=query(bian<<1|1,mid+1,r,L,R);return res;
}
int query1(int bian,int l,int r,int L,int R){if(L<=l&&R>=r){if(trm[bian]==0) return trc[bian];return 0;}pushdown(bian);int res=0;if(L<=mid) res+=query1(bian<<1,l,mid,L,R);if(R>mid) res+=query1(bian<<1|1,mid+1,r,L,R);return res;
} 
signed main(){freopen("simulator.in","r",stdin);freopen("simulator.out","w",stdout);n=read();for(int i=1;i<=n;i++) a[i]=read();build(1,1,n);int q=read();while(q--){int op=read();if(op==1){int l=read(),r=read(),x=read();update(1,1,n,l,r,x);}else if(op==2){int l=read(),r=read(),x=read();update1(1,1,n,l,r,x);}else if(op==3){int x=read();update2(1,1,n,x);}else if(op==4){int l=read(),r=read();cout<<query(1,1,n,l,r)<<"\n";}else{int l=read(),r=read();cout<<query1(1,1,n,l,r)<<"\n";}} return 0;
}

D.light

提交链接:light

题面

4

分析

8a2a017362151f921da660bcd57aa160

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

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

相关文章

uniapp开发H5避坑指南

1、H5怎么禁用页面整体拖动的弹性效果(bounce效果)?解决:在页面根元素上添加@touchmove.prevent 2、H5怎么获取地理位置经纬度?方案1:使用HTML5原生APInavigator.geolocation.getCurrentPosition(successCallbac…

【连续3届IEEE出版 | 往届均已完成EI检索】第六届智能电网与能源工程国际学术会议(SGEE 2025)

【连续3届IEEE出版 | 往届均已完成EI检索 | 上海海事大学主办-IEEE Fellow 等大咖主讲报告】第六届智能电网与能源工程国际学术会议(SGEE 2025)第六届智能电网与能源工程国际学术会议(SGEE 2025) 2025年11月28-30日…

nginx做tcp代理时的超时时间参数设置和解释

如果你是在配置HTTP代理,可能会更常用到proxy_read_timeout和proxy_send_timeout。而proxy_timeout在TCP/UDP代理中更常见。 总结proxy_connect_timeout:控制连接建立阶段的超时;proxy_timeout:主要用于stream模块…

【往届会后三个月完成EI检索 | IEEE出版】第二届智能机器人与自动控制国际学术会议(IRAC 2025)

【往届会后三个月完成EI检索 | IEEE出版】第二届智能机器人与自动控制国际学术会议(IRAC 2025)第二届智能机器人与自动控制国际学术会议(IRAC 2025) 2025年11月28-30日,中国-湖南省-湘西土家苗族自治州吉首市 截稿…

精准把控VBAT,轻松规避电源设计99%陷阱

电源设计是一个细致而复杂的过程,其中VBAT的精准把控尤为关键。若处理不当,极易陷入各种陷阱。本文将指导您如何精准把控VBAT,从而轻松规避电源设计中高达99%的常见陷阱,让您的设计更加出色。 在物联网开发中,稳定…

RAID(磁盘阵列)技术介绍

RAID(磁盘阵列)技术介绍介绍RAID 使用的技术、类型、重建方式RAID(磁盘阵列)关键技术数据分条技术:把数据分块,分散存放到多个磁盘上,提高读写并行度数据镜像技术:把同一份数据写到多个磁盘,某个盘坏了还能用…

2025年金属保温装饰板最新标杆企业推荐:铝板保温装饰一体板/外墙保温装饰板/金属保温装饰板/浙江欣阳嘉茂控股集团有限公司

随着建筑节能标准持续提升、绿色建筑政策深入推进,以及城市更新与既有建筑外立面改造需求快速增长,保温装饰一体板作为兼具节能、美观与安全性能的新型外墙材料,正加速成为建筑围护系统的重要选择。然而,当前市场产…

Sora2、Nano Banana AI批量生图视频实战,API低价调用和免费批量生成教程

经过这几年Ai模型迭代升级,越来越多好用的模型出现,让电商人和自媒体的人的工作方便多了许多。以前找个美工折腾半天的产品图、文案配图,现在输入几句话就能生成,质量和速度都远超预期。不过实际用起来就会发现,A…

7 款最佳自托管 AI 工具,快速构建业务应用

7 款值得关注的自托管 AI 工具,助你在安全可控的环境中快速搭建具备智能能力的业务系统。原文链接:https://www.nocobase.com/cn/blog/7-self-hosted-ai-tools-build-business-app 过去一年,我们一直在持续关注自托…

2025年果胶裂解酶批发厂家权威推荐榜单:果胶甲酯酶/果胶酶纤维素酶/果胶酶源头厂家精选

在生物制造与食品工业绿色转型的浪潮下,酶制剂作为高效的生物催化剂,其市场需求持续增长。据行业报告显示,全球工业酶制剂市场规模预计将在2025年达到新高度,其中果胶酶类产品因在果汁澄清、植物提取等领域的广泛应…

carl部分书单

carl部分书单货币战争 伟大的博弈 贸易打造的世界 经济学的思维方式 carl 可能的mbti istj or infj

高精度机器人控制的核心——基于 MYD-LT536 开发板的精密运动控制方案

一、背景:机器人迈向“微米级控制时代”随着智能制造和自动化产业的持续升级,工业机器人不再仅仅承担重复搬运,而是被要求在装配、检测、精密加工等高精度场景中完成微米级控制任务。在这些“高精度机器人控制”应用…

鸿蒙应用开发实战:集成农历功能

如何在HarmonyOS应用中实现精准的农历日期计算与显示引言 在现代生活中,农历日期对于许多传统节日、生日纪念具有重要意义。然而,在移动应用开发中,农历功能的集成往往面临算法复杂、数据处理困难等挑战。本文将分享…

解决Linux 下 root用户删除文件提示:Operation not permitted

问题描述用最高权限rm文件,居然报错Operation not permitted。查看权限也没有问题。可想而知有可能文件被保护了。用命令lsattr检查一下就知道。[root@linux root]# lsattr a.txt  ---i---------- a.txt带属性“ i …

2025 最新波纹管厂家推荐榜:隧道 / 双壁 / 打孔 / 防结晶波纹管优质厂家权威甄选双壁波纹管/打孔波纹管/隧道打孔波纹管公司推荐

引言 在全球基础设施建设提质升级的浪潮中,波纹管作为管网系统核心构件,其品质直接决定工程寿命与安全。据国际管道协会(IPA)最新测评数据,市场上仅 32% 的波纹管产品能同时满足环刚度≥SN8、耐腐蚀性达标、使用寿…

百思沐成品卫生间生产厂家,百思沐集成淋浴房生产厂家、 百思沐整体厨房公司排行、装配式厨房工厂排名 、快装式墙板工厂十大推荐榜--南京正标环保科技

百思沐成品卫生间生产厂家,百思沐集成淋浴房生产厂家、 百思沐整体厨房公司排行、装配式厨房工厂排名 、快装式墙板工厂十大推荐榜--南京正标环保科技百思沐成品卫生间生产厂家,百思沐集成淋浴房生产厂家、 百思沐整…

洛谷题单指南-组合数学与计数-P5664 [CSP-S 2019] Emiya 家今天的饭

原题链接:https://www.luogu.com.cn/problem/P5664 题意解读: Emiya 掌握 n 种烹饪方法和 m 种主要食材,用第 i 种烹饪方法和第 j 种食材可做 a[i][j] 道不同的菜。需选择若干道菜(至少 1 道),满足以下要求:每道…

详细介绍:Endnote | word中加载项消失不见,如何处理?

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

0广告投入!一个月访问暴涨200%,复盘我的AI API站做的几波“骚操作”

我的出海经历我从去年底就有出海的打算,为啥?因为入不敷出,没钱了!在出海之前我一直在做小程序产品,但是自从kimi,deepseek,豆包这些免费的Ai大模型上线后,我们这种依靠会员费的小型Ai公司就做不下去了,太卷了…

2025年富氢水素机加盟生产厂家权威推荐榜单:家用富氢水机加盟/富氢水机加盟/智能富氢水机加盟源头厂家精选

在健康意识不断提升的背景下,富氢水素机市场正迎来快速增长。据行业报告显示,2031年全球氢水机市场销售额预计将达到83.5亿元,2025-2031年期间年复合增长率为5.4%。这一数据揭示了健康饮水领域的巨大潜力。 对意向加…