NOIP2024 前集训:多校A层冲刺NOIP2024模拟赛20

news/2024/11/14 12:27:49/文章来源:https://www.cnblogs.com/Charlieljk/p/18542987

前言

image

rk 历程:\(11\to 9\to 8\to 7\),原因是部分人的 T1 假做法被卡(感觉目前这些不二分也不 DP(特指 Hangry 这样的 \(O(n^4)\) DP)都能卡)。

T2 建图建错了(没判谁是父亲也没建双向边)暴力死了,挂了 \(24\)

我是唯一一个打了 T3 启发正解部分分但没有写出正解的人……

T4 部分分都不会,润了。

T1 送信卒

单调性过于显然,所以直接二分答案即可,check 直接写 dijkstra,复杂度 \(O(m\log m\log n)\),因为是 double 所以要写 eps。

点击查看代码
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define sort stable_sort
using namespace std;
const int N=110,M=1e4+10; const double eps=1e-8;
template<typename Tp> inline void read(Tp&x)
{x=0;register bool z=true;register char c=getchar_unlocked();for(;!isdigit(c);c=getchar_unlocked()) if(c=='-') z=0;for(;isdigit(c);c=getchar_unlocked()) x=(x<<1)+(x<<3)+(c^48);x=(z?x:~x+1);
}
template<typename T,typename ...Tp> inline void read(T &x,Tp &...y){read(x);read(y...);}
template<typename Tp> inline void wt(Tp x){if(x>9)wt(x/10);putchar_unlocked((x%10)+'0');}
template<typename Tp> inline void write(Tp x){if(x<0)putchar_unlocked('-'),x=~x+1;wt(x);}
template<typename T,typename ...Tp> inline void write(T x,Tp ...y){write(x);putchar_unlocked(' ');write(y...);}
int n,m,sx,sy,tx,ty,tot,head[M],nxt[M<<2],to[M<<2];
bool w[M<<2],vis[M],a[N][N]; double s,l,r=1e5,mid,dis[M];
struct aa
{int pos; double dis;inline bool operator < (const aa a) const {return dis-a.dis>eps;}
}; priority_queue<aa>q;
inline void add(int x,int y,int z)
{nxt[++tot]=head[x],to[tot]=y,w[tot]=z,head[x]=tot;}
inline int calc(int x,int y) {return (x-1)*m+y;}
inline bool check(int x,int y) {return x>=1&&x<=n&&y>=1&&y<=m&&!a[x][y];}
inline double calc(int x) {return x?mid:1;}
inline bool check()
{fill(dis+1,dis+1+n*m,1e9),fill(vis+1,vis+1+n*m,0);for(q.push({calc(sx,sy),dis[calc(sx,sy)]=0});!q.empty();){int x=q.top().pos; q.pop(); if(vis[x]) continue; vis[x]=1;for(int i=head[x],y;y=to[i];i=nxt[i])if(dis[y]-dis[x]-calc(w[i])>eps)dis[y]=dis[x]+calc(w[i]),q.push({y,dis[y]});}return dis[calc(tx,ty)]-s>=eps;
}
signed main()
{freopen("msg.in","r",stdin),freopen("msg.out","w",stdout);read(n,m,sx,sy,tx,ty);for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) read(a[i][j]);for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(!a[i][j]){if(check(i,j-1)) add(calc(i,j),calc(i,j-1),0);if(check(i,j+1)) add(calc(i,j),calc(i,j+1),0);if(check(i-1,j)) add(calc(i,j),calc(i-1,j),1);if(check(i+1,j)) add(calc(i,j),calc(i+1,j),1);}for(scanf("%lf",&s);r-l>eps;) mid=(l+r)/2.0,check()?r=mid:l=mid;printf("%.3lf",l);
}

T2 共轭树图

对于每一个点钦定一个 \(dep\),那么 \(x\) 在生成树中的深度可以为 \([1,dep_x]\),既可以和与他联通的任意一个祖先连边。

\(f_{x,i}\) 表示点 \(x\) 向上连深度不超过 \(i\) 的祖先的方案数,这本质上是一个前缀和优化,那么有:

\[f_{x,i}=\prod_{y\in son_x}\sum_{j=1}^if_{y,j+1} \]

复杂度 \(O(n^2)\)

点击查看代码
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define sort stable_sort
#define pb push_back
using namespace std;
const int N=3e3+10,P=998244353;
template<typename Tp> inline void read(Tp&x)
{x=0;register bool z=true;register char c=getchar_unlocked();for(;!isdigit(c);c=getchar_unlocked()) if(c=='-') z=0;for(;isdigit(c);c=getchar_unlocked()) x=(x<<1)+(x<<3)+(c^48);x=(z?x:~x+1);
}
template<typename T,typename ...Tp> inline void read(T &x,Tp &...y){read(x);read(y...);}
template<typename Tp> inline void wt(Tp x){if(x>9)wt(x/10);putchar_unlocked((x%10)+'0');}
template<typename Tp> inline void write(Tp x){if(x<0)putchar_unlocked('-'),x=~x+1;wt(x);}
template<typename T,typename ...Tp> inline void write(T x,Tp ...y){write(x);putchar_unlocked(' ');write(y...);}
int n,f[N][N]; ll ans=1; vector<int>e[N];
inline int mod(int x,int y) {return (x+=y)>=P?x-P:x;}
inline void dfs(int x,int dep)
{for(int y:e[x]) dfs(y,dep+1); f[x][1]=1;for(int i=1;i<=dep;f[x][i]=mod(f[x][i],f[x][i-1]),f[x][++i]=1)for(int y:e[x]) f[x][i]=1ll*f[x][i]*f[y][i+1]%P;
}
signed main()
{freopen("reflection.in","r",stdin),freopen("reflection.out","w",stdout);read(n); for(int i=1,x,y;i<n;i++) read(x,y),x<y?e[y].pb(x):e[x].pb(y);dfs(n,0); for(int i:e[n]) (ans*=f[i][1])%=P; write(ans);
}

T3 摸鱼军训

考虑对于每个点单独考虑,定义 \(pre_i\) 表示 \(i\) 这个点前面有多少个 \(>i\) 的点,那么若 \(k<pre_i\),答案就是 \(pre_i-k\),现在需要考虑 \(k>pre_i\) 的怎么做,这是可以用树状数组或线段树维护的。

发现每次操作 \(i\) 会停到后面第一个 \(>i\) 的位置的前一个位置,那么问题就迎刃而解了,找到第一个前缀中 \(>i\) 的的数量 \(=k\) 的位置 \(pos\),那么答案就是 \(pos-k\),这是可以在值域线段树上二分维护的。

关于我赛时想到结论但是不知道用数据结构维护这件事。

T4 神奇园艺师

并不想调,咕了。

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

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

相关文章

本人联系方式

点击直达 :https://t.me/ios888企鹅号码:616804217微信添加:616804217

ServiceMesh 4:实现流量染色和分级发布

★ ServiceMesh系列 1 什么是流量染色 在复杂的生产场景中,经常会有同一个服务中,存在多个版本长期共存的需求。为了让不同的用户在不一样的版本中使用,就需要对用户的请求进行采样和染色,打上不同的标识。 这样的目的有几个:支撑分级发布,避免全量发布时可能遇到的大规模…

SonicWall NSv 系列虚拟防火墙 SonicOSX 7.0 下载

SonicWall NSv 系列虚拟防火墙 SonicOSX 7.0 下载SonicWall NSv 系列虚拟防火墙 SonicOSX 7.0 SonicWall NSv SonicOSX 7.0 for ESXi 请访问原文链接:https://sysin.cn/blog/sonicwall-nsv/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org在获得物理防火墙所有安…

读数据质量管理:数据可靠性与数据质量问题解决之道02数据湖仓

数据湖仓1. 组装 1.1. 对于任何数据从业者来说,解决生产过程中的数据质量问题都是一项关键技能,但只要有适当的系统和流程,就基本可以防止数据宕机 1.2. 数据在管道的任何阶段都可能会受到操作数量、编程甚至数据相关性的影响,也许只需一次模式更改或代码推送,就会让下游报…

.NET 9正式发布,亮点是.NET Aspire和AI

Microsoft 今天正式发布了 .NET 9,这是迄今为止最高效、最现代、最安全、最智能、性能最高的 .NET 版本。这是来自世界各地的数千名开发人员又一年努力的结果。此新版本包括数千项性能、安全性和功能改进。您将发现整个 .NET 堆栈中从编程语言、开发人员工具和工作负载的全面增…

多校 A 层冲刺 NOIP2024 模拟赛 21

难度 ★★★☆☆多校A层冲刺NOIP2024模拟赛21 T1 送信卒 签到题 答案显然具有单调性,考虑二分答案,然后使用跑 dj check。 时间复杂度 \(O(nm\log (nm)\log (V))\) T2 共轭树图 特殊性质,树形 DP 考虑链怎么做,注意到一个性质,一条链上产生在 \(G\),将 \(G\) 中的边放到原…

APISR:受动漫制作启发的现实世界动漫超分辨率

APISR:受动漫制作启发的现实世界动漫超分辨率虽然现实世界的动漫超分辨率(SR)在SR社区越来越受到关注,但现有的方法仍然采用真实感领域的技术。分析了动漫制作工作,并重新思考了如何为了现实世界的动漫SR而使用它的特点。首先,由于手绘框架的重复使用,视频网络和数据集对…

2024.11.12 2024 CCPC女生专场

2024 CCPC女生专场 Solved:10/13 Penalty:1299 Rank:6今年题有这么简单吗?还是队伍变强了? 我做起来感觉比去年和前年都难。。感觉前两年至少都有 7~8 道签到,今年从 4~5 题就需要思考了。C. CCPC 题意:重排字符串使得形如 CCPC 的子串最多。 CCPCCP...CCPC #include<…

2024.11.12 CCPC2024女生专场

CCPC2024女生专场 Solved:10/13 Penalty:1299 Rank:6今年题有这么简单吗?还是队伍变强了? 我做起来感觉比去年和前年都难。。感觉前两年至少都有 7~8 道签到,今年从 4~5 题就需要思考了。C. CCPC 题意:重排字符串使得形如 CCPC 的子串最多。 CCPCCP...CCPC #include<…

串行总线的学习

一、USB概念 Universal Serial Bus,简称 USB。中文翻译称为通用串行总线,是一种串口总线的标准,也是一种输入输出接口的技术规范 二、USB接口外形分辨主要类型:Type-A,Type-B,Type-C,Micro,Mini下面以USB2.0协议展示不同类型接口的形状 Type-AType-B 通常在打印机设备使用,…

一文搞懂 ARM 64 系列: PACISB

一文搞懂 ARM 64 系列: PACISB1 PAC AMR64提供了PAC(Pointer Authentication Code)机制。 所谓PAC,简单来说就是使用存储在芯片硬件上的「密钥」,一个「上下文」,与「指针地址」进行加密计算,得出一个「签名」,将这个「签名」写入指针的高bit上。计算出来的「签名」之所以…

NewStarCTF-pwn

NewStarCTF-pwn目录NewStarCTF-pwnweek1overwriteread() 参数gdbweek2week3week4 week1 overwrite 首先查看文件,保护全开,为64位放入IDA查看代码,发现关键函数func()第9-12行代码,首先打印提示信息“pls input the length you want to readin: ”,然后使用__isoc99_scanf…