备战CSP 2020 普及+提高 复赛 专栏
复习备考CSP的专栏
私はずっと、コーデリーが好きです
这个作者很懒,什么都没留下…
展开
-
二分答案+图论 例题题解 c++
题目:传送门首先这题的 最短路 不一定是最优解,因为题目说是路径上最长的一条边的值最小。所以改良一个 BFS 求最短路(不就是接近SPFA吗)结合二分答案,求出结果。AC代码:#include<bits/stdc++.h>using namespace std;#define MAXN 50010#define RI register intint end[MAXN],value[MAXN],nxt[MAXN],head[MAXN];int q[MAXN],n,m,s,t,fr原创 2020-10-25 09:28:42 · 223 阅读 · 0 评论 -
离散化 例题题解 c++
题目:传送门离散化就是把这些坐标(一维二维都可以实现)排序,按照一定的方式标记,求区间覆盖。当然,也可以模拟,和 珂朵莉树。珂朵莉树可以区间赋值啊!!!转化一下就可以了。离散化AC代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define MAX 40001#define IL inline#define RI register int ll n,m=1,ans,c[MAX];int原创 2020-10-25 09:23:20 · 251 阅读 · 0 评论 -
c++ 求gcd的三种完美代码
gcd(x,y)指x和y的最大公约数三种求法分别为 位运算,高精度,优化的高精度。int gcd(int x,int y){ while(y^=x^=y^=x%=y); return x;}int gcd(int x,int y){ while(x!=y){ if(x>y) x=x-y; else y=y-x; } return x;}int gcd(int x,int y){ while(x!=y){ while(x&1==0)x>&g原创 2020-10-24 15:01:00 · 1248 阅读 · 0 评论 -
二分答案 例题 题解
话说今天是1024程序员节???和我这个中学生有关吗有,我要发表技术。题目:传送门二分先坐车的人下车的位置。code by lmrttxlanguage:c++#include<iostream>#include<cstdio>#include<cmath>double s,s1,s2,vren,vche,t1,t2,mid,a,b;int main(){ scanf("%lf%lf%lf",&s,&vren,&vche)原创 2020-10-24 11:31:12 · 174 阅读 · 1 评论 -
lca模板 c++
求树上的两个点的最小公共祖先的算法。void fill(){ for(int i=1;i<=29;i++) for(int j=1;j<=n;j++) f[j][i]=f[f[j][i-1]][i-1]; //f[i][j]表示i往上跳2^j层 } int lca(int x,int y){ if(depth[x]<depth[y]) swap(x,y); for(int i=29;i>=0;i--) if(depth[f[x][i]]>原创 2020-10-22 20:25:45 · 217 阅读 · 0 评论 -
最小生成树模板题题解 c++
请先掌握一些最小生成树的知识题目传送门用克鲁斯卡尔算法,通过并查集合并两个节点和选择是否加边。代码 Lang:c++#include<bits/stdc++.h>using namespace std;#define RI register intinline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();} whil原创 2020-10-12 07:58:38 · 202 阅读 · 1 评论 -
c++ 快速输出 快写 int类型
inline void write(int x){ if(x>9)write(x/10); putchar(x%10+'0');}思路:递归,分解,用putchar以字符的方式输出,达到“快速”谢谢阅读原创 2020-10-05 21:38:20 · 592 阅读 · 1 评论 -
线性筛质数 题解 luoguP3383
线性筛,可以求出1~n之间的质数,储存在数组里。又名欧拉筛。题目传送门:做题去啊代码:lang:c++#include<bits/stdc++.h>using namespace std;#define RI register intinline int read(){ int s=0,w=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();} while(ch>='0'原创 2020-10-12 12:14:04 · 157 阅读 · 0 评论