首页 > 其他分享 >csp-s复习

csp-s复习

时间:2024-10-25 09:12:42浏览次数:1  
标签:复习 int 线段 最小 区间 可以 csp dp

字符串

trie

kmp

ac

mine

manacher

dp

看起来能dp的就胡个dp上去
1.优化状态(大概率会使用贪心)
2.套公式(前缀和/单调队列...)
3.找性质,有哪些是无用的[P11218]

trick

排列计数

排列的状态很难压进去,所以我们考虑如何将这个去掉。
我们的dp方程要用最少的空间来转移,也就是把状态压进去使之能计算贡献和转移
[CF856C]:贡献只和奇数位或偶数位置有关然后奇数位和偶数位有关,这些位置我们是可以随便填的,所以我们的dp方程是这么写的
dp[i][j]为前i个数,最后一个相对大小为j

单调队列

滑动窗口最大/最小值
连续子数组的平均值大于阈值的个数
下一个更大元素(单调栈)

斜率优化

贪心

反悔贪心

[P3419/4053]当取到不满足条件的时候那么就反悔前面一个不取,使答案最优。这类问题通常贡献数与数不影响,贡献简单

ddp

简单dp加上修改

数论

下取整
组合数

exgcd

int exgcd(int a,int b,int &x,int &y){
    if(!b){
        x=1,y=0;
        return a;
    }else{
        int g=exgcd(b,a%b,x,y);
        swap(x,y);
        y-=x(a/b);
        return g;
    }
}

excrt/crt

会考吗?

莫反

我只会比较公式的题

图论

Kruskal重构树

动态路径权值问题

网络流/二分图匹配

配对
最小点覆盖=n-最大独立集=最大匹配

染色。首先将所有答案都加上去,然后考虑减掉最小的不合法贡献就是最大答案。最小的不合法贡献,通常是不能相邻,呢么这个就要删掉,这就可以染色连边然后求最小割。

这样可以刻画的限制一般形如:如果一个元素被划入集合a,另一个元素被划入集合b及之后,产生的代价。这里需要保证非负性,用最小割

拓扑排序

2-SAT

Tarjan

圆方树

最小生成树

[CF1633E]最小生成树的形态只和边的相对大小有关

ds

线段树/树剖(树转化成区间)

  1. 维护区间平方,利用费马小定理,发现指数到后面有循环
  2. 区间a[i]=a[i+1]的数的个数,记录a[l],a[r],sum
  3. 区间lca
  4. 区间gcd(使用差分gcd(a,b)=gcd(b,a-b))

线段树上二分

找第一个>w的前缀和

并查集

维护森林到根的距离,如果是基环树的话只能重构,从这个拓展出有向基环树图中的最长链

l1r1==l2r2可以使用倍增并查集解决然后不停往下push_down

平衡树

文艺平衡树如果不带反转可以查询某个数的位置

文艺平衡树如果带反转可以查询特定数的位置,始终不改变,记录的是每个点对应的当前区间是否出现这个数

树状数组

cdq 分治

公公又式式

可持久化线段树

线段树合并

树剖

对边的操作一定要转化到点上,否则做不了。

博弈论

mine

其他技巧

倍增

好用爱用,优化模拟

哈希

双哈希,冲突概率要控在1e-7以下

构造

如果有一个答案下界/上界,不妨去构造上界/下界

双指针

很多二分加在一起可以变成双指针,好写捏

根号平衡

询问O(1),修改O(n)或者反一下就可以分块

人类智慧

[CF1956E12] 暴力时间太多,考虑暴力的次数,暴力一定次数就会产生条件将题目变得简单
观察样例/大样例

[P6187]发现许多贡献都是相同的,所以预处理一下

看到二元组想到建图

看好限制,有一些是只和一些限制有关的,然后这个就可以大大优化状态

看到绝对值就要拆绝对值

贡献独立,那么就分开计算

基环树断环上边->树

求第几个排列,一位一位确定

答案有指数,可以取对数

模拟题意,然后用数据结构/倍增优化

可以排序就排个序吧

容斥

如果求和号比较小可以一个一个算

树上对于每个点都询问可以考虑线段树合并

最小化最大值,最大化最小值二分答案

区间加转化为差分

区间问题考虑枚举l,r使用扫描线/双指针。枚举右端点,然后求有多少左端点,这种用的多一点

从左到右二分可以变成双指针

贪心先用邻项交换,要求是交换不会对其他位产生影响

首先想看到计算合法的方案数,套路地先考虑如何判断一个方案是否合法。“至少若干个”等,见到此类计数应当迅速反应。由此也可能引出容斥

可以用网络流那么就用一下,然后利用各种东西(通常是先转化成最小割)然后利用其它一些东西求最小割

质数的稠密性,1e18下1500个数会出现一个质数,大概是log^2/2级别?

括号问题的经典结论:

  1. 一个括号序列合法当且仅当\(sum_{i}\ge 0\)且\(sum_{n}=0\)

函数化编程,线段树push_down+change,push_up+merge这样比较方便

统计多少段区间出现的数都恰好出现偶数次

集合问题:背包或状压

注意推式子时应尽量拆,移项,减少未知数

1e6个int是4MB
1e6个vector是25MB

我们在树上对于一条路径更新周围一些点可以用更新父亲

有向无环图有一种建反图的套路,可能有点用

一个数的因数个数大约为log(随机情况)最坏大概log^2

矩阵游戏先构造,再调整

dfs搜索树上只存在返祖边,bfs搜索树上只存在深度不超过1的点6

将删除变成加

枚举要求的,然后逐个验证

1.在构造题中看到相等,我们就能想到各种-1和1相抵消。
2.二进制想到拆位
3.数的约束条件想到并查集,差分约束,dfs
4.看到要求的比较难求。
----1.正难则反
----2.进行转换,都试一遍
5.破环成链
6.将删除转换为添加
7.看到能dp的题目就做dp,先压状态,然后进行优化
8.题目要求输出每个子树的答案。想到各种合并,根据题目进行选择
9.看到跳的多的想到倍增
10.手玩样例很重要
11.区间最大值想到单调栈和笛卡尔树
12.有简单的分解质因数方法
13.一个限制一个限制满足

分数规划

mine

期望

概率乘贡献=期望
期望有可加性

期望dp,用自己表示自己,然后移项得到转移方程。
但是硬表示的话可能要高斯消元,我们可以设计一个i走到i+1的期望,这样就会好转移很多

标签:复习,int,线段,最小,区间,可以,csp,dp
From: https://www.cnblogs.com/wuhupai/p/18498737

相关文章

  • 「比赛游记」CSP2024 游记
    「比赛游记」CSP2024游记点击查看索引目录「比赛游记」CSP2024游记day-2(10.23)day-1(10.24)day0(10.25)别样的碰碰车大战$$\huge{地球从未上过天空。}\\\huge{只有睡着了,我才能看见光明。}\\\huge{在我的生命中会一直被打击,直到一切重新开始,}\\\huge{而光的......
  • CSP-S 2024 游记
    day-120第一次来到yl机房,那时我还是一个什么都不会的菜鸡。day-100学了一些东西。开始做普及组的题。day-90普及组的题差不多能到300pts了,开始做提高组的题。镇海中学的模拟赛题目质量和数据强度是真的神奇啊。从<50pts到>150pts。day-75开始军训了。当然趁着中......
  • 复习
    发出来给大伙参考吧数学逆元递推式(需要满足模数为质数)inv[1]=1;inv[i]=(p-p/i)*inv[p%i]%p;DP\[f_i=\max_{j\lti}f_j\]\[f_{i,j}=\max_{k\ltj}(f_{i,k}+cost)\]单调队列/对每个\(i\)维护单调队列二维线性DP存在一个同时由\(j,k\)影响的变量,则该状态转移方......
  • CSP模拟赛 #44
    2024最后一场CSP模拟赛。A给定\(x,k\),求最小的\(y\)满足\(y\gex\)且除了\(k\)个数位,其他数位均相同。\(1\len\le10^{17},\0\lek\le1\)暴力枚举。B给定\(n\)个三元组\((a_1,b_1,c_1),\dots(a_n,b_n,c_n)\),每个数\(\in[0,9]\)。求有多少种排列三元......
  • MySQL 复习(一):建表约束
    MySQL复习(一):建表约束@目录MySQL复习(一):建表约束1.主键约束1.1添加主键约束1.1.1建表前添加主键约束1.1.2建表后添加主键约束1.2删除主键约束2.外键约束2.1添加外键约束2.1.1建表前添加外键约束2.1.2建表后添加外键约束2.2删除外键约束3.自增约束3.1......
  • P5661 [CSP-J2019] 公交换乘 题解
    模拟"公交换乘"按题意模拟即可.注意:可以使用结构体,但是超过时间的优惠券需要被忽略.代码#include<iostream>#include<cstdio>usingnamespacestd;structnode{ intprice,deadline,is_use;//价格,截止时间,是否使用过}a[100005];intn,p,ans,pos=1;int......
  • P5662 [CSP-J2019] 纪念品 题解
    背包因为小伟可以每天进行$2$种操作无限次,所以显然可以使用完全背包.定义状态$f_i$,表示还剩下$i$时,可以拿到钱的最大值.再假设小伟今天买了,明天就卖掉.状态转移方程如下:$f_i=max(f_i,f_{i-p_{k,i}}+p_{k+1,i}-p_{k,i}).$即今天花掉的钱+明天能拿的钱-今天花掉的......
  • P5663 [CSP-J2019] 加工零件 题解
    最短路对于上图,如果我们相知道$2$号工人想要一个$3$阶段的零件,其实是看$2$到$1$有没有一条长度为$3$的路径.但如果要求$4$阶段的路径,那就不一定了.所以我们直接求一遍最短路,分奇最短路和偶最短路.处理完后,最后一次$\Theta(1)$的回答,如果路径长度过大,就是$No$,......
  • CSP-S 考前做题
    P11218首先还是博弈论题要么打表找规律要么dp。然后注意到\(2\timesn\)网格这个东西非常典,状态数很少,可以状压。首先我们做一点观察:不难发现\(11\)一定全选,\(00\)可以选一个,然后\(01\)可以选两个然后没贡献,这样他就没法换,跑一遍最大子段和。然后注意到他换只能换......
  • [复习] 数论基础
    [复习]数论基础模运算\[(a\pmb)\bmodp=((a\bmodp)\pm(b\bmodp))\bmodp\]\[(a\timesb)\bmodp=((a\bmodp)\times(b\bmodp))\bmodp\]积性函数\[\forall\gcd(x,y)=1,f(xy)=f(x)\timesf(y)\]完全积性函数\[\forallx,y\inN^+,f(xy)=f(x)\timesf(y)\]g......