1.17 CW 模拟赛 赛时记录
前言#
策略不变, 心态放平
看题#
#
构构造造, 不活了
#
应该比
#
贡贡献献
#
困难
肯定是难得,
#
每次都栽在这上面, 反正就是不要慌, 然后按照时间分配去做
注意策略的选择和心态, 加油吧
不要死磕, 剩的时间不多了直接去暴力
太复杂了一定要换思路
思路#
首先题意
求一个长度为
的 串 , 使得
观察到
考虑如果只有一个
考虑如果有两个
具体怎么计算, 考虑两个
你发现总的区间个数为
令
那么如果
考虑一个区间包含三个
打出来发现非常明显的性质, 都是一堆
考虑证明
好吧看起来证明不来, 打了再说, 比较冒险
具体的, 注意到答案的性质为
: 直接把 放在中间任意一个位置 : 均分 : 把 个 堆在前面, 然后最后两个 均分, 均分的方式按照 的奇偶性决定
但是怎么输出具体的答案?
实现#
#include <bits/stdc++.h>
#define int long long
int n, k;
signed main()
{
scanf("%lld %lld", &n, &k);
if (k == 0) {
printf("0\n");
for (int i = 1; i <= n; i++) printf("0 ");
} else if (k == 1) {
printf("%lld\n", (n / 2 + 1) * (n - n / 2));
for (int i = 1; i <= n / 2; i++) printf("0 ");
printf("1 ");
for (int i = 1; i <= n - n / 2 - 1; i++) printf("0 ");
} else {
printf("%lld\n", (n / 2 + 1) * (n - n / 2));
for (int i = 1; i <= k - 2; i++) printf("1 ");
n -= k - 2;
if (k % 2) {
printf("1 "); for (int i = 2; i <= n / 2; i++) printf("0 ");
printf("1 "); for (int i = 2; i <= n - n / 2; i++) printf("0 ");
} else {
printf("1 "); for (int i = 2; i <= n - n / 2; i++) printf("0 ");
printf("1 "); for (int i = 2; i <= n / 2; i++) printf("0 ");
}
}
return 0;
}
反正是单测, 最多挂几组
#
在简单一点的题上浪费了很多时间, 接下来冷静一点, 赶紧拼暴力
思路#
转化题意
给你
次修改, 判断给定的 个区间什么时候完全互不相同
我会
你发现区间只有不交或者包含的关系, 关键
- 考虑特殊性质
, 仅包含包含关系且每次大小增加 , 也就是说我们随便搞搞就能过 - 考虑特殊性质
, 不知道有什么用, 意思是包含关系产生的连通块大小不超过 ? - 考虑特殊性质
, 更不知道有什么用了
考虑出去上个厕所冷静一下
性质
你可以考虑把每个位置对应的区间存下来, 然后乱搞搞
发现不会搞
性质
你发现如果一个区间长度为
不敢深入了, 时间不多
实现#
框架#
-
对于
, 维护每个区间对应的颜色出现次数, 修改就直接对次数修改顺便标记答案 -
对于性质
, 每次询问只考虑单指针指向的位置, 对于单指针 新开数组表示 有哪些数字
这后面的题肯定就是暴力
思路#
时间不够, 边打边想, 不在这里写了, 虽然可能导致错误, 但是必须拼一下
总结
不要死磕
然后就是继续每日一练, 没了
这把不知道什么水平, 寄了
后记, 实外倒数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!