待补充
文章平均质量分 62
yezzz.
这个作者很懒,什么都没留下…
展开
-
P4778 Counting swaps (组合数学,打表推通项公式,OEIS)
P4778 Counting swaps 分析: 每个 pip_ipi 向 iii 连边,便构成一张由若干个简单环组成的无向图,目标状态是 nnn 个自环的图 引理:把一个长度为n的环变成n个自环,最少需要n-1次交换操作(证明略) 设 f[n]f[n]f[n] 表示用最少的步数将一个长度为 nnn 的环变成 nnn 个自环,共有多少种操作方法 若将该环拆分成长度为 xxx 和 yyy 的两个环 (x+y=n)(x+y=n)(x+y=n) ,设 T(x,y)T(x,y)T(x,y) 表示有多少种原创 2021-09-27 17:33:16 · 187 阅读 · 1 评论 -
发糖 (gcd,推数学规律)
发糖 - CUSTOJ 分析: 具体怎么推的也不太明白,模了几组数据推出来的数学规律 #include <bits/stdc++.h> using namespace std; typedef long long ll; int gcd(int a,int b) { return b?gcd(b,a%b):a; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T;原创 2021-09-11 19:34:28 · 102 阅读 · 0 评论 -
扩展欧几里得刷题合集
P1516 青蛙的约会 分析: x+km≡y+kn(mod l)x+km\equiv y+kn(mod\ l)x+km≡y+kn(mod l) 转换一下:k(m−n)+lz=y−xk(m-n)+lz=y-xk(m−n)+lz=y−x 然后直接套 exgcdexgcdexgcd 求解即可 注意:m−n<0m-n<0m−n<0 时,等号两边要同时取反 这题有助于理解取最小正整数解时的操作,方程 ax+by=gcdax+by=gcdax+by=gcd 的解不唯原创 2021-09-10 18:32:43 · 124 阅读 · 0 评论 -
hdu 5584 LCM Walk(gcd,逆推)
hdu 5584 LCM Walk 分析: 终点为 (ex,ey)(ex,ey)(ex,ey) , 令上一步为 (x,y)(x,y)(x,y) 由倒数第二步到最后一步分为两种情况:(x,y+z),(x+z,y),z=lcm(x,y)(x,y+z),(x+z,y) ,z=lcm(x,y)(x,y+z),(x+z,y),z=lcm(x,y) 又因为:z>=max(x,y)z>=max(x,y)z>=max(x,y) , 故可以根据 exexex 和 eyeyey 的大小确定是哪一种情况原创 2021-09-01 23:13:07 · 189 阅读 · 0 评论 -
2021CCPC网络赛 hdu 7106 Function (函数求极值,思路转换,二分,三分)
hdu 7106 Function 题意: 让求这个函数的最小值( x∈[1,n]x \in[1,n]x∈[1,n] ) 分析: 若直接枚举 xxx 会超时,转换思路:去枚举 g[x]g[x]g[x] ,g[x]g[x]g[x] 最大才 545454 先将式子化简一下:f=(A∗g[x]+b)x2+(C∗g[x]2+D∗g[x])x 先将式子化简一下:f=(A*g[x]+b)x^2+(C*g[x]^2+D*g[x])x 先将式子化简一下:f=(A∗g[x]+b)x2+(C∗g[x]2+D∗g[x原创 2021-08-31 16:20:31 · 144 阅读 · 0 评论 -
hdu 7088 卷业务模型分析 (三分)
hdu 7088 卷业务模型分析 三分非正解,没有证明出 (mx−mn)(mx-mn)(mx−mn) 是严格先递减再递增的 (杭电上是 AAA 了,应该是数据没有被卡到) 分析: 转换问题:将 ∣...∣<=10|...|<=10∣...∣<=10 转换成 (最大差值−最小差值)/2<=20(最大差值-最小差值)/2<=20(最大差值−最小差值)/2<=20 k∈[−∞,+∞],(mx−mn)先递减再递增k\in[-\infty,+\infty],(mx-mn)先递减再原创 2021-08-22 16:13:10 · 147 阅读 · 0 评论 -
CF659E New Reform (求环的数量)
原题传送门 分析:即求环的数量,但由于是无向图,所以中间还要将两个点之间的环去掉 代码: #include <bits/stdc++.h> using namespace std; const int N=200005; int n,m; struct Node { int nxt,to,w; }e[N]; int tot,head[N]; void add(int u,int v) { e[++tot].nxt=head[u]; e[tot].to=v;原创 2021-02-02 22:10:00 · 177 阅读 · 1 评论