摘要: 比赛链接 自豪的是D题做出来了,悲哀的是B题没能做出来 C题的绝对值最小 D题,DP存不下状态就把状态放进所求值中 比赛快结束的时候,我想,这个B题,它但凡需要我通过归并排序或者树状数组求逆序对,不比C题进制转化要难?于是我就猜了一个结论 结论是对的,但不幸的是,我编程实现的时候出错了 考虑怎样证明 阅读全文
posted @ 2024-02-01 21:18 D06 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目链接 本想尝试一下朴素算法能得多少分,没想到直接过了……亲手构造了n=80000的全a数据,确定程序的复杂度的确是错的 考虑通过KMP算法构建的“失配树”,大概可以用双向链表维护前驱后继 阅读全文
posted @ 2024-02-01 17:14 D06 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 题目链接 听说还可以用AC自动机做,字符集比较大的话,用map就可以了 点击查看代码 #include <bits/stdc++.h> using namespace std; int ha[50005],res[100005],ans[100005]; int s[500005],id[50000 阅读全文
posted @ 2024-02-01 16:09 D06 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 核心思想:对询问分块 适用条件:序列上的区间询问问题,O(1)扩展 关键 1.设定块长度 2.转移时,先扩大区间,再缩小区间 阅读全文
posted @ 2024-02-01 14:19 D06 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目链接 在变化中寻找不变的量 通过差分转化为字符串匹配问题 通过打标记区分来自同一个字符串的不同子串 二分答案转化为判定 点击查看代码 #include <bits/stdc++.h> using namespace std; int m[1005],a[105],c[105],s[200005] 阅读全文
posted @ 2024-01-31 14:08 D06 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 题目链接 \(\sum d_i <=5*10^7\)一定是解题的突破口;可是,该怎么利用这个条件呢? 不妨更进一步——考虑数据的特征,发现数字的种类是有限的 阅读全文
posted @ 2024-01-30 21:53 D06 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目链接 容斥原理 将两个字符串拼接起来(中间用‘#’分隔开),再减去它们内部的贡献 height数组支持的最长公共前缀:不仅是长度,也是子串的个数 返回值开long long 核心代码与[AHOI2013] 差异 一致 点击查看代码 #include <bits/stdc++.h> using n 阅读全文
posted @ 2024-01-30 17:54 D06 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 题目链接 最长公共前缀在height数组上反映为最小值,所以可以用单调栈维护 阅读全文
posted @ 2024-01-30 17:16 D06 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目链接 似乎有O(n)的做法,但我想到的是用树状数组维护,在KMP构建的失配树上搜索 注意树状数组维护的值域范围为1~n,(如果需要维护)0要特判 阅读全文
posted @ 2024-01-30 15:02 D06 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目链接 asin、acos、atan:反正弦、反余弦、反正切函数 可以利用以上函数得到Π的值 注意1的特判 点击查看代码 #include <bits/stdc++.h> using namespace std; struct t1 { long long x,y; }t[100005]; t1 阅读全文
posted @ 2024-01-29 15:23 D06 阅读(4) 评论(0) 推荐(0) 编辑