
板子代码
鸣蜩二九~
一岁有一岁的味道,一站有一站的风景。
花会沿路盛开,以后的路也是。
展开
-
HDU - Error Curves(三分)
题目传送三分:AC代码#include<bits/stdc++.h>#include<iostream>#include<stack>#include<algorithm>#include<queue>#include<deque>#include<vector>#include<map>#include<set>#include<cmath>#include&原创 2020-12-06 18:02:08 · 118 阅读 · 0 评论 -
欧拉函数及其性质与证明
欧拉函数:欧拉函数是求1到n-1中与n互质的数,特殊的 φ(1)=1欧拉通项(也就是公式):其中pi是n的质因子。证明:由于在1到n中pi (也就是质因子) 的倍数是均匀分布的,那么,去掉这些质因子的倍数(占1/pi)就是x * (1 - 1/pi)那么同理,其他质因子也按照这个来,就得到了上述公式求单个欧拉值直接用唯一分解O(sqrt(n))就可以求得欧拉值模板 cin >> n; ll num = n; for(int i = 2;i *原创 2020-12-02 23:06:56 · 2036 阅读 · 0 评论 -
POJ - The Euler function (欧拉筛,埃氏筛求1到n的欧拉值)
题目传送欧拉塞 算出 (1到n) 欧拉函数值AC代码#include<bits/stdc++.h>#include<iostream>#include<stack>#include<algorithm>#include<queue>#include<deque>#include<vector>#include<map>#include<set>#include<cmath原创 2020-12-02 20:29:12 · 149 阅读 · 0 评论 -
POJ -2407 Relatives (欧拉函数)
题目传送求单个数的欧拉值,板子AC代码#include<bits/stdc++.h>#include<iostream>#include<stack>#include<algorithm>#include<queue>#include<deque>#include<vector>#include<map>#include<set>#include<cmath>#i原创 2020-12-02 19:11:51 · 159 阅读 · 0 评论 -
中国剩余定理
借鉴大佬的博客中国剩余定理模板代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x = x*10 + c -'0';c = get原创 2020-12-01 22:59:58 · 97 阅读 · 0 评论 -
洛谷 - 组合数问题(杨辉三角预处理加dp)
题目传送杨辉三角预处理阶乘: c[1][1]=1; for(int i=0;i<=2000;i++) c[i][0]=1; for(int i=2;i<=2000;i++){ for(int j=1;j<=i;j++){ c[i][j]=(c[i-1][j]+c[i-1][j-1])%k; } } 模数为kdp部分(其实也就是杨辉三角的性质) for(int i=2;i<=2原创 2020-11-25 23:34:16 · 295 阅读 · 0 评论 -
洛谷 - 康托展开与逆康托展开
题目传送AC代码明天补原创 2020-11-19 00:37:30 · 233 阅读 · 0 评论 -
洛谷 - 线性求逆元
题目传送题意:证明:AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x = x*10 + c -'0';c = getch原创 2020-11-18 23:06:32 · 195 阅读 · 0 评论 -
大整数分解模板
#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef long long ll;ll ModMul(ll a,ll b,ll n)//快速积取模 a*b%n{ ll ans=0; while(b) { if(b&1) ans=(ans+a)%n; a=(a+a)%n; b>>.原创 2020-11-13 00:13:17 · 316 阅读 · 0 评论 -
数位dp - 板子题
题目传送存一个状态就可以了,用来判断前一位是不是6的情况具体看代码注释AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x =原创 2020-11-12 23:35:42 · 199 阅读 · 0 评论 -
数位dp
数位dp就是,把一个数按每一位数字来dp,然后计数满足条件的数的数目在不同的限制条件下,有不同的状态,需要用另一维来保存条件状态在计算数目的时候,需要看目前的状态来不同计算和记忆化数目数位dp的实质就是一种优雅的暴力借用大佬博客代码typedef long long ll;int a[20];ll dp[20][state];//不同题目状态不同ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit/*数位上界变量*/)//不是每个题都要原创 2020-11-12 23:24:28 · 144 阅读 · 0 评论 -
高斯消元法
高斯消元法是用来解决n元联立方程组的把方程组转化成增广矩阵,然后转化成上三角矩阵形式(每次变换一行中的那个位置),那么方程组的解就可以很方便带入计算三角形的最后一行的那个数即是Xn的解,然后再带入上一行,解出Xn-1,然后依次继续恒等初等变换1.交换方程组中俩个方程的位置2.把一个方程替换成它的非零倍3.把一个方程替换为它和另外一个方程倍数之间的和或差板子O(n3) double arr[100][100],b[100]; int n,m; cin >>原创 2020-11-12 00:03:12 · 286 阅读 · 0 评论 -
st表简介以及模板代码
#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 5;const int INF = 0x3f3f3f3f;const double EPS = 1e-10;const int mod = 1e9 + 7;const int II = 3.1415926535;typedef long long...原创 2020-03-12 23:58:02 · 777 阅读 · 0 评论 -
单调队列维护数组单调性
模板题一模板题二单调队列是指deque这种双端队列,他既可以从俩端插入也可以删除,基本用法点这里哟那么我们如何维护数组单调性?例8 31 3 -1 -3 5 3 6 7 //求有8个元素的数组在每三个数的区间内的最小值。第一步: 队列为空,那么我们肯定直接先把1加到队尾第二步:3比1大,(我们维护的结果是一个单调递增的序列,我们每次区间最小值为队首),那么3在后面的区间中,还有可能成为最小值(只是可能,如果后面的元素比3小,那么3无论如何都不可能在任意一个区间中成为最小值),我们把其加到队原创 2020-06-04 12:03:14 · 607 阅读 · 1 评论 -
Bellman-Ford 求最长路
洛谷 - P1807题目传送题意:思路:只有DAG(有向无环图)才有最长路最长路其实思想和最短路的思想是一样的,如果没有负权值,那么我们完全可以用dijkstar解决(在枚举当前最短路径的时候,直接枚举最长路径即可)。但是很不幸,这个题有负权值,那么dij解决不了,如果用floyd的话,看到数据为 1 <= n <= 1500,看到会t掉。所以这里用另外一种方法解决,他就是 Bellman-Ford (时间复杂度为(n*m),也就是点的数量乘边的数量,求单源路径)算法原理:才原创 2020-07-03 21:55:11 · 1144 阅读 · 0 评论 -
洛谷 - P3390 【模板】矩阵快速幂 (板子)
题目传送题意:板子题,和普通的快速幂差不多,只是变成了矩阵相乘,这里记录下板子AC代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9')原创 2020-06-28 14:04:18 · 284 阅读 · 0 评论 -
洛谷 - 队列安排(模板c++库函数链表应用)
题目小传送题意:其实我是因为要考数据结构了,不想手写链表,找了个模板题来练练手 qwq…要让我贴手写代码?我要闹了!!!基本介绍一下:list<int> l;//链表的申明list<int>::iterator it[N],it1;//链表的前向迭代器的申明,可以二维也可以一维也可零维,我的理解是存储的元素迭代器的地址push_front(1),push_back(1);向前插入一个元素1和向后插入一个元素1pop_front(),pop_back();//同原创 2020-06-13 23:03:57 · 382 阅读 · 0 评论 -
洛谷 - 【模板】线段树 (区间修改与区间求和) 模板代码
模板题板子代码#include <bits/stdc++.h>inline long long read(){char c = getchar();long long x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x = x*10 + c -'0';c = getchar();}retu原创 2020-06-11 15:21:47 · 220 阅读 · 0 评论 -
树状数组基础操作总结
树状数组用于对区间修改和查询频繁的题树状数组基础操作1.单点修改+区间查询转载大佬的说法模板题模板代码#include <bits/stdc++.h>inline int read(){char c = getchar();int x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x原创 2020-06-10 16:02:20 · 200 阅读 · 0 评论 -
01分数规划算法
例题一例题二基础问题是这样的:现在有n件衣服,每一件都有其价值和价格,现在要求你买k件衣服,使得单位价格内的价值最高01分数规划算法原理:现在假设value为每一件衣服的价值,cost为花费,那么r就是单位价格内价值。现在假设r为单位价格的最大价值,然后我们把r乘过去,然后变换一下得到这时我们再设一个函数f®,自变量只有r,那么有而又因为只有一个自变量,那么现在的xi我们可以看成一个常数,那么我们可以看到 - r* 表示斜率为负,与y轴的截距一定为正,因为价值一定为正,那么我们现在可以原创 2020-06-06 22:42:03 · 479 阅读 · 0 评论 -
洛谷 - 树状数组(区间修改,单点查询模板代码)
模板题链接模板代码//用来复习的,万一给忘了捏通过差分思想来完成区间修改,单点查询。#include <bits/stdc++.h>inline int read(){char c = getchar();int x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9') {x = x*10 + c -原创 2020-06-04 20:24:49 · 194 阅读 · 0 评论 -
洛谷 - 树状数组 (板子代码)
题目链接题目:树状数组的板子代码,该算法是用来频繁的区间修改和区间值查询的算法(log n的时间复杂度)。AC代码#include <bits/stdc++.h>inline int read(){char c = getchar();int x = 0,s = 1;while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}while(c >= '0' && c <= '9原创 2020-06-02 23:08:09 · 349 阅读 · 0 评论 -
快读 (快速读入)模板
之所以有快读,是因为getchar()比scanf快了大概4倍听别人说的,不知道准不准确哈。。 但是又由于getchar又只能一个一个字符的读入,所以自己要写个函数,才有了这个称呼。inline int read(){ char c = getchar();int x = 0,s = 1; while(c <= '0' || c >= '9') {if(c == '-') s = -1;c = getchar();}//是符号 while(c >= '0' &a原创 2020-05-22 16:33:46 · 4204 阅读 · 0 评论 -
(模板) 埃氏筛 和 欧拉塞塞素数
int ans[10000],vis[10000];for(int i = 2;i <= n;i++){ if(!vis[i]) { ans[m++] = i; for(int j = i;j <= n;j += i) vis[j] = 1; }}//埃氏筛 就是利用素数的倍数一定是合数,来进行塞选int ans[10000],vis[10000];for(int i = 2;i <= n;i++)原创 2020-05-21 23:08:38 · 612 阅读 · 0 评论 -
洛谷 -【模板】单源最短路径(标准版) (堆优化 最短路dijkstra 链式存储)
题目链接题目:思路:标准模板dij算法,但是普通的dij还是因为数据过大会TLE。所以这里有一种优先队列的优化方法,使得时间复杂度再次降低。详情代码注释#include <bits/stdc++.h>using namespace std;#define NewNode (TreeNode *)malloc(sizeof(TreeNode))#define Mem(a,b) memset(a,b,sizeof(a))const int N = 2e5 + 5;const原创 2020-05-21 22:43:29 · 351 阅读 · 0 评论 -
洛谷 - 家谱 (字符串并查集)
题目链接题目:思路:就是个赤裸裸的并查集(就是集合的划分),但是这个是字符串的并查集(我就是不会这种操作。。。随便取的名字),以前我只做过数字的并查集,字符串的还是第一次。详情看代码注释#include <bits/stdc++.h>using namespace std;#define NewNode (TreeNode *)malloc(sizeof(TreeNode))#define Mem(a,b) memset(a,b,sizeof(a))const int N原创 2020-05-21 17:47:17 · 376 阅读 · 0 评论 -
最小生成树 Kruskal算法 板子
比Prim算法更优秀,并且更好理解。但是需要借助并查集的知识并查集算法//如果不清楚并查集,可以去看看这篇,顺便a下板子题Kruskal板子题算法思路先把边按照权值进行排序,用贪心的思想优先选取权值较小的边,并依次连接,判断是否这俩个点连通(用并查集来判断是否存在环)然后继续搜。#include <bits/stdc++.h>using namespace std;#d...原创 2020-04-10 19:03:29 · 253 阅读 · 0 评论 -
最小生成树 板子(不加堆优化)
题目链接(板子题)#include <bits/stdc++.h>using namespace std;#define NewNode (ListNode *)malloc(sizeof(ListNode))#define Mem(a,b) memset(a,b,sizeof(a))const int N = 2e5 + 50;const int INF = 0x3f3f...原创 2020-04-08 22:22:54 · 166 阅读 · 0 评论 -
最小生成树 Prim算法 + 链式前向星+ 堆优化 板子
初学,听大佬说时间复杂度为O(NlogN)主要是感觉这个板子太简洁了,看起来舒服。。。(在Prim算法中算不错的了)板子题目链接//大佬就不要嘲讽了。我就写着玩的。。。AC代码如果看不懂,可以去题目里面的题解去看,里面的大佬杠杠滴。#include <bits/stdc++.h>using namespace std;#define NewNode (ListNode *...原创 2020-04-07 19:32:55 · 597 阅读 · 1 评论 -
最短路dijkstra+链式前向星 模板代码
#include <bits/stdc++.h>using namespace std;#define NewNode (ListNode *)malloc(sizeof(ListNode))#define Mem(a,b) memset(a,b,sizeof(a))const int N = 1e6 + 5000;const int INF = 0x3f3f3f3f;co...原创 2020-03-31 17:04:05 · 263 阅读 · 0 评论