-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMath_work.json
More file actions
30 lines (30 loc) · 3.07 KB
/
Copy pathMath_work.json
File metadata and controls
30 lines (30 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[
{
"id": "Codeforces_2262_C",
"thinking": "//到达的地方和自己的后缀最大值相关\n//最大值只能最后到达 倒二是0 因此0必须在最大值前面\n//而倒三一定是最后一位,到达0,这意味着 在最后一位之前 和最大值之间 一定都小于最后一位\n//不然一定会提前到达0,最大值天然把其他数字分成两部分,分别成链"
},
{
"id": "QOJ_2609_K",
"thinking": "为什么是3n? \n只需要最小化代价 相同编号上下可以随意变换\n相信 只要解存在 就一定不会-1 对于每次操作,至多上下调换两次、行互换一次\n因此本质上可以把这两个点放到一个数轴上同一个点贪心匹配\n对于两个不同的x和y在同一个点上 为了防止额外的折返 肯定要用下一个小的进行贪心匹配"
},
{
"id": "Codeforces_106252_A",
"thinking": "//注意到,当底部值相同时 越向上长度单调递增\n//如果已知一个长度,对于同一个底部值,能知道多少顶部值差值满足其长度大小\n//二分枚举X=a*T 然后暴力验证,注意两端剪枝\n//T>=(x+y+(2b/a))(x-y)\n//aT>=(ax+ay+2b)(x-y)\n//枚举d=x-y,X=a*T>=d*(2ay+ad+2b)=2ayd+add+2bd\n//注意到,两项都>=d,枚举d一定能有sqrt(k)的时间复杂度"
},
{
"id": "Codeforces_2201_C",
"thinking": "//输入本身为正则表达式\n//注意到,只要结尾为(,那么只会延后)的出现,所以前面随便选,故第i位为(,那么为答案累积2^(i-1)\n//接下来 如果结尾为),从已经选出来的子序列开始思考\n//对于下标x,只有结尾和其最附近一个选出来的序列位置有前缀和变化\n//前缀和变化后也必须满足正则表达式,若最附近是),则前缀和没变化\n//不然前缀和-2,那么这个点的前缀和必须>=2 说明只要有中途pref<=1的 那么从中间肯定无法转移 进行dp\n//dp[i] 以i为结尾的合法方案数"
},
{
"id": "Codeforces_2196_C2",
"thinking": "//如何“聪明”地得到更高的密度的信息\n//总共n+m次机会,每次必须要么得到一个新边,要么得到一个新点\n//跳过已知的点 用数组记录每个点的后缀边数,在遇到它时直接skip那个数量\n//令DP[i]为“以i为结尾的数量”,每次遇见新的数字时,老的数字就已经确定有多少子节点了"
},
{
"id": "Luogu_P11005_P11005",
"thinking": "//由于成本于最大的相关,因此权值>R的一定不能选\n//对于[1,L)的路,其本身让城市联通 但是对答案没有贡献,但是只要联通的城市有一个[L,R] 就能贡献答案\n//升序排列所有路,利用DSU维护联通性"
},
{
"id": "QOJ_2567_K",
"thinking": "//真正有意义的只有k-1,k,k+1\n//对于一段区间 其完全不相交的前缀能完全交换,记录x-y和z-y的最大值\n//滑动窗口 容斥记录最大值并处理 维护前缀w数组 将多余的重复计数去除\n//但是移出需要那个位置有 移入不需要"
}
]