P3768 简单的数学题 Description 给定整数 \(n,p\),请求出 \[\left(\sum_{i = 1}^{n} \sum_{j = 1}^n ij \gcd(i, j) \right) \bmod p \] 对于 \(100\%\) 的数据,\(n\le 10^{10}, 5 \times 10^8 \le p \le 1.1 \times 10^9\) 且 \(p\in \mathbb{P}\)。 Solution \[\b
做一下数位DP专题... 估计最后只能写一半 (提高)『数位DP』从入门到入土 P4999 烦人的数学作业 板子题 点击查看代码 int num[20]; ll f[20][200]; ll dfs(int pos, bool limit , ll sum){ if(pos == 0) return sum; if(!limit && f[pos][sum] != -1) return f[pos][sum]
题目描述 求 \(\sum_{i=1}^{n} \sum_{j=1}^{m} (n \bmod i) \times (m \bmod j), i \neq j\) mod 19940417 的值 输入格式 输入只有一行两个整数 \(n\),\(m\)。 #include<cstdio> #include<cstring> #include<iostream> using namespace std; #define int long long c
[USACO06NOV]Bad Hair Day S 洛谷题面 题目大意: 给定有 \(n\) 个数的数组 \(a_i\),找到在 \(i\) 之后的第一个大于 \(a_i\) 的数 \(a_j\),那么 \(a_i\) 能造成 \(j-i\) 贡献。求总贡献。 思路: 倒着跑单调栈。 代码: const int N = 8e4 + 10; inline ll Read() { ll x = 0, f = 1;
因为 DP 太差,教练丢给我们一堆联赛难度的 DP 题做,然后完全不会,可能我的 DP 就是普及组水平。。 Luogu P2470 [SCOI2007]压缩 为数不多的自己做出来的紫题 \(f_i\) 表示到 \(i\) 的答案,转移枚举上一个 M 的位置,然后发现还要算一个 \(g_{l,r}\) 表示从 \(l\) 到 \(r\)(\(l\) 左面有一
一道还行的数论题。 难点主要是在特判和快速幂上 首先介绍一下这个符号: 是一个求和符号,英语名称:Sigma,汉语名称:西格玛。 的意思是:其中 表示下界, 表示上界, 从 开始取数,一直取到 ,全部加起来。 所以本题就是求 那不就简单了吗,直接暴力。但是因为数据大,只能过 3 个点。
题面传送门 看到这个不难想到dp 首先有一个基本结论:如果两个点\((x_i,y_i),(x_j,y_j)\)满足\(x_i\geq x_j\)且\(y_i\leq y_j\)那么\((x_i,y_i)\)是没有用的。 所以我们可以得到一系列有用的点,满足\(y_i\geq y_{i-1}\) 所以不难想到\(O(n^2k)\)的dp,设\(f_{i,j}\)为选了\(i\)个区间
题面传送门 真是一道大毒瘤题目,写了我两个晚上。 这个题面转化一下就是树上选\(k+1\)条点不相交路径。 首先不难发现有一个\(O(nk)\)的dp:设\(dp_{i,j,0/1/2}\)为\(i\)子树内选了\(j\)条链,当前点度数0/1/2的最大值。随便转移 特别的我们把一个单独的点看作2度数。 然后这个显然是上
https://www.luogu.com.cn/problem/P1587 首先思考我们要求的是什么? { x
题面传送门 这道题目的圆很特殊,在同一条直线上且半径都是\(r\),所以若干个圆的面积并就是这几个圆的面积和减去相邻圆面积并 那么显然有一个dp:设\(f_{i,j}\)为到了\(i\),选了\(j\)个圆的相邻圆面积并最小值。时间复杂度\(O(n^2k)\) 发现这个转移其实是\(O(n)\)的,式子比较复杂,不适合
前言 传送门 : 思路 一个不超过的背包计数问题 组合上一个 二维费用 CODE const int N = 510; int a[N],f[N][N]; int n,m,b,mod; int ans; void solve() { cin>>n>>m>>b>>mod; //总共写m行 //不超过b个 for(int i=1;i<=n;i++) cin>>a[i]; //一个 f[0][0] = 1;
摘要 给定序列, 求有多少个区间满足 众数出现次数 \(>\lfloor (r-l+1)/2\rfloor\) 解 首先每个区间只会有一个数字. 关于数字 \(x\) 需要满足: \[2(s_r-s_l)>r-l+1 \]即 \[2s_r-r>2s_l-l \]令 \(p_i=2s_i-i\), 则对于 \(x\), 其 \(p_i\) 是 \(\mathrm{cnt}(x)+1\) 段等差数列: 不
水箱 题目链接:luogu P5952 题目大意 给你一个二维的矩阵,每个位置代表那个位置的水位,然后左右相连左右相连的位置都有一定高度的木板。 然后告诉你每个位置水位高度的上限,然后问你水位有多少种可能。 思路 不难发现一个特点,随着水位的增高,许多分开来(水位不同)的地方会合并。 那我们
link。 也许题不错,反正有点降智… 先给结论,在 \[V_N=V \\ E_N=E \\ c(x,y)=w(x,y) \]的流网络中: 可行边:在增广完的 induced subgraph 中,不存在 \(u\) 到 \(v\) 的路径; 必要边:在增广完的 induced subgraph 中,可以从 \(S\) 到 \(u\) 且可以从 \(v\) 到 \(T\)。 先看可行边。不存在
原题链接: 领地选择 - 洛谷https://www.luogu.com.cn/problem/P2004 题目描述 作为在虚拟世界里统帅千军万马的领袖,小 Z 认为天时、地利、人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小 Z 来说是非常重要的。 首都被认为是一个占地 C×C 的正方形。小 Z 希望你寻找到一
#include<bits/stdc++.h>using namespace std;const int N = 2e5 + 10;int n;struct build{ int t1, t2;}a[N];int now, ans;priority_queue<int> Q;bool cmp(build a, build b){ return a.t2 < b.t2;}int main(){ cin >> n; for(int i = 1;
卡牌染色 / Cards 题目链接:ybt金牌导航8-5-6 / luogu P1446 题目大意 有 n 张牌,分别由三个颜色组成,每个颜色告诉你个数。 然后还会告诉你一些允许的置换方案,保证若干次置换都可以被其中的一个置换代替。 然后问你有多少种本质不同的排法,两种本质相同时可以通过置换把它们变成一样
https://www.luogu.com.cn/problem/P2791 赞美出题人(bushi 如果做过luogu P6031 CF1278F Cards 加强版 这题,按照套路推一推就可以推出来了 注意其中有一步要用范德蒙德卷积 code: #include<bits/stdc++.h> #define ll long long #define mod 998244353 #define M 20000050 #defin
https://www.luogu.com.cn/problem/P4332 成功复习了LCT 首先发现状态改变的一定是叶子向上的一条路径 我们记录\(sum[u]\)表示\(u\)节点有几个儿子是\(1\),\(val[u]=sum[u]>1\) 这样维护最大值和最小值,每次\(access\)一下然后在\(Splay\)上二分可以做到\(nlog^2n\), 考虑记录下来\(
https://www.luogu.com.cn/problem/P6122 NB模拟费用流题 费用流的建图不难,我们考虑如何模拟这个过程 可以暴力模拟这个过程因为树的高度只有\(log n\)所以可以暴力去找增广路,然后暴力增广 维护一下每个点儿子中最近的关键点即可 然后记录一下每条边的流量和方向 code: #include<b
https://www.luogu.com.cn/problem/P5631 类似SUM那题 挖掉某一块后看是否还是能构成生成树 考虑分治,用按秩合并并查集来维护联通性 code: #include<bits/stdc++.h> #define N 2000050 using namespace std; struct E { int u, v, c; } e[N]; int cmp(E x, E y) { return
题面传送门 我们先来考虑一个很sb的\(O(n^2)\)的dp 设\(dp_{i,j}\)为\(i\)这个节点为\(j\)权值的概率,那么显然的可以枚举两个儿子的权值然后暴力转移。 因为这个时间复杂度弱于每个叶子向上暴力跳的复杂度,还可以过随机的\(10\)分。 然后发现这个东西是和前后缀和有关所以可以写个
Lost Root 题目链接:luogu CF1061F 题目大意 给你一棵满 k 叉树,然后你每次可以询问一个点是否在两个点的路径中。 然后要你通过不超过 60n 次询问得出根节点的位置。 思路 这题其实挺神奇的。 首先我们可以算出树的深度 \(deg\)。 我们考虑随机找,那找什么呢? 我们考虑找到两个叶子节
前言 d f s dfs dfs是真的好难 传送门 : 思路 因为数据长度只有 6
成绩比较 题目链接:ybt金牌导航8-3-6 / luogu P3270 题目大意 有 n 个人,第一个是自己,然后每个人每科有分数,给你科目数量,科目最高分,你的排名(排名比你高的分数都比你大,排名比你低的分数都比你小)。 然后告诉了你你完胜了多少个人(即每一科都大于等于它),然后问你有多少种满足条件的分数情