- 博客(19)
- 收藏
- 关注
原创 欧拉函数
欧拉函数定义对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)性质最近比较忙,待补充公式ϕ(n)=n∏i=1n(1−1pi)\phi(n)=n\prod_{i=1}^n(1-\frac{1}{p_i})ϕ(n)=n∏i=1n(1−pi1)埃氏筛求解欧拉函数void euler(int n){ for (int i = 1; i <= n; i++) phi[i] = i; for (int i = 2; i <= n; i++) {
2021-04-07 11:36:27 881
原创 矩阵乘法+快速幂取模
#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);#define mod(x) ((x) % MOD)using namespace std;typedef long long ll;typedef unsigned long long ull;const int inf = 0x3f3f3f3f;const int INF = 0x7f7f7f7f;const int MAXN
2021-03-09 12:46:19 303
原创 HDU 6189 and Happy Equation
题目大意:给定nnn和aaa,令m=2nm=2^nm=2n,求b∈[1,m]b\in[1,m]b∈[1,m]且满足ab≡ba(moda^b≡b^a(modab≡ba(mod m)m)m)的bbb个数打表可以得出当aaa为奇数时,sum=1当aaa为偶数时,aba^bab为偶数,又因为mmm为偶数,所以ab%ma^b\%mab%m也是偶数,ab%m=ba%ma^b\%m=b^a\%mab%m=ba%m,同理bbb为偶数令a=2∗xa=2*xa=2∗x,ab%m=2b∗xb%ma^b\%m=2^b*x^b
2021-02-28 20:28:04 136 1
原创 P1434 [SHOI2002]滑雪
https://www.luogu.com.cn/problem/P1434#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;typedef unsigned long long ull;const int INF = 0x3f3f3f3f;const int MAXN = 105;int xs[4
2021-02-27 15:12:09 118
原创 pta L3-025 那就别担心了 (30 分)
下图转自“英式没品笑话百科”的新浪微博 —— 所以无论有没有遇到难题,其实都不用担心。博主将这种逻辑推演称为“逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑自洽的定义……)。现给定一个更为复杂的逻辑推理图,本题就请你检查从一个给定命题到另一个命题的推理是否是“逻辑自洽”的,以及存在多少种不同的推理路径。例如上图,从“你遇到难题了吗?”到“那就别担心了”就是一种“逻辑自洽”的推理,一共有 3 条不同的推理路径。输入格式:输入首先在一行中给出
2021-02-26 14:28:12 386
原创 欧几里德及其扩展
#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;//朴素欧几里德//求a,b的最大公约数int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);}//扩展欧几里德//ax+by=m, m需是gcd(a,b)的倍数才有解//当ax+
2021-02-23 22:26:12 160
原创 ACM-ICPC 2018 南京赛区网络预赛 J.sum
题目:将nnn分解为a∗ba*ba∗b的形式,且aaa和bbb均为无平方因子,f(n)f(n)f(n)可分解的总方式。例如:6=1∗6=6∗1=2∗3=3∗26=1*6=6*1=2*3=3*26=1∗6=6∗1=2∗3=3∗2,因此f(6)=4f(6)=4f(6)=4。求∑i=1nf(i)\sum_{i=1}^nf(i)∑i=1nf(i)分析:唯一分解定理、欧拉筛令n=i∗p[j]n=i*p[j]n=i∗p[j]如果 iii%(p[j])2=0(p[j])^2=0(p[j])2=0,则i=k∗(p
2021-02-19 13:53:41 1090 3
原创 质数
Eratosthenes原理:质数的倍数都是合数欧拉筛原理:合数只会被它的最小质因子筛掉#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;const int MAXN = 105;typedef long long ll;bool vis[MAXN];//筛完之后 vis[x]=1 -> x不是素数,vis[x]=0 ->
2021-02-18 21:28:24 106
原创 取模
#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;/*mod性质(a+b)%m=(a%m+b%m)%m(a-b)%m=(a%m-b%m)%m(a*b)%m=(a%m*b%m)%m*/ll quickpow(ll a, ll b, ll mod) {//a^b%mod ll ans = 1;
2021-02-17 18:35:56 101
原创 UVA-247
题目大意:如果两个人相互打电话(直接或间接),则说他们在同一个电话圈里。分析:flyod传递闭包#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int MAXN = 25 + 5;vector<string> v;//储存所有姓名int g[MAXN][MAXN];i
2021-02-15 22:50:54 89
原创 spfa(fellmen-ford队列优化)
#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int MAXN = 1005;const int INF = 0x3f3f3f3f;int n, m, lc[MAXN], cnt[MAXN];//cnt[]为入队列次数bool vis[MAXN];//是否存在队列标志struct
2021-02-14 22:45:38 102
原创 fellman-ford
求解带有负权边的图的最短路#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int MAXN = 1005;const int INF = 0x3f3f3f3f;int n, m, lc[MAXN];struct Edge { int u, v, w; Edge(int u, i
2021-02-14 21:47:23 79
原创 dijkstra
#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int MAXN = 1005;const int INF = 0x3f3f3f3f;int c[MAXN][MAXN], vis[MAXN], lc[MAXN], p[MAXN];int n, m;//从start出发void d
2021-02-14 20:07:52 75
原创 UVA-1151 Buy or Build
题目大意:平面上有n个点,你的任务是让n个点连通。你可以新建一些边,费用等于两个端点的欧几里得距离。另外还有q个“套餐”可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得连通。求让n个点连通的最小花费。解析:具体见《算法竞赛入门经典(第二版)》 358页主要算法:Kruskal、枚举、位运算位运算//位运算枚举子集for (int i = 0; i < (1 << q); i++) { for (int j = 0; j < q; j++) cout &
2021-02-14 16:47:25 128
原创 kruskal
#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 1006;const int MAXM = 1006;int f[MAXN];int n, m;struct Edge { int u, v, c;}e
2021-02-12 11:36:44 105
原创 prim
#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 1e3 + 5;//先初始化c[][]为INF再输入边权int c[MAXN][MAXN], lc[MAXN];bool vis[MAXN];int pri
2021-02-10 16:59:26 99
原创 c++大数
c++大数加法加法string add(string a, string b) { string s; int l1 = a.size(), l2 = b.size(); int carry = 0; int i, j; for (i = l1 - 1, j = l2 - 1; i >= 0 && j >= 0; i--, j--) { int tmp = a[i] - '0' + b[j] - '0' + carry; s += tmp % 10 + '0
2021-02-10 15:07:15 130
原创 floyd
Floyd算法,求从任意节点i到任意节点j的最短路径#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 1e3 + 5;//c[][]存储两点间最短路径,初始化为INF,c[i][i]=0int c[MAXN][
2021-02-10 14:57:39 78
原创 dijkstra——堆优化
dijkstra——堆优化#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 1e6 + 5;struct qNode { //v->当前结点 c->该结点的最短路径 int v, c; qNo
2021-02-09 22:10:07 130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人