[2027届]NOIP2024模拟赛#5

news/2024/11/17 4:23:59/文章来源:https://www.cnblogs.com/Lydic/p/18376558

%%% Larunatrecy

比赛链接

榜:

image

打得还行吧。

T1

光理解题意就看了10min,理解以后写了写有手就行的暴力。

赛后发现输出 -1 能多拿10分,惨痛错过呜呜呜。

正解的话,我们给每个节点定义两个指标:

  • \(a:\) 即使加入一条入边也依旧存在一种合法的 \(W\)
  • \(b:\) 即使加入一条出边也依旧存在一种合法的 \(W\)

那么,对于一个 至少有一条边没有确定方向的节点 \(x\)

  • 如果 \(a,b\) 都不满足,那么直接无解。
  • 如果 \(a,b\) 恰好满足一个,那么该节点所有未确定方向的边都可以确定方向。

注意第二种节点会导致一些别的节点也变成这两种状态之一,这是一个迭代的过程。

完成迭代后,此时每个节点要么 \(a,b\) 都满足,要么它的所有边都已经定向。

接下来,我们考虑如果没有一类节点,那么一定存在一组解,也很简单:

  • 任选一个节点作为根,并把他的儿子节点任意定向,然后递归子树,那么对于每个递归到节点,如果都已经定向就无所谓,否则因为 \(a,b\) 都满足,那么父亲的边怎么定向都是合法的,因此不会出问题。

那么做法呼之欲出:按顺序遍历每条边,如果已经定向就定向,否则这条边可以任意定向,迭代这个过程即可。

复杂度 \(\mathcal{O}(n)\)

T2

唯一过掉的题。

一开始对于两个性质,分别跑联通块和乘法原理可以搞到40分的优秀成绩。

然后根据性质想正解,可以把原图按照高度阻隔分成多个块,每一个块完全包含低一级的块。现在要求的就是有多少种用互不包含额度块覆盖原图的方法。

由于块可以抽象成一棵树,所以不难想到 Kruscal 重构树,然后 DP式子稍微一推就出来了,每个节点可以由两个儿子节点分别计算合并而来。

然后第一次交的时候数组开小了,幸好检查了,大汗)

lg上面竟然是紫题,经验+1。

点击查看代码
#include<bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
#define int long long
using namespace std;
// using namespace  __gnu_pbds;
// tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> tr;//从小到大
// int findnum(int k){auto it=tr.find_by_order(k-1);return ((it!=tr.end())?(*it):1e9+7);}//查元素
// int findrank(int x){return tr.order_of_key(x)+1;}//查排名
inline int read()
{int w = 1, s = 0; char ch = getchar();while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}while(isdigit(ch)){s=s*10+(ch-'0');ch=getchar();}return w*s;
}
const int mod=998244353;
const int maxn=1e6+10;
const int inf=1e9+7;
int qw(int a, int b)
{int ans=1;a%=mod;while(b){if(b&1)ans=ans*a%mod;b>>=1;a=a*a%mod;}return ans;
}
int n,m,H;
struct no
{int y,d;
};
vector<no> G[maxn];
bool vis[maxn];
void dfs1(int x)
{vis[x]=1;for(auto i : G[x]){int y=i.y,d=i.d;if(d==1||vis[y])continue;dfs1(y);}
}
void Sub1()
{int num=0;for(int i=1;i<=n;i++){if(!vis[i]){dfs1(i);num++;}}cout<<qw(2,num);return ;
}
void Sub2(int D)
{if(H<=D){cout<<qw(H+1,n);return ;}cout<<(qw(D+1,n)+(H-D)%mod)%mod;return ;
}
vector<int> GG[maxn];
int tot=0;
int cnt[3000][3000];
struct bi
{int x,y,v;inline friend bool operator < (bi x,bi y){return x.v<y.v;}
};
vector<bi> mm;
int fa[maxn],d[maxn];
int gf(int x){return fa[x]==x?x:fa[x]=gf(fa[x]);}
void dfs3(int x,int h,int d)
{cnt[h][x]=d;for(auto i : G[x]){int y=i.y,dd=i.d;if(dd>=h||cnt[h][y])continue;dfs3(y,h,d);}
}
int dp[maxn],c[2];
void dfs(int x,int fa)
{int t=0;dp[x]=1;for(auto y : GG[x]){if(y==fa)continue;c[++t]=y;dfs(y,x);}dp[x]=( ( d[x] - d[c[1]] ) + dp[c[1]] ) % mod*( ( d[x] - d[c[2]] ) + dp[c[2]] ) % mod;
}
void Sub3()
{int ans=0;tot=n;for(int i=1;i<=m+n;i++)fa[i]=i;for(auto i : mm){int x=i.x,y=i.y,v=i.v;int fx=gf(x),fy=gf(y);if(fx==fy)continue;tot++; d[tot]=v;fa[fx]=fa[fy]=tot;GG[tot].push_back(fx);GG[tot].push_back(fy);GG[fx].push_back(tot);GG[fy].push_back(tot);dp[tot]=( dp[fx] + ( d[tot] - d[fx] ) ) % mod*( dp[fy] + ( d[tot] - d[fy] ) ) % mod;}ans=(dp[tot]-d[tot])%mod;// dfs(tot,0);cout<<(ans+H)%mod;
}
signed main()
{
#ifdef Lydicfreopen(".in","r",stdin);freopen(".out","w",stdout);
#elsefreopen("rain.in","r",stdin);freopen("rain.out","w",stdout);
#endifcin>>n>>m>>H;int Su2=0;bool f=1;for(int i=1;i<=m;i++){int x=read(),y=read(),v=read();if(i==1)Su2=v;else if(v!=Su2)f=0;G[x].push_back({y,v});G[y].push_back({x,v});mm.push_back({x,y,v});}if(H==1){Sub1();return 0;}if(f){Sub2(Su2);return 0;}sort(mm.begin(),mm.end());for(int i=1;i<=m+n;i++)dp[i]=1;Sub3();return 0;
}

T3

图上邻域区间修改区间查询。

暴力直接模拟。

题目说这是数据结构,但是我把所有数据结构扒出来也没有想到是什么。

就写了暴力分。

正解是一个很神奇的分块,设 \(S\)\(R(i)\) 顺次拼起来得到的长度为 \(2m\) 的序列,那么问题简化为:

  • 给定 \([l,r]\),对于 \(i\in [l,r]\),令 \(w_{S_i}=w_{S_i}+v\)
  • 给定 \([l,r]\),求出 \(\sum_{i\in [l,r]}w_{S_i}\)

把序列 \(S\) 分块,考虑每种贡献。

  • 整块/散块对整块,预处理 \(f_{i,j}\) 表示第 \(i\) 个块与前 \(j\) 个位置的贡献,那么询问的时候枚举块 \(i\) 就能得到贡献。
  • 散块对散块,暴力修改。
  • 整块对散块,与第一种类似。

复杂度 \(\mathcal{O}((m+q)\sqrt m)\),需要离线做到线性空间。

T4

题目压根没懂,说的跟shi一样(好像不太好)。

题目看懂以后会一个10分DP部分分,但是是赛后。

CF3500的评分,做出来直接是红黑名阿伟。

正解是一个很复杂的二进制按位区间DP,能做到 \(\mathcal{O}(n^3m)\),但是根本不会。

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

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

相关文章

nRF54H20开发板开箱测评

今天收到了Nordic最新的旗舰级BLE芯片 nRF54H20的开发板,做一个简单的开箱测评。包装简洁使用了牛皮纸盒,十分符合北欧人的环保理念(手动狗头)。 一、nRF54H20开发板概览打开包装之后里面是用防静电袋包装的开发板和NFC天线。 nRF54H20开发板在Nordic开发板家族中的代号是…

zblog免费插件分享前端代码支持一键复制

zblog默认的代码文件在网页前端是不支持一键复制的,这会让访客复制长代码的时候不太方便,甚至有可能会出错,影响体验,下面分享一个非常简单的免费插件,安装之后,前端代码就能一键复制了。 插件使用方法: 1、点击最下方链接下载插件 2、打开zblog后台,在插件管理里面上传…

6-SoftMax回归

https://blog.csdn.net/qq_43799400/article/details/131202148 写代码遇到问题 1、使用data.DataLoader时如果使用多进程num_workers,会报错其原因可能是https://blog.csdn.net/KaelCui/article/details/106184158 2、loss的backward 注意backward只能对标量,而不是对张量。 …

浅谈C#中的值类型和引用类型

1. 值类型常见的值类型:int/long/short/byte/float/double/bool/char/Struct(用户建立的结构体通常是值类型的)/Nullable Types(这是一个特殊的值类型,表示一个正常值或者空,比如int?) 值类型的例子:int a=10; int b=a;Console.WriteLine($"a:{a}");//a:10 Co…

图解Kafka:Kafka架构演化与升级!

了解了 Kafka 架构就掌握了 Kafka 最核心的知识,Kafka 作为业界最知名、最流行的消息系统和流式处理组件,在面试中和日常工作中经常会见到。那么今天,我们就来聊聊 Kafka 的架构演化与升级,并通过图解的方式让你一目了然。 1.Kafka 初印象 Kafka 最初由 LinkedIn 公司开发,…

Nginx配置SSL证书:轻松实现网站的HTTPS加密!

成功配置SSL证书后,您将能够通过HTTPS加密通道安全访问Nginx服务器。一、准备材料 SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射。您可以通过DNS验证证书工具,检测域名DNS解析是否生效。具体操作: 【1】登录数字证书管理服务控制台。 【2】在左侧导航栏…

为什么通过clear_refs可以使进程触发缺页?

平台 ARM64 Linux 6.10 作者 pengdonglin137@163.com 背景 最近在学习Linux的缺页异常时突然奇想,在不进行内存换出的情况下,如何让进程再次触发缺页? 基于对ARMv8的理解,它的MMU的页表项中有个AF位,当AF为0时,当访问到对应的虚拟页时,会触发缺页。如果AF位为0,当访问到…

复选框单选

const lastDataHandle = ref(null); // 上次选择的dataHandle值 const dataHandle: any = ref([]); const dataHandleALLList = [{ label: 无, value: 0 },{ label: 上传照片, value: 1 },{ label: 二维建模, value: 2 }, ]; // 单选 function setLastDataHandle() {lastDataHa…

解码“智慧市政”的创新实践与战略意义

在这个日新月异的信息时代,智慧城市建设已成为全球共识,而“智慧市政”作为其核心组成部分,正以前所未有的速度重塑城市管理和服务模式。智慧市政:定义与价值智慧市政,是指利用先进的信息技术,如地理信息系统(GIS)、物联网(IoT)、大数据分析、人工智能(AI)等,对城…

WPF 模仿前端大佬写一个Hover效果

先看一下效果吧: 原博主的地址:【动画进阶】神奇的卡片 Hover 效果与 Blur 的特性探究 - ChokCoco - 博客园 (cnblogs.com) 原效果是一个css效果,我们采用WPF的方式模仿一下 因为技术有限,没有原博主的那么好看,毕竟盗版永远比不过原版... 然后这里看一下盗版的怎么写吧 先…

信息收集利器|一款功能强大的子域收集工具

01工具介绍 (下载地址见最后) 在hw等攻防演练中,信息收集做为演练厨师阶段最重要的步骤,方式方法尤为重要,好的工具达到事半功倍的效果。OneForAll是一款集百家之长,功能强大的全面快速子域收集终极神器。 解决以下痛点: 在渗透测试中信息收集的重要性不言而喻,子域收集…

[poc] hw情报-泛微 e-cology v10 远程代码执行漏洞

漏洞介绍 (poc下载地址见最后)泛微披露了e-cology远程代码执行漏洞。该漏洞允许攻击者通过e-cology-10.0前台获取管理员访问令牌,然后利用JDBC反序列化,实现远程代码执行。 漏洞描述通过/papi/passport/rest/appThirdLogin接口获取管理员账号票据,根据该票据获取访问令牌,…