NOIP 2024 游记

一定要笑着走到最后啊

Day -1

前一天感冒回家了,下午回的学校

听 mmz 说了几个他们 duel 到的题,都秒了,感觉状态很不错啊

晚上写板子,duel

Day 0

芜湖,不去早读,爽睡 7:30

上午写了从去年 noip 遗留到现在的 [建造军营],现在看似乎没有那么困难了

然后写板子

中午吃完饭出发了,下午大家一起狠人杀

晚上洗澡,写板子,看总结,大概 10:40 关灯了

然后发现睡不着

还是有点紧张的吧

悲,由于收手机没法听歌助眠了,然后就开始数数

半夜又惊醒了几次

Day 1

睡眠质量很一般啊…

吃完早饭进厂了

8:15 试机,还是写了 n=1e6sort,这次跑了 1.9s

有点困,睡觉

8:30 开题

T1 看上去不是很难,感觉直接贪心做没什么问题;T2 第一眼感觉很困难,限制有点抽象,仔细想想首先只考虑相邻位置即可,其次对于每个数只关注它是否被钦定即可,那么就能写出 O ( n ) O(n) O(n) d p dp dp,接下来显然可以矩乘优化

看 T3,发现过程极其抽象,不太会,决定最后看;T4 发现是数据结构,想暴力,显然区间长度固定为 k k k 是最优的,然后经典结论区间 LCA 只需要找 dfn 最小最大,st 表预处理之,这样应该有 O ( n q ) O(nq) O(nq) 的暴力了,然后发现这样 B 性质直接就能做;然后看 A 性质感觉是可做的

9:00 开写 T1,仔细推了推发现应该是先 贪心匹配一边确定一边不确定的,剩下都不确定的直接贪心,有点细节,写了 30min,写完刚好下发大样例,竟然一遍过了

手捏了几组,没问题,决定先跳了

开 T2,仔细推了一下转移后先码了 O ( n ) O(n) O(n) 的暴力 d p dp dp,通过了大样例,之后本来想上矩乘,但不知怎么意会了一下感觉中间段直接乘若干个 v 2 v^2 v2 就行,写了一会发现不对,还是矩乘吧。感觉思路有点不清晰,好在最后胡出来了,通过了大样例,此时 10:40

决定先看 T4,先写 n q nq nq,突然感觉可能没必要 O 1 O1 O1 lca 就写了树剖,很快写完,开始想链

显然问题可以这么转化:给一个排列,每次询问区间中长度为 k k k 的子区间最小值的最大值

序列上做都不太好,考虑值域上做,每次加入一个元素,然后线段树维护区间中最长连续段

这样暴力是还是 n q nq nq 的,然后感受一下似乎可以整体二分?

仔细分析一下感觉复杂度还是不太对,每个元素应该会被加入 O ( n ) O(n) O(n) 次啊!

再加上我对这个算法的不熟悉,更加认为应该不是这么做的

11:30 了,还是没什么成果,决定先看 T3 吧

重新读完题感觉还是十分抽象,看特殊性质发现菊花和链应该比较简单

然后想 k = 1 k=1 k=1,手玩了一会发现只关注树的形态的话,貌似每层节点是独立的,不需要考虑顺序,那么答案就是若干个阶乘了。感觉很正确,先写了这个,能够通过大样例

接下来拓展到 k = 2 k=2 k=2,怎么拓展?不会拓展啊!感觉过程及其抽象,重复的情况好像很难刻画

空想到 12:15,感觉不是很有成果了,还是继续想 T4

尝试返璞归真,放到树上做,每次维护一个子树内编号最长连续段,但还是绕不开枚举询问啊!gg

剩下的时间就是不断罚坐… …

然后就结束了

所以估分是

100 + 100 + 40 + 32 = 272 100+100+40+32=272 100+100+40+32=272

感觉很悬啊,希望别再挂分了吧

问了周围的人,czl 也是 272,mmz 没写 T3 的菊花大概 260,高一的 ljh 大佬 240+

出考场后十分迷茫

停课了半年,正赛终究还是只会打 签到+暴力 吗

现在这个分数感觉好悬的,可能就会直接退役了吧

诶,文化课

如果现在去反思考试出现的问题,那当然有很多

高二打的比赛再也不像以前了,因为是最后一次机会了啊。即使是反复告诉自己要轻松,真到了正赛焦虑还是会蔓延出来

有思路后由于怕浪费时间而急于否定自己,没有深入分析可行性

还有实力的欠缺吧

赛时 T4 的转化还是觉得很熟悉,于是就找到了 这道题

诶,还是对算法的理解不深导致的

无论如何,还是要继续走下去啊

希望还能笑着走下去吧

upd:

太惊险了,正式选手 rk2

T2 无解判挂了,一组数据会输出多个 0,慌了一周

luogu 数据卡了 25pts,正式数据出来没挂

诶,只能庆幸吧

实力还有很大欠缺,继续努力吧

### NOIP2024 T1 题解编程竞赛解题思路 #### 背景介绍 NOIP(全国青少年信息学奥林匹克联赛)作为国内重要的计算机科学赛事之一,旨在选拔优秀的程序设计人才。每年的比赛都会设置不同难度级别的题目来测试参赛者的算法能力和编程技巧。 #### 解析与策略制定 对于NOIP2024的第一道题目而言,通常这类题目会偏向基础概念的理解和简单应用,目的是让大部分选手能够入手并获得一定分数的同时也筛选出具备更深入思考能力的学生[^4]。 考虑到这一点,在面对T1这样的入门级挑战时,可以采取如下几种常见处理方式: - **直接求解**:如果问题本身相对直观,则可以直接通过观察数据特点找到规律进而得出结论。 - **暴力枚举**:当不确定最优解决方案时,可以通过遍历所有可能情况的方法尝试解决问题,虽然效率较低但对于小规模的数据集仍然适用。 - **模拟过程**:针对一些涉及具体操作流程的问题,按照给定条件逐步模仿实际执行步骤直至达到目标状态。 假设本年度的首题围绕着珠心算测验展开讨论,那么基于以往的经验来看,该类试题往往适合采用枚举的方式进行解答[^2]。下面给出一种具体的实现方案: ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 输入人数n bool flag[n+1]; memset(flag, false, sizeof(flag)); int a[n]; for(int i=1;i<=n;++i){ cin>>a[i]; for(int j=1;j<i;++j) for(int k=j+1;k<i;++k) if(a[j]+a[k]==a[i]) {flag[i]=true;break;} } int cnt=0; for(int i=1;i<=n;++i)if(!flag[i]) ++cnt; cout<<cnt<<"\n"; } ``` 上述代码实现了对每个数是否能由其他两个不同的数组合而成这一性质进行了判断,并统计满足特定条件的数量。这种方法不仅易于理解而且便于编码实现,非常适合初学者练习使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值