2025-10-21 XQQ Round 赛后总结

news/2025/10/22 21:43:43/文章来源:https://www.cnblogs.com/AeeE5x/p/19159039

赛时心路历程

  • 开 T1,然后 think 一会就秒掉了。大洋里一遍过。
  • 开 T2,然后 think 一会就秒掉了。大洋里也是一遍过。
  • 15:48 think T3,结果假了。但是注意到在 \(m=0\) 的时候是对的,10 分也是分。
  • 16:25 想不到 T3。注意到 T4 有很简单的 30pts 做法。决定过一会再写,先看 T3 能不能 think 出来。
  • 17:02 放弃了。写 T4 性质吧。一个小时绝对够了。
  • 17:28 解决了 T4 性质。开润。

T1 单调菜单

题意

有初始为空的可重集 \(S\),每次操作向其中添加一个数。问最多能从中选择多少个数,使选出的数中任意两个数之差均大于 \(1\)


赛时

花了 0 分钟发现这题和我昨天炼石打到的一道维护连续段信息的题很像,所以就把这个做法搬过来了。


题解

很显然多个相等的数只能选一个,所以只需要维护集合里有没有某个数就行。

然后注意到两个连续段互不影响,同一个连续段至多选 \(\lceil\dfrac{size}{2}\rceil\) 个数。

所以用并查集维护连续段,合并连续段的时候提前减掉然后再加回来就行了。

肯定存在一些其他的做法,但我懒得想了。

时间复杂度 \(O(n\alpha(n))\)

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3fll
using namespace std;int n;
int a[300010];
bool tg[500010];int fa[500010],siz[500010];
int find(int x){if(fa[x]==x) return x;return fa[x]=find(fa[x]);
}
void merge(int x,int y){x=find(x);y=find(y);if(x==y) return;if(siz[x]>siz[y]) swap(x,y);fa[x]=y;siz[y]+=siz[x];
}
int amax=0;int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);freopen("set.in","r",stdin);freopen("set.out","w",stdout);cin>>n;for(int i=1;i<=n;i++) cin>>a[i],amax=max(amax,a[i]);for(int i=1;i<=amax;i++) fa[i]=i,siz[i]=1;int ans=0;for(int i=1;i<=n;i++){int x=a[i];if(!tg[x]){if(x!=1&&tg[x-1]) ans-=(siz[find(x-1)]+1)>>1,merge(x-1,x);if(x!=amax&&tg[x+1]) ans-=(siz[find(x+1)]+1)>>1,merge(x+1,x);tg[x]=1;ans+=(siz[find(x)]+1)>>1;}cout<<ans<<" ";}cout<<"\n";return 0;
}

T2 城市兜风

题意

给定一个 \(n\times m\) 的网格,其中 \(k\) 个位置存在障碍。初始在 \((1,1)\),每次移动可以朝任意方向移动任意距离,但不能越过障碍。

只能移动最多两次,问能到达的格子的总数。

赛时

盯出来了简单容斥。然后写了一坨东西,差点没给我自己绕晕。

题解

很显然,只能移动两次这个限制非常强。

考虑第一步向右走,那么这一步可以走到第一行中纵坐标最小的障碍物前。继续往下走,能走到的一定也是对应列中横坐标最小的障碍物前。

同理,也可以先往下走,再往右走。

通过预处理出每行的障碍物最小纵坐标、每列的障碍物最小横坐标,可以较为简单地求出上面两种情况各自的答案。

但是很显然,对于两种方法都能走到的格子会被计算两次。我们需要通过容斥减去这部分的贡献。

如上图:绿色部分是先向下再向右的答案,青色部分是先向右再向下的答案。我们要减去的就是两部分的交集。

我们把答案拆成每一行的绿色部分分别包含多少个青色部分,这些答案的和就是要求的交集。

而注意到青色部分有前缀性,所以我们只需要记录每一列的青色部分在哪一行结束就可以了。在找到对应行的时候把这一列的贡献消掉。

所以我们可以用树状数组非常方便地维护这个东西。

这大概也许算是个扫描线的思想吧。

因为写的有点石再加上这题细节本来就多,所以加了点注释。

时间复杂度 \(O(k+n\log m)\)

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3fll
using namespace std;int n,m,k;// 存储点的坐标(但其实没什么意义)
struct node{int x,y;bool operator<(const node&_Q)const{return x==_Q.x?y<_Q.y:x<_Q.x;}
}a[200010];// prerow - 对于每一列而言,能到达的纵坐标最大的格。
// precol - 对于每一行而言,能到达的横坐标最大的格。
int prerow[200010],precol[200010];// 其实就是 precol[1] 和 prerow[1]。
int frowmin;
int fcolmin;// 树状数组
int bit[200010];
static int lowbit(int x){return x&(-x);}
void add(int x,int v){while(x<=m) bit[x]+=v,x+=lowbit(x);
}
int query(int x){int res=0;while(x) res+=bit[x],x-=lowbit(x);return res;
}// 青色部分结束的位置
vector<int> ops[200010];int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);freopen("motor.in","r",stdin);freopen("motor.out","w",stdout);cin>>n>>m>>k;for(int i=1;i<=k;i++) cin>>a[i].x>>a[i].y;for(int i=1;i<=n;i++) precol[i]=m;for(int i=1;i<=m;i++) prerow[i]=n;frowmin=m;fcolmin=n;for(int i=1;i<=k;i++){precol[a[i].x]=min(precol[a[i].x],a[i].y-1);prerow[a[i].y]=min(prerow[a[i].y],a[i].x-1);if(a[i].x==1) frowmin=min(frowmin,a[i].y-1);if(a[i].y==1) fcolmin=min(fcolmin,a[i].x-1);}// 统计前两类答案long long ans1=0,ans2=0;for(int i=1;i<=frowmin;i++) ans1+=prerow[i];for(int i=1;i<=fcolmin;i++) ans2+=precol[i];// 计算第三类答案long long ans3=0;// 预处理结束的行for(int i=1;i<=frowmin;i++){add(i,1);if(prerow[i]!=n) ops[prerow[i]+1].push_back(i); }// 扫描线?for(int i=1;i<=fcolmin;i++){for(int x:ops[i]) add(x,-1);ans3+=query(precol[i]);}cout<<ans1+ans2-ans3<<"\n";return 0;
}

总结

T1 典型的签到。

T2 容斥想到那一步有点难度,但总体还好。

T3 和 T4 只打了部分分。不会写。

后来润去打 TB 了。

吃完饭回来最后一分钟猜对了 T3 结论直接 AK。

半个小时爆切三道题。

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

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

相关文章

《中华人民共和国网络安全法》第二十一条这一核心考点

《网络安全法》第二十一条 考点精析 法条原文:国家实行网络安全等级保护制度。网络运营者应当按照网络安全等级保护制度的要求,履行下列安全保护义务,保障网络免受干扰、破坏或者未经授权的访问,防止网络数据泄露或…

二三级区别

等保第二级 vs 第三级核心差异及考点精析 核心关系:第二级是 “指导防护” ,第三级是 “强制管控、增强审计” 。从二级到三级是质的飞跃,而非简单量的增加,这正是考试的重点。核心差异对比与考点解析控制领域 核心…

小红书 404 重定向

function clientRedirect(e) { window.location.href = e, setTimeout(function() { window.location.href = e }, 100), setTimeout(function() { …

第九章-Where-1S-tHe-Hacker

第九章-Where-1S-tHe-Hacker 1、通过本地 PC RDP到服务器并且找到黑客ID 为多少,将黑客ID 作为 FLAG 提交; 这里一定一定要先把windows安全中心关了。不然会影响后门题目正常做从这里看到了管理员账户和密码,我们先看…

CF 2023D Many Games

huiyoude上界卡不来,怎么这么菜??? 下文的概率都是指的 \(\frac{p}{100}\)。 首先有一个想法就是直接背包,但是 \(\prod p\) 涉及不小的数的乘积并不好放入状态,所以考虑设 \(f_s\) 表示 \(\sum w = s\) 的最大概…

2025.10.22考试记录

T1 题意 在 \(n\) 瓶水中有1瓶毒药,\(m\)次实验,每次选择 \(k\) 瓶水测试其中是否有毒药,给出实验结果,试判断能否辨别出毒药,若能则给出最早得出结论的实验批次,否则求出可能成为毒药的编号。 分析 提前一天就被…

2025多校冲刺CSP模拟赛7 题目分析

T1 题目概述 求: \[\sum_{i=1}^n\sum_{j=i}^n[\gcd(i,j)=i\text{ xor } j] \]其中 \(n\leq 10^7\)。 分析 赛时没有做出来(doge)。 其实细想一下还是可以做的。 不难想到枚举 \(d=\gcd(i,j)\),那么 \(i\text{ xor …

学习资源

关于科研方向以及自己学习的一些经验借鉴资源 LLM 度盘有资料 【1080P】安德烈卡帕西:深入探索像ChatGPT这样的大语言模型|Andrej Karpathy 【2025最新】LLM大模型零基础全套入门保姆级课程,台大李宏毅《生成式人工…

CMC-C# Visual Studio2022 中不能进入断点設置方法

CMC-C# Visual Studio2022 中不能进入断点設置方法

[题解]P4616 [COCI 2017/2018 #5] Pictionary

P4616 [COCI 2017/2018 #5] Pictionary 我们发现,第 \(i\) 天会让所有为 \((m-i+1)\) 倍数的节点相互连通。可以将 \((m-i+1)\) 向它所有的倍数连边,效果是相同的。 我们规定边权为 \(i\)。 那么对于建好的图,我们不…

2025.10.22总结 - A

今天上了离散和马原,感觉还可以,加油

蛋白表达系统的技术布局与应用

引言 蛋白表达技术是分子生物学与生物制药研究的核心支撑之一。不同的蛋白表达系统在转录调控、翻译后修饰以及生产效率上各具特点。对于科研与产业化生产而言,系统选择不仅影响产量,更决定蛋白的结构与功能完整性。…

10月22日

今日学习了离散数学的逻辑结构与马克思主义的原理概论。离散数学严谨的符号推理,与马克思主义宏观的历史规律,分别从微观与宏观维度锻炼了我的抽象与辩证思维。二者虽领域迥异,却共同揭示了世界运行的内在逻辑与秩序…

软件工程学习日志2025.10.22

今日目标让后端服务稳定启动,加载最新静态资源与 WebSocket 逻辑。 修复聊天气泡左右归属判定错误(所有消息都在右侧)。 提升右侧气泡内昵称与时间的可读性(颜色对比度不足)。实施过程多次尝试本地启动方式,修正…

Seg T

交换律类任意一个标记向下时,两种标记都要下放 求max 时,query的无关子树返回极小值 pushdown和update的修改应当相同(对于结合律类时,可能update时对同一个tag的处理不同(如+&时对 add 有+有),对应到pushd…

Typora的多端同步方案,如何多台计算机共享md文件?Windows和Mac通过定时执行git来同步markdown文件

Windows和Mac通过定时执行git来同步markdown文件。 在阅读文章前,务必给typora配好图床,图床真的很爽,去网上搜搜教程二十分钟配好。 配置git免密码推拉 首先需要给git配置免登录,使用ssh推拉代码。如果不想看废话…

OOP-实验二

实验任务一 源代码 T.h点击查看代码 #pragma once#include <string>// 类T: 声明 class T { // 对象属性、方法 public:T(int x = 0, int y = 0); // 普通构造函数T(const T &t); // 复制构造函数T(T &am…

P2272 [ZJOI2007] 最大半连通子图

P2272 [ZJOI2007] 最大半连通子图 题解闲聊:最近好像一直在写题,好久没补题解了qwq,今天来一发。 以及,不会缩点的请先移步P3387题目传送门 博客传送门 思路 首先呢,如果原图里存在强连通分量,那么它们首先是半联…

2025年,哪些微信公众号排版工具能带来效率变革?

最初的纯手动排版到如今AI赋能的全流程创作工具,技术的进步让内容生产效率翻倍提升。今天,我将基于海量实测和真实使用场景,为你盘点2025年市面上最值得入手的8款公众号编辑器,并重点测评有一云AI编辑器——这款被…

我对软件工程的理解

软件工程是一门将工程化思想应用于软件开发与维护过程的学科,其核心目标是以系统化、规范化、可度量的方式提高软件的质量、开发效率和可维护性。它不仅仅关注编程本身,更强调整个软件生命周期的管理,包括需求分析、…