自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 P1891 疯狂 LCM

【代码】P1891 疯狂 LCM。

2022-10-30 17:29:26 249 1

原创 The 2019 ICPC Asia Nanjing Regional Contest J. Spy

题意:首先考虑对于一个di=bx+cyd_i=b_x+c_ydi​=bx​+cy​ 如果其满足di>ajd_i>a_jdi​>aj​ ,那么他对答案贡献为(n−1)!n!∗pj \frac{(n-1)!}{n!}*p_jn!(n−1)!​∗pj​这个问题可以这样考虑:对于一个确定的di>ajd_i>a_jdi​>aj​我们保持a序列顺序不变,排列d序列一共n!种方案,如果恰好要使这个di>ajd_i>a_jdi​>aj​,我们保持 did_idi​与aja_jaj​相对顺序不变,一共(n-1)!种方

2022-08-28 10:34:14 338

原创 求图上最小环

1dfs/bfs O(n) 无向图的基环树,有向图每个点只有一条出边(就是不会出现一个点在多个环中的情况)2.拓扑排序 O(n)3.tarjan O(n)4.并查集 O(n)5.最短路相关FloydO(n^3) dij O(n^2logn) /O(mnlogn)

2021-11-10 10:15:27 345 2

原创 codeforces 280 C. Game on Tree

题目链接:https://codeforces.com/problemset/problem/280/C题意:一棵树,每次操作可以将某个节点以及它所有子节点(包括子节点的子节点…)全部染黑,问将整棵树染黑需要次数的期望.思路:

2021-11-05 00:12:22 220

原创 鸽巢原理学习

1.mmm个在模mmm意义下不同的正整数可以构成模mmm的完全剩余系。2.nnn个数(n>mn > mn>m),必然可以找到两个2.mmm个互不相同的数,一定能找到若干连续的数,使他们之和模mmm为0003.

2021-10-26 20:27:10 1391

原创 Educational Codeforces Round 106 (Rated for Div. 2) D. The Number of Pairs (gcd,计数问题)

题目链接:https://codeforces.com/problemset/problem/1499/D题意:给三个正整数c,d,xc,d,xc,d,x,求有多少对(a,b)(a,b)(a,b)满足c∗lcm(a,b)−d∗gcd(a,b)=xc*lcm(a,b)-d*gcd(a,b)=xc∗lcm(a,b)−d∗gcd(a,b)=x。思路:我们可以看到左边的式子有一个因子为gcd(a,b)gcd(a,b)gcd(a,b),所以x应该为gcd(a,b)gcd(a,b)gcd(a,b)的倍数,我们把式子

2021-10-22 12:13:21 84

原创 Codeforces Round #276 (Div. 1) B. Maximum Value

题目链接:https://codeforces.com/problemset/problem/484/B题意:给一个长度为n的序列,求满足ai>aja_i>a_jai​>aj​的最大的ai%aja_i\%a_jai​%aj​思路:首先想到O(n^2)的暴力,考虑如何优化,对于一个aia_iai​:ai=ai%aj+k∗aja_i=a_i\%a_j+k*a_jai​=ai​%aj​+k∗aj​根据这个式子,我们可以将对aia_iai​的枚举转为对aja_jaj​倍数的枚举,对于每个区

2021-10-21 00:45:38 164

原创 两道关于莫比乌斯函数的题

1. CF803F Coprime Subsequences(容斥原理,莫比乌斯函数)题意:有一个序列,求它的子序列中所有元素gcd位1的数量。思路:2. CF900D Unusual Sequences(莫比乌斯反演,组合计数)题意:

2021-10-19 13:32:49 223

原创 区间乘区间欧拉函数和(线段树,欧拉函数性质)

1.维护一个序列,支持两个操作:(1)0 l r w [l,r][l,r][l,r]区间乘w(2)1 l r 询问[l,r][l,r][l,r]区间欧拉函数和2.思路:考虑欧拉函数的性质:如果p是质数,p∣n且p∣n2,则φ(n)=φ(n/p)∗p如果p是质数,p|n且p|n^2,则\varphi(n)=\varphi(n/p)*p如果p是质数,p∣n且p∣n2,则φ(n)=φ(n/p)∗p如果p是质数,p∣n且p∤n2,则φ(n)=φ(n/p)∗(p−1)如果p是质数,p|n且p\nmid

2021-09-26 22:33:14 395

原创 Educational Codeforces Round 114 (Rated for Div. 2) D.The Strongest Buil(暴力)

1.题目链接:https://codeforces.com/contest/1574/problem/D2.题意:一个人他穿装备,有n个部位可以穿。第i个部位有c_i件装备可以选择,加的属性是a[i][c_i](每个部位的装备属性按从小到大排列),有m种装备组合是被ban掉不能使用的。现在让你找出最大属性和的装备组合。3.思路:考虑暴力搜索:对于第一个样例:我们可以得到这样一颗搜索树:首先发现有许多状态是重复的,可以DP或者记忆化搜索,但是这样做并不能让搜索空间缩小的可以接受的范围内。所以得考

2021-09-21 11:46:20 234

原创 RSA非对称加密算法

1.算法步骤:选择两个质数p,qp,qp,q计算N=p∗q,ϕ(N)=(p−1)∗(q−1)N=p*q,\phi(N)=(p-1)*(q-1)N=p∗q,ϕ(N)=(p−1)∗(q−1)选择一个与小于NNN的与NNN互质的数eee,并且求出eee在模ϕ(N)\phi(N)ϕ(N)意义下的乘法逆元xxxe作为公钥,x作为私钥加密就是 Ae%N=MA^e \% N=MAe%N=M解密就是Mx%N=AM^x\%N=AMx%N=A2.算法证明:M=AeM=A^eM=AeMx=(Ae)xM^x=

2021-09-19 23:31:19 119

原创 [AtCoder Beginner Contest 077]D-Small Multiple (思维、最短路)

题目链接:https://atcoder.jp/contests/abc077/tasks/arc084_b?lang=en题意:给一个kkk,对于所有kkk的倍数,求这些数中十进制下各位和的最小值。思路:首先考虑暴力枚举kkk的倍数,由于上界不好确定,而且答案对应的数字可能很大,不太可行。k的倍数可以看作模k余0的同余类,对于任意一个数,都可以由1,不断进行+1,*10操作构造出来的,在这个过程中,+1会给答案增加1的权值,*10不会给答案带来权值;所以在模k的完全剩余系中对应元素连边(对于一个xx

2021-09-14 16:27:31 316

原创 Flowers(鸽巢原理/抽屉原理 二分)

题目链接:https://ac.nowcoder.com/acm/contest/7830/J题意:一共nnn种花,第iii种花有aia_iai​朵,现在要取mmm朵不同的组成一束花,问最多能组成多少束花?思路:我们考虑假设最多能组成y束花,每束花要m朵不同颜色的花,...

2021-09-14 10:57:49 130

原创 组合数的计算

1.加法递推利用性质Cmn=Cm−1n+Cm−1n−1C^{n}_{m}=C^{n}_{m-1}+C^{n-1}_{m-1}Cmn​=Cm−1n​+Cm−1n−1​递推,复杂度O(N^2)代码: c[1][0] = c[1][1] = 1; for(int i = 2; i < N; ++ i) { c[i][0] = 1; for(int j = 1; j < N; ++ j) c[i][j] = (1ll * c[i

2021-09-13 21:46:35 213

原创 Pairs Forming LCM LightOJ - 1236

题目链接:https://vjudge.net/problem/LightOJ-1236题意:求∑i=1n∑j=1n[lcm(i,j)=n]\sum_{i=1}^{n}\sum_{j=1}^{n}[lcm(i,j)=n ]∑i=1n​∑j=1n​[lcm(i,j)=n]思路:对于一组i,j我们分解质因数,i=p1a1∗p2a2∗…∗pkakj=p1b1∗p2b2∗…∗pkbki=p1^{a1} * p2^{a2}* … *pk^{ak}\\j=p1^{b1} * p2^{b2}* … *pk^{b

2021-09-07 10:15:13 86

原创 Sigma Function LightOJ - 1336

题目链接:https://vjudge.net/problem/LightOJ-1336#author=Amove题意:求[1,n]之间的因子和函数为偶数的个数思路:质因数分解后,约数之和为:(p10+p11+…+p1c1)∗…∗(pk0+pk1+…+pkck)(p1^{0} + p1^{1} + … + p1^{c1}) * … * (pk^{0} + pk^{1} + …+ pk^{ck})(p10+p11+…+p1c1)∗…∗(pk0+pk1+…+pkck)它是多个式子的乘积,考虑到只有奇数乘

2021-09-06 18:17:44 105

原创 Aladdin and the Flying Carpet LightOJ - 1341

题目链接:https://vjudge.net/problem/LightOJ-1341思路:开始想了n\sqrt{n}n​的暴力算法,发现复杂度大概在4e9显然不能过。考虑分解质因数(试除法复杂度也不够,Pollard Rho 算法 n1/4n^{1/4}n1/4复杂度可以行),我们对分解完的质因数进行dfs枚举原数中所有因数(因数个数期望位ln(n)ln(n)ln(n)),进行计数。复杂度O(n1/4+len(n))O(n^{1/4}+len(n))O(n1/4+len(n))。代码:#inclu

2021-09-04 17:00:27 143

原创 Bi-shoe and Phi-shoe LightOJ - 1370

题目链接:https://vjudge.net/problem/LightOJ-1370题意:t组样例,每次给n个整数,对于每个整数aia_{i}ai​,你要找到一个最小的x,x的欧拉函数值大于aia_{i}ai​,答案是n个x的和。思路:筛法求1-N之间所有值的欧拉函数,做一个欧拉函数值到自变量的映射(相同的地方取小的),然后倒着递推求出如果对应整数是aia_{i}ai​时,答案的权值。复杂度O(N)代码:#include<bits/stdc++.h>#define ll long

2021-09-04 14:37:28 88

原创 Rise of Shadows(2020 ICPC shenyang I)

#include<bits/stdc++.h>#define ll long long#define fi first#define se secondusing namespace std;typedef pair<ll,ll> pii;int main(){ ll H,M,A; scanf("%lld%lld%lld",&H,&M,&A); if(A==H*M/2) { printf("%lld",H*M); return

2021-09-04 00:36:39 377

原创 luogu P2261 [CQOI2007]余数求和

#include<bits/stdc++.h>#define ll long longusing namespace std;int main(){ ll n,k; scanf("%lld%lld",&n,&k); ll ans=n*k; for(ll l=1,r;l<=n;l=r+1) { if(k/l!=0) r=min(k/(k/l),n); else r=n; ans-=(l+r)*(r-l+1)*(k/l)/2; //print

2021-09-03 17:29:57 162

原创 hdu 4497 GCD and LCM

#include<bits/stdc++.h>#define ll long long#define fi first#define se secondusing namespace std;const int N=1e6+7;map<int,int> mm;void divide(int x){ for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) {

2021-09-03 17:27:38 120

原创 Multiply(2019 ACM- ICPC Asia Xuzhou Regional Contest E)

#include<bits/stdc++.h>#define ll long long#define fi first#define se secondusing namespace std;const int N = 1e5 + 7;ll x, y, a[N];ll max_factor;struct BigIntegerFactor { const static int N = 1e6 + 7; const static ll inf=0x3f3f3f3f3f

2021-09-03 17:25:34 160

原创 Divisors of the Divisors of an Integer(2018-2019 ACM-ICPC, Asia Dhaka Regional ContestC)

#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e6+7,mod=1e7+7;int primes[N], cnt; // primes[]存储所有素数bool st[N]; // st[x]存储x是否被筛掉void get_primes(int n){ for (int i = 2; i <= n; i ++ ) {

2021-09-03 17:25:00 144

原创 AcWing 222. 青蛙的约会

#include<bits/stdc++.h>#define ll long longusing namespace std;ll exgcd(ll a, ll b, ll &x, ll &y){ if (!b) { x = 1, y = 0; return a; } ll d = exgcd(b, a % b, y, x); y -= a / b * x; return d;}ll

2021-09-03 17:23:04 174

原创 AcWing 201. 可见的点

#include<bits/stdc++.h>#define ll long long#define fi first#define se secondusing namespace std;const int N=1007;int primes[N], cnt; // primes[]存储所有素数int euler[N]; // 存储每个数的欧拉函数bool st[N]; // st[x]存储x是否被筛掉void get_eul

2021-09-03 17:22:10 66

原创 质数距离(AcWing 196)

#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e6+7;ll primes[N], cnt;bool st[N];ll need[N],idx;bool stn[N];void init(ll n){ cnt = 0; for (ll i = 2; i <= n; i ++ ) { if (!st[i]) primes[cnt

2021-09-03 17:21:18 124

原创 夏洛克和他的女朋友(AcWing 1293)

#include<bits/stdc++.h>using namespace std;const int N=2e5+7;int primes[N], cnt; // primes[]存储所有素数int col[N],idx;void get_primes(int n){ for (int i = 2; i <= n; i ++ ) { if (!col[i]) { primes[cnt ++ ]

2021-09-03 17:20:27 117

原创 Fox And Jumping(CF510D)

#include<bits/stdc++.h>#define ll long long#define fi first#define se secondusing namespace std;typedef pair<ll,ll> pii;const int N=307;pii a[N];map<ll,ll> dp;int main(){ ll n; scanf("%lld",&n); for(int i=1;i<=n;i++) s

2021-09-03 17:18:15 163

原创 洛谷 P4139 上帝与集合的正确用法(欧拉降幂)

#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e7+7;ll primes[N], cnt; // primes[]存储所有素数ll euler[N]; // 存储每个数的欧拉函数bool st[N]; // st[x]存储x是否被筛掉ll qpow(ll m,ll k,ll mod){ ll res = 1 % mod,

2021-09-03 17:16:29 137

原创 基础数论模板与公式

1.素数判定1.1试除法判素数bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return true;}1.2 Miller−Rabin 判定法ll Rand() {//决定了程序的性能 static ll x = (srand((int

2021-09-02 20:35:37 538

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)Link with EQ

题目描述:n个位置,第一个人随机选,后面的人会选择与其他所有人都最远的位置坐下(如果有多个,则随机选一个),问最多能坐多少人?思路:考虑n个坐位,第一个人坐在两端任意一个位置时候能坐多少人设f(x)为 x个位置按先坐两端能坐下多少人,1.先坐到两端,f(1)=1,f(2)=12.然后下一个人必然会坐到(i+1)/2这个位置,问题就转化为f((i+1)/2)与f(i-(i+1)/2+1)能坐多少人,求和再减去(i+1)/2位置重复算的一个。递推式如下:f(x)=f((i+1)/2)+f(i−(i+

2021-08-24 16:06:19 320

原创 2021杭电多校1 1007/HDU 6956 Pass!

思路就是找规律发现递推公式,用递推公式求解通项公式,bsgs分奇偶求解可以看这篇博客https://www.cnblogs.com/xiaopangpangdehome/p/15042792.html(有exbsgs和bsgs模板)有一道类似的题:随机数生成器(洛谷也有这个题目)题目大意:思路:利用特征方程求解通项公式,再用bsgs求解,时间复杂度是O(sqrt§),注意一些特殊情况。代码:#include <bits/stdc++.h>#define ll long lon

2021-08-24 14:33:05 210

原创 简答的博弈论(2)

1.NIM游戏(异或和为0必败态,不为0后手胜)2.sg函数(不写了)一些题目1.GCD game题目:N个数,每次操作可以将一个数除以一个他的约数,轮流进行操作,不能除的人输。问先手必胜的条件?结论:质因子个数之和等价与NIM游戏的石子数所有数所有质因子个数之和异或和不为 0 ,先手胜,为 0 后手胜2.台阶NIM游戏题目:现在,有一个 n 级台阶的楼梯,每级台阶上都有若干个石子,其中第 i 级台阶上有 ai 个石子(i≥1)。两位玩家轮流操作,每次操作可以从任意一级台阶上拿若干个石子

2021-08-20 00:12:01 219

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(3)Rise in Price

设 fi,j,k 表示从 (1, 1) 走到 (i, j),一路上收集了 k 个钻石时,钻石的单价最高能涨到多少,则 ans = max(k × fn,n,k)。42021“MINIEYE 杯” 中国大学生算法设计超级联赛(3) 题解对于固定的 (i, j) 来说,考虑两个状态 fi,j,x 和 fi,j,y,其中 x < y,如果 fi,j,x ≤ fi,j,y,则状态 fi,j,x 一定不可能发展为最优解,可以剔除。对于每个 (i, j),用列表按照 k 升序保存所有状态,并剔除不可能

2021-08-06 17:23:32 127

原创 2021牛客暑期多校训练营#4 B.Sample Game

#include<iostream>#define ll long longusing namespace std;const int N=107,mod=998244353;ll a[N],b[N],p[N];ll qmi(ll m, ll k, ll p){ ll res = 1 % p, t = m; while (k) { if (k&1) res = res * t % p; t = t * t % p;

2021-08-06 17:19:00 197

原创 简单的博弈论(1)

公平组合游戏ICG若一个游戏满足:由两名玩家交替行动;在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关;不能行动的玩家判负;则称该游戏为一个公平组合游戏。NIM博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。因为围棋交战双方分别只能落黑子和白子,胜负判定也比较复杂,不满足条件2和条件3。有向图游戏任何一个游戏可以看作一个图(或者状态机),每次操作都是沿着图(状态机)的边移动。给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子。两名玩家交替地把

2021-07-20 09:57:08 299

原创 动态规划(DP):I-区域

动态规划(DP):I-区域#include<bits/stdc++.h>using namespace std;const int N=17;int a[N][N],sum[N][N];int dp[N][N*N][N][N][2][2];struct node{ int i,j,l,r,x,y;}fa[N][N*N][N][N][2][2];struct node mm;void print(int i,int j,int l,int r,int x,int y){

2021-07-14 14:00:03 440

原创 Codeforces Round #696 (Div. 2)

Codeforces Round #696 (Div. 2)A.https://codeforces.com/contest/1474/problem/A第一位肯定是1,考虑第一位往后需要满足两点1.该位尽可能大2.与上一位不同AC代码:#include<iostream>using namespace std;const int N=1e5+7;char s[N];int main(){ int t; scanf("%d",&t); while(t--)

2021-07-10 08:14:56 70

空空如也

空空如也

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

TA关注的人

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