上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: 欧拉函数 定理 欧拉函数,即 \(\varphi(n)\),表示的是小于等于 \(n\) 和 \(n\) 互质的数的个数,详细定义看wiki。 欧拉函数其实就是容斥原理的应用,举个例子: 如 \(n=6\),\(1,2,3,4,5,6\) 是整个序列,我们将 \(6\) 的质因子 \(2\),\(3 阅读全文
posted @ 2024-09-23 14:16 sad_lin 阅读(31) 评论(0) 推荐(0)
摘要: 一个正向取前缀和,一个反向取,最后枚举断点。 #include <bits/stdc++.h> using namespace std; #define ll long long int n,sum; int a[200005]; int front[200005]; int back[200005 阅读全文
posted @ 2024-09-23 12:36 sad_lin 阅读(16) 评论(0) 推荐(0)
摘要: 又是一个思维毒瘤好题,但dp题都是这样,菜就多练吧。 拆环为链,前缀和加速计算,枚举断点数、起点、终点、断点。 #include <bits/stdc++.h> using namespace std; #define ll long long const int N=105; int a[N*2] 阅读全文
posted @ 2024-09-23 10:24 sad_lin 阅读(38) 评论(0) 推荐(0)
摘要: 原题链接 虽然我还是看题解才会做的(菜),但我还要说这题挺简单的(菜),还是菜就多练。 因为是对一个字符串操作求树的可能数,所以考虑区间dp,设状态 \(dp[i][j]\) 为区间 \(i\) 到 \(j\) 树的状态数。 在转移的过程中如果 \(s_i=s_j\) 时代表这可能为同一个根节点组成 阅读全文
posted @ 2024-09-23 09:21 sad_lin 阅读(32) 评论(0) 推荐(0)
摘要: 学习笔记 因为这题总是涉及相邻位,所以在计算的时候要多计算几个。 #include<bits/stdc++.h> using namespace std; #define ll long long int n,m; ll dp[15][15]; int a[15]; void init(){ for 阅读全文
posted @ 2024-09-22 09:50 sad_lin 阅读(28) 评论(0) 推荐(0)
摘要: 纯纯数位dp板子,可以顺着思路下来。 传统技能学习笔记 不要62 libreoj 设状态为 \(dp[i][j]\) 为第 \(i\) 位是 \(j\) 的可能情况数。 枚举位数,这位的数,低一位的数,将每一位的组合可能存下来,但要把这位是 4 与这位是 6 低一位是 2 的情况排除掉。 void 阅读全文
posted @ 2024-09-22 09:00 sad_lin 阅读(23) 评论(0) 推荐(0)
摘要: 存下输赢代价,计算时先减为平局,判断输赢,如果还是输,那继续加一变为胜利这局,判断输赢。 #include <bits/stdc++.h> using namespace std; #define ll long long const int N=1e6+10; int n; int a[N]; i 阅读全文
posted @ 2024-09-21 22:04 sad_lin 阅读(121) 评论(0) 推荐(0)
摘要: 非常丰富害怕的一天,第一次打csp-s,感觉有点害怕的,但是考前心态还挺好的。 11.10分出发,1点到达,吃了个午餐(馄饨!),然后再等待,拍了几张照后就进去了,考试楼挺近,但为什么一层就4个考场,然后进场,入座观察,靠窗开心,桌子有点高不太开心,花了10分钟左右做完选择,程序阅读有点傻眼,做了一 阅读全文
posted @ 2024-09-21 18:41 sad_lin 阅读(90) 评论(0) 推荐(0)
摘要: 自从钻研这换根DP,犹如梁山好汉破了难关。初时只觉这树状结构,分枝繁复,变化多端,哪知竟有此等妙计。每换一根,便能高效算出新解,岂不似宋江指挥众兄弟,调度得当,事半功倍。更妙的是,这容斥之法,恰如兵法计策,分而治之,避开冗余。学之愈深,愈觉精妙,心中豪气顿生,恨不得与众学者痛饮一场,论此技之神通。 阅读全文
posted @ 2024-09-20 12:27 sad_lin 阅读(20) 评论(0) 推荐(0)
摘要: 大佬题解 感觉分层图的做法太nb了吧,每次向下连边更新权值,我确实没什么补充的了,还是看大佬的吧。 #include <bits/stdc++.h> using namespace std; #define ll long long const int N=1e7+10; int n,m; int 阅读全文
posted @ 2024-09-18 10:06 sad_lin 阅读(37) 评论(0) 推荐(0)
摘要: 根据题意可知,如果第 \(i\) 只生物是天使那么 \(a_i\) 生物就是恶魔,如果第 \(i\) 只生物是恶魔那么 \(a_i\) 生物就是天使,这时我们就发现这与二分图染色法相同,关于二分图染色法可以看这里。 样例一如下图: 因为这题要求出恶魔数量最多的方案,所以每次选择颜色最多的那个颜色加到 阅读全文
posted @ 2024-09-18 08:48 sad_lin 阅读(15) 评论(0) 推荐(0)
摘要: P1330 封锁阳光大学 用二分图的构造方式即可,找到两种颜色最小值加起来,注意:图不连通。 #include <bits/stdc++.h> using namespace std; int n,m; int color[10005]; int vis[10005]; int p=0; int x 阅读全文
posted @ 2024-09-17 23:17 sad_lin 阅读(23) 评论(0) 推荐(0)
摘要: 原题链接 好讲解 好代码 匈牙利算法,每次匹配抛弃原有,选择新有。 #include <bits/stdc++.h> using namespace std; int n,m,c; int v[505][505]; int ask[505]; int matched[505]; int ans; i 阅读全文
posted @ 2024-09-17 22:19 sad_lin 阅读(11) 评论(0) 推荐(0)
摘要: 前言 其实 01bfs 就是用队列维护的最短路,在权值只有 \(0\) 和 \(1\) 时就可以把权值为 \(0\) 的方案放到队列最前,权值为 \(1\) 的则放到最后,然后进行搜索,保证高效和正确性。 P4554 小明的游戏 模板题。 大部分 bfs 题都可以用最短路做,而最短路中 dijkst 阅读全文
posted @ 2024-09-17 13:17 sad_lin 阅读(180) 评论(0) 推荐(0)
摘要: 双倍经验:P2024 [NOI2001] 食物链 当问题要求维护一些对立的关系时(朋友、敌人),就可以用种类并查集实现。 因为有三种关系所以并查集的数组要开三倍空间,第一倍空间存同类关系,第二倍存捕食关系,第三倍存被捕食关系。 注意:一的猎物的猎物就是一的天敌,其他就可以直接并查集维护即可。 注意这 阅读全文
posted @ 2024-09-15 09:59 sad_lin 阅读(36) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页