自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

玛珈山大萌新

破山中贼易,破心中贼难。不破不立,破而后立,力而为人。

  • 博客(16)
  • 收藏
  • 关注

原创 [AcWing面向模型编程]树形dp

题目1:1072. 树的最长路径分析:树的直径模板题。注意:dfs返回的是当前子树最长链的长度。对每个根来说,最长链和次长链的和最大的即为答案。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl#define clos

2020-09-30 14:45:03 132

原创 [AcWing面向模型编程]区间DP

题目:321. 棋盘分割分析:dp[x1][y1][x2][y2][k]表示在(x1, y1) ~ (x2, y2)的区域内分成k个块所贡献的结果,然后分横竖枚举划分方式,这个dp要用记忆化搜索写,循环写太麻烦。逐渐明白了记忆化搜索对于dp的意义代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout &lt

2020-09-29 22:24:46 89

原创 Lunch HDU - 6892(博弈)

题目:Lunch HDU - 6892分析:NIM博弈,考虑对每一个巧克力求sg函数:对于长度为l的巧克力,sg(l)等于l的非2质因数的指数和+l是否为偶数证明放弃代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl

2020-09-25 21:23:06 319

原创 [AcWing面向模型编程]数论

质数定理:1 - n中有n / lnn个质数

2020-09-25 18:22:15 72

原创 求大组合数模板

之前总是上网查,还查不到完整的,有点浪费时间,还是得背过ll powmod(ll a, ll n){ ll res = 1; while(n) { if(n & 1) res = res * a % mod; n >>= 1; a = a * a % mod; } return res;}void init(){ fac[0] = 1; for(int i = 1; i &

2020-09-25 10:57:58 59

原创 [AcWing面向模型编程]博弈论

题目:893. 集合-Nim游戏分析:最经典的NIM游戏是每次可以拿至少一个,但是不能不拿。这个题目改成了只能拿一些固定的数值。其实本质上都是一样的,都是求出每个堆的SG函数,经典的NIM游戏的SG(X)恰好等于X。而这个题需要用记忆化搜搜的方式求(保证每个x只求一次SG),然后最后整个异或和判断一下非零完事了。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128

2020-09-22 15:24:50 192

原创 [AcWing面向模型编程]状态压缩dp

题目:292. 炮兵阵地分析:状态表示:dp[i][j][k]表示考虑前i行,且第i行的状态为j,第k行的状态为k的情况下的部署最大值。状态计算:dp[i][j][k] = max(dp[i][j][k], dp[i - 1][k][u](j, k, u分别为当前行,当前行的上一行,当前行的上两行,且j, k, u均不能互相伤害)代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//type

2020-09-21 21:59:15 115

原创 2020牛客暑期多校训练营(第八场)

题目:I.Interesting Computer Game分析:参考博客简单来说就是将每个数字看成一个点,然后每一对数可以连一条边,最后对于每个连通分支,如果有环,则结果只能+=该联通分支的点数,否则结果+=点数-1代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: "

2020-09-17 15:47:00 55

原创 Educational Codeforces Round 95 (Rated for Div. 2)补题

题目:D. Trash Problem分析:用set维护元素(将线性表的增删操作由O(n)优化成O(log(n))),用multiset维护差分.学习迭代器相关函数。(prev, next)注意点:multiset的erase(x)表示删除所有为x的值,erase(it)删除迭代器指向的单个元素。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;

2020-09-17 11:59:37 188

原创 MGLT-ICPC训练一(The 2019 ICPC Asia Danang Regional Contest)

题目:D - Dating time分析:一开始枚举的是秒数,然后再求夹角,这样就会导致判断两个指针是否在这一秒内重合变得非常麻烦。本题正确打开方式应该将整个表分成43200份,夹角差值的单位设为1份,然后枚举份数即可。(wtcl)代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "deb

2020-09-16 21:14:21 383

原创 [AcWing面向模型编程]kmp

题目:831. KMP字符串分析:听y总讲了一遍kmp,感觉理解的还不错,应该可以默写了。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl#define close() ios::sync_with_stdio(0),

2020-09-16 00:08:22 103

原创 [acwing面向模型编程]状态机模型

题目:1057. 股票买卖 IV分析:我们假设每一次交易分为两个阶段,第一个阶段是先买入,第二个阶段是卖出。设dp(i, j, 0)表示考虑前i天,在第j次交易中我们已经卖出(第j次交易已经完全完成),dp(i, j, 1)表示考虑前i天,在第j次交易中我们已经买入(第j次交易的第一个阶段完成)。状态机模型如下代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int1

2020-09-14 19:57:19 182

原创 Codeforces Round #670 (Div. 2)

题目:C. Link Cut Centroids分析:先恶补一波树的重心的基础知识:定义:树上一节点最大子树的节点数最小;性质:删除重心后所得的所有子树,节点数不超过原树的1/2,一棵树最多有两个重心,且相邻。树中所有节点到重心的距离之和最小,如果有两个重心,那么他们距离之和相等;两个树通过一条边合并,新的重心在原树两个重心的路径上;树删除或添加一个叶子节点,重心最多只移动一条边;这个题的特殊点其实就是重心,那么我们可以先找出重心,看是否唯一,如果唯一则随便输出同一条边。不唯一的话,

2020-09-13 22:17:10 184

原创 Codeforces Round #669 (Div. 2)

题目:D. Discrete Centrifugal Jumps分析:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl#define close() ios::sync_with_stdio(0), cin.tie(0

2020-09-12 14:50:17 116

原创 单调栈

题目:Largest Rectangle in a Histogram HDU - 1506分析:这个题就是求矩形的最大面积。其实就是求每个边所能水平延展的最大宽度(找到左右两侧第一个比他低的边,)代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i

2020-09-11 22:01:57 75

原创 P3384 【模板】轻重链剖分——树链剖分模板题

分析:讲解代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl#define close() ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)#define mem(a, b

2020-09-08 16:40:59 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除