
待补充
文章平均质量分 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 · 245 阅读 · 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 · 146 阅读 · 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 · 160 阅读 · 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 · 246 阅读 · 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 · 185 阅读 · 0 评论 -
hdu 7088 卷业务模型分析 (三分)
hdu 7088 卷业务模型分析三分非正解,没有证明出 (mx−mn)(mx-mn)(mx−mn) 是严格先递减再递增的(杭电上是 AAA 了,应该是数据没有被卡到)分析:转换问题:将 ∣...∣<=10|...|<=10∣...∣<=10 转换成 (最大差值−最小差值)/2<=20(最大差值-最小差值)/2<=20(最大差值−最小差值)/2<=20k∈[−∞,+∞],(mx−mn)先递减再递增k\in[-\infty,+\infty],(mx-mn)先递减再原创 2021-08-22 16:13:10 · 198 阅读 · 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 · 274 阅读 · 1 评论