多校A层冲刺NOIP2024模拟赛10

news/2024/10/21 18:10:49

因为有好多人没有好好打,所以我认为我垫底了。

赛时rank 2,T1 0pts,T2 100pts,T3 0pts,T4 40pts,accoder上同分,rank 9。

T1 因为没输出挂了5pts,T4 爆搜挂了5pts,乐。

update:T3没有启发式合并被卡成rank 4了

神:wang5是下一个zh0ukangyang

岛屿

唐氏的推柿子题。

发现只有两种链,同色相连和异色相连,而且红红和蓝蓝的数量一样,假设\(f_{a,b}\)表示初始有\(a\)条同色链\(b\)条异色链时期望连通块数,目标为\(f_{X,Y}\)

分类讨论。

  1. 红红蓝蓝相连,连通块为\(f_{a-1,b+1}\)
  2. 红红红蓝相连,为\(f_{a,b-1}\)
  3. 蓝蓝红蓝相连,为\(f_{a,b-1}\)
  4. 红蓝红蓝相连,为\(f_{a,b-1}\)\(f_{a,b-1}+1\)

然后就有dp柿子了。

\[f_{a,b}=\begin{cases}\frac{1}{2a+b}(f_{a,b-1}+1)+\frac{2a+b-1}{2a+b}f_{a,b-1}&b>0\\f_{a-1,b+1}&b=0 \end{cases}\]

化简以后就变成了

\[f_{a,b}=\begin{cases}\frac{1}{2a+b}+f_{a,b-1}&b>0\\f_{a-1,1}=\frac{1}{2a-1}+f_{a-1,0}&b=0 \end{cases}\]

\(f_{0,0}=0\)

\(f_{X,Y}=\sum\limits_{i=1}^Y\frac{1}{2X+i}+\sum\limits_{i=1}^X\frac{1}{2i-1}\)

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#define Infile(x) freopen(#x".in","r",stdin)
#define Outfile(x) freopen(#x".out","w",stdout)
#define Ansfile(x) freopen(#x".ans","w",stdout)
#define Errfile(x) freopen(#x".err","w",stderr)
#ifdef LOCALFILE *InFile = Infile(in),*OutFile = Outfile(out);// FILE *ErrFile = Errfile(err);
#elseFILE *InFile = Infile(island),*OutFile = Outfile(island);
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
signed main(){cin.tie(nullptr)->sync_with_stdio(false);cout<<fixed<<setprecision(18);int x,y;cin>>x>>y;db ans = 0;rep(i,1,y,1) ans = ans + 1.0/(2*x+i);rep(i,1,x,1) ans = ans + 1.0/(2*i-1);cout<<ans<<'\n';
}

最短路

[USACO09JAN] Safe Travel G

签到题,虽然是紫。

由于\(1\sim i\)的最短路唯一,所以以\(1\)为根建出的最短路树唯一。

考虑当\(x\)的点被ban了以后,就要在其子树中找一条边连接其它子树,假如向外连边的点为\(u\),连到的点为\(v\),那么答案就是\(dist_v+w+dist_u-dist_x\),只需要维护\(dist_u+w+dist_v\)的最小值即可,这个只要不是暴力,用啥维护都行,我用的set。

然后考虑什么时候一条边没有贡献,那么就是在\(lca(u,v)\)及以上时候,懒惰删除即可。

从根往下搜,启发式合并即可,时间复杂度\(O(n\log^2 n)\)

题解用并查集实现的\(O(n\log m+n)\)的,比较厉害,挂一下。

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#define Infile(x) freopen(#x".in","r",stdin)
#define Outfile(x) freopen(#x".out","w",stdout)
#define Ansfile(x) freopen(#x".ans","w",stdout)
#define Errfile(x) freopen(#x".err","w",stderr)
#ifdef LOCALFILE *InFile = Infile(in),*OutFile = Outfile(out);// FILE *ErrFile = Errfile(err);
#elseFILE *InFile = stdin,*OutFile = stdout;
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
const int N = 1e5 + 10,M = 2e5 + 10;
const ll inf = 0x3f3f3f3f3f3f3f3f;
#define eb emplace_back
#define pii pair<ll,int>
#define mk make_pair
struct EDGE{int to,next,w;}edge[M<<1];
int head[N],cnt = 1;
inline void add(int u,int v,int w){edge[++cnt] = {v,head[u],w};head[u] = cnt;}
vector<int> e[N];
int n,m,fa[N],fe[N],u[M],v[M],w[M],siz[N],son[N],top[N],dfn[N],rdfn[N],tim,dep[N];
int in[N],out[N];
ll dist[N],ans[N];
bitset<N> vis;bitset<M> ot;
vector<int> Ad[N],del[N];
inline void dijkstra(int s){memset(dist,0x3f,sizeof dist);vis.reset();dist[s] = 0;priority_queue<pii,vector<pii>,greater<pii> > q;q.push(mk(dist[s],s));while(q.size()){int x = q.top().second;q.pop();if(vis[x]) continue;vis[x] = true;for(int i = head[x]; i;i = edge[i].next){int y = edge[i].to;if(dist[y] > dist[x] + edge[i].w){fa[y] = x;fe[y] = i>>1;dist[y] = dist[x] + edge[i].w;q.push(mk(dist[y],y));}}}
}
set<pii> st[N];
bitset<M> have;
int rt[N];
void dfs1(int x){siz[x] = 1;dep[x] = dep[fa[x]] + 1;for(int y:e[x]){if(y == fa[x]) continue;dfs1(y);siz[x] += siz[y];if(siz[son[x]] < siz[y]) son[x] = y;}
}
void dfs2(int x,int t){rdfn[dfn[x] = ++tim] = x;in[x] = out[x] = tim;top[x] = t;if(son[x]) dfs2(son[x],t);else return;for(int y:e[x]){if(y == fa[x] || y == son[x]) continue;dfs2(y,y);}out[x] = tim;
}
inline int LCA(int x,int y){int fx = top[x],fy = top[y];while(fx ^ fy){if(dep[fx] < dep[fy]) swap(fx,fy),swap(x,y);x = fa[fx];fx = top[x];}if(dep[x] > dep[y]) swap(x,y);return x;
}
void Merge(int x,int y){for(auto i:st[y]) st[x].insert(i);set<pii> ().swap(st[y]);
}
void dfs(int x){ans[x] = inf;for(auto y:e[x]){dfs(y);}if(son[x]) rt[x] = rt[son[x]];for(auto y:e[x]){ if(y == son[x]) continue;Merge(rt[x],rt[y]);}for(auto i:Ad[x]){have[i] = true;st[rt[x]].insert(mk(dist[u[i]]+dist[v[i]]+w[i],i));}for(auto i:del[x]) have.reset(i);while(st[rt[x]].size()){if(have[(*st[rt[x]].begin()).second]){ans[x] = -dist[x]+(*st[rt[x]].begin()).first;break;}else{st[rt[x]].erase(st[rt[x]].begin());}}
}
inline void solve(){cin>>n>>m;rep(i,1,m,1){cin>>u[i]>>v[i]>>w[i];add(u[i],v[i],w[i]);add(v[i],u[i],w[i]);}dijkstra(1);rep(i,2,n,1) e[fa[i]].eb(i),ot.set(fe[i]);rep(i,1,n,1) rt[i] = i;dfs1(1);dfs2(1,1);rep(i,1,m,1){if(ot[i]) continue;int x = u[i],y = v[i],lca = LCA(x,y);Ad[v[i]].eb(i);Ad[u[i]].eb(i);del[lca].eb(i);}dfs(1);rep(i,2,n,1){if(ans[i] == inf) cout<<-1<<'\n';else cout<<ans[i]<<'\n';}
}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);solve();
}

这场模拟赛就是唐,不TM调了。

翻译跟√⑩一样,数据也和√⑩一样。

TM赛后加hack,你有TM本事考完noip给CCF加hack啊。

BYD,不调了,挂题解上去得了。

image

image

image

image

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

13、Linux网络管理

网络基本概念 物理地址/逻辑地址物理地址:硬件地址,如MAC地址。 逻辑地址:软件配置地址,如IP地址。网卡作用:连接计算机和网络的硬件设备。MAC地址 (Media Access Control)定义:媒体访问控制地址,唯一标识网络设备的硬件地址。IP地址 (Internet Protocol Address)格式示…

CSS速刷 - CSS动画

作用:引起注意、愉悦感、反馈、掩饰(加载过程)transition动画 补间动画,中间过程可以计算出来。transition: width 1s:意味动画属性是width,动画时间是1秒。delay: 动画延迟几秒再开始 transition-timing-function 缓动函数:可以自己定制。关键帧动画 animationanimation…

五款实用报表工具推荐:从山海鲸到 JasperReports,哪个更适合你?

概述 在现代数据驱动的商业环境中,选择一款合适的报表工具对于企业的决策制定和数据管理至关重要。本文将为您介绍五款各具特色的免费或开源报表工具,包括国内的山海鲸报表、开源的 Superset、云端友好的 Looker Studio 以及企业级的 Zoho Analytics 和 JasperReports。本文将…

数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年9月刊

本文为大家整理了墨天轮数据社区2024年9月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的技术实操,欢迎参考。本文为大家整理了墨天轮数据社区2024年9月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据…

物理理机中没有VMNet1和VMNet8虚拟网卡,网络不通

主机ping不通虚拟机网络控制面板——网络连接——网络适配器 VMware Network Adapter VMnet1 VMware Network Adapter VMnet8 如果没有这两个虚拟网卡,虚拟机的网络会出现问题 # 解决办法-恢复虚拟网卡默认设置 1、下载并打开ccleaner,ccleaner官网:CCleaner Makes Your Com…

Linux_进程理解、状态与优先级(详细版)

1.进程的概念 课本概念:程序的一个执行实例,正在执行的程序等。 内核观点:担当分配系统资源(CPU时间,内存)的实体。 其实:进程=内核的相关管理数据结构(task_struct、页表等)+程序的代码和数据task_struct:是描述进程的结构体,是Linux内核的一种数据结构,它会被装载…

12、用户和权限管理

用户组与用户管理 用户组(Group) 用户组用于方便权限分配。 常见部门组:北京核心 研究院-教研中心-北京教学部 研究院-研发中心-长沙研发 研究院-售后VIP服务中心 研究院-教研中心-长沙教学部组ID(GID)分类:root用户组:GID=0 程序用户组(系统用户组):1-999 (CentOS7)…

Windows Office 永久激活工具!小白一键就能搞定~

HEU KMS Activator中文版是一款简洁高效的KMS/OEM智能激活工具,适用所有Windows、Office版本,无需联网即可一键激活,支持UEFI的KMS激活工具。KMS服务是微软对Windows、Office等产品的批量许可服务,利用KMS可以激活局域网内的产品。该工具利用KMS机制在系统搭建KMS服务器,从…