集训总结

UDT:2023/10/11

Day -???

第一次比赛。

T1

给定一个 $32$ 位无符号整数函数,将其修改成一个支持 $k$ 位整数的函数。

由于 $k$ 位整数本质上是 $k$ 个二进制位组成的,因此只要对结果 $\text{mod } 2^{k}$ 就能实现了。

但是由于在极限值下,该函数中存在加法可能溢出,所以先对其取模即可。

但是由于赛场上使用的 PDF 阅读器必须调设置才能复制粘贴,对着打打错了,自然就无法在本题拿分。

这个函数实现了求一个最小的一个大于 $N$ 并且二进制权重与 $N$ 相同的数,非常神奇。

T2

想到了 dp,但没写出来。

写了个暴力,但是炸了。

喜提 $0\text{pts}$。

T3

构造!好耶!

通过一种奇怪的 $O(n^2\log n)$ 的奇妙搜索,拿到了 $60\text{pts}$。

正解可以用哥德巴赫猜想,很数论。

T4

倍增,以前看到过,但没写出来。

最终还是喜提 $0\text{pts}$。

问题挺多:

  • 不善于利用计算机的功能
  • 暴力能力不行,代码力太弱。
  • dp 能力弱。

Day 1

讲了很多题,主要是 序列上 dp,像是(最长)上升/下降子序列的计数/方案 之类的题。

像是二分/树状数组/乱搞求都可以。

尤其是二分的方法,用 STL 解决,简洁清晰好记。

这里贴个板子。

//最长上升子序列
int n,a[maxn],b[maxn],c[maxn],top,top2;
scanf("%d",&n);
for(int i=1;i<=n;i++){
    scanf("%d",&a[i]);
    if(a[i]>b[top])b[++top]=a[i];
    *lower_bound(b+1,b+top+1,a[i])=a[i];
}
//最长下降子序列
//倒着求上升自然就是下降
for(int i=n;i>=1;i--){
    if(a[i]>c[top2])c[++top2]=a[i];
    *lower_bound(c+1,c+top2+1,a[i])=a[i];
}

Day 2

继续 序列上 dp,但是题相对于来说做法开始复杂了。

而且也有一些奇奇怪怪的变种,还有人类智慧做法。

像是求一堆上升或下降子序列连在一起的“山脉”的“山脊”数量等于 $k$ 之类的(题号 V 确实挺形象)。

补了很多题,看来还是蒻了。

Day 3

上午比赛,$155$,跟奇偶性有关的使用了滚动数组的倒着求得抽象 dp 过了 T2,T1 没开 long long,挂 $50$。

不开 long long 见祖宗。

T3 搜索,考验代码力,spj 写出来了,题没写出来,看来得找几道大模拟练练。

T4 人类智慧 dp,四维 dp 都开出来了,初始化写错了,而且没想出来怎么滚动,但是全排列暴力拼盘不知道为什么 $0$ 分。

考后拷走了所有人的代码。

这一次显然暴露出许多不足:

  • 不开 long long 见祖宗,尤其是空间充裕的情况下。
  • 初始化写错(可能也不算,因为没有想清楚)。
  • 代码力不足(大模拟写少了)。
  • 暴力/数据构造能力弱,卡不掉错解(而且 T4 暴力炸了)。

据说难度还是 (S) T1-T1-T1-T2 分布的。

我是魔芋。

彩蛋:C 题 spj 出锅了,std 被卡掉了。

posted @   changwenxuan  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示