自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 后缀数组求两个字串的最长公共前缀

lcp(sa[i],sa[j]=min(height[i+1...j])lcp(sa[i],sa[j] = min(height[i+1...j])lcp(sa[i],sa[j]=min(height[i+1...j])所以就是用rmq预处理一下即可int st[N + 5][25];void init(){ for(int i = 1;i <= n;i++)st[i][0] = height[i]; for(int i = 1;i <= 20;i++) {

2022-04-06 20:13:17 473 3

原创 Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics) E

在路上想了一下,没想到思路是对的。题解对于每个位置iii考虑小于t[i]t[i]t[i]的还剩多少个,其中前 i−1i - 1i−1个位置保证 t[i]=s[i]t[i] = s[i]t[i]=s[i]那么位置 iii 对答案的贡献便是小于t[i]t[i]t[i] 的数量和后面 n−in - in−i个数的排列的乘积,注意去重#include <bits/stdc++.h>using namespace std;typedef long long ll;const int mod =

2022-03-06 21:57:57 138

原创 2021 CCPC 威海站 M.810975

先写个代码

2022-01-08 22:27:05 923 1

原创 Codeforces Round #759 Div2 F-Non-equal Neighbours

先提供一个n2n^2n2的做法定义f[i][0/1]f[i][0/1]f[i][0/1]为前i位并且满足x[i]=x[i+1]x[i] = x[i + 1]x[i]=x[i+1]的数量为奇数(1)偶数(0)所以可得转移方程为f[i][k+i−j−1]=∑j=0i−1f[j][k]∗min(a[j+1]...a[i])f[i][k + i-j-1] = \sum_{j = 0}^{i - 1}f[j][k] * min(a[j + 1]...a[i])f[i][k+i−j−1]=∑j=0i−1​f[j..

2021-12-16 21:17:56 396 2

原创 后缀数组(dc3与倍增)

int n,m;char s[N];int sa[N]; // 排名第i位的是第几个后缀int x[N]; // 第i个元素的第一关键字int y[N]; // 第二关键字排名为i的数,第一关键字的位置int height[N]; // sa[i]与sa[i - 1]的最长公共前缀int rk[N]; // 第i个后缀的排名是多少int c[N]; // 桶void get_sa(){ for(int i = 1;i <= n;i++) ++c[x[i] = s[i]];

2021-10-08 20:15:21 156 4

原创 概率与期望

常用公式∑i=0nxi=1−xn+11−x\sum_{i=0}^{n}x^i =\frac{1 - x^{n + 1}}{1 - x}∑i=0n​xi=1−x1−xn+1​ (0≤x<1)(0 \leq x <1)(0≤x<1)∑i=0∞=11−x\sum_{i=0}^{\infty}=\frac{1}{1-x}∑i=0∞​=1−x1​ (0≤x<1)(0 \leq x < 1)(0≤x<1)P(x=i)=P(x≥i)−P(x≥i+1)P(x=i) = P(x

2021-09-29 18:57:01 62

原创 ccpc2018吉林 D-The Moon

期望dpf[i]f[i]f[i]代表的是当q值为i时的期望则可以发现f[i]=p∗(1−i)∗f[i+2]+(1−p)∗f[i+1.5]+1f[i]=p * (1 - i)*f[i + 2] + (1 - p)*f[i + 1.5] + 1f[i]=p∗(1−i)∗f[i+2]+(1−p)∗f[i+1.5]+1#include <bits/stdc++.h>using namespace std;int T,t;double p;double f[1005];int main(

2021-09-29 00:43:42 98 2

原创 2021ICPC网络赛第二场 K-Meal

状压dpf[i]代表选择集合i的概率#include <bits/stdc++.h>using namespace std;#define N 21#define mod 998244353typedef long long ll;int n;ll f[1 << N];ll a[N][N];ll s[1 << N];ll p[N][N];ll fpow(ll a,ll b){ ll res = 1; while(b) {

2021-09-27 19:55:57 393

原创 高斯消元

void guess(){ for(int i = 0;i < n;i++){ int r = i; for(int j = i + 1;j < n;j++){ if(fabs(a[j][i]) > fabs(a[r][i]))r = i; } if(r != i)std::swap(a[r],a[i]); for(int j = n;j >= 1;j--){

2021-08-21 10:11:37 64

原创 HNOI2015 亚瑟王

根据期望的线性性质,我们可以把本题的期望写成 ∑i=1ntp[i]∗d[i]\sum_{i=1}^ntp[i] * d[i]i=1∑n​tp[i]∗d[i]即每个数的实际可能被使用的概率乘上贡献,于是这题我们就把问题转化为如何求tp[i]tp[i]tp[i],首先我们考虑第一张牌,tp[1]=1−(1−p[i])rtp[1] = 1-(1 - p[i])^rtp[1]=1−(1−p[i])r,这个就是第一张牌始终憋着不出的概率,然后我们考虑第二张牌,我们发现在考虑第二张牌的时候,需要考虑第一张牌,没法算出

2021-08-20 20:54:17 118

原创 糖果公园(树上带修莫队)

写了一下午太不容易了。#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <cctype>#define Debug(x) std::cerr << #x << "=" << x << std::endltypedef long long ll;const int N = 2e

2021-08-06 19:03:34 93 3

原创 逆元

逆元:ab≡1ab \equiv 1ab≡1 (mod m) 即b为a在模m意义下的逆元求法因为逆元形式为ab≡1ab \equiv 1ab≡1(mod m),所以我们可以写成ab+my=1 ab + my = 1 ab+my=1把b写成x,即ax+my=1 ax + my = 1ax+my=1用拓欧或者费马小定理求得x即可但是这种方法具有局限性,要求a与m互素所以我们有一种更加通用的方法求逆元即 ab\frac{a}{b}ba​ (mod m) = amodmbb\frac{a mod mb

2021-08-03 09:12:20 124 1

原创 最短路

Floyed 医院设置spfa/dijkstra spfa模板题 dijkstra模板题通往奥格瑞玛的道路Telephone Lines S最优贸易冻结飞行路线Revamping Trails G

2021-08-02 08:54:38 100 3

原创 二维计算几何全家桶

#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>using namespace std;#define eps 1e-8#define N 55#define N_MAX N#define PI acos(-1)double R;int n;int sign(double x){ if(fabs(x) < eps)return 0

2021-07-29 20:01:15 101

原创 三角剖分

开坑#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>using namespace std;#define eps 1e-8#define N 55#define PI acos(-1)double R;int n;int sign(double x){ if(fabs(x) < eps)return 0; if(x &g

2021-07-29 11:06:36 79

原创 自适应辛普森积分

如何求一个函数与坐标系构成的面积?我们可以对函数积分。辛普森积分法就是将一个函数积分的曲线近似的看成二次函数,来验证。#include <cstdio>#include <iostream>#include <cstring>#include <cmath>using namespace std;#define eps 1e-12double l,r;double f(double x){ return sin(x) / x;}d

2021-07-28 20:37:43 117

原创 CQOI2005 三角形的面积并

烦人的扫描线#include <iostream>#include <cstdio>#include <cstring>#include <utility>#include <algorithm>#include <vector>#include <cmath>using namespace std;#define eps 1e-8#define N_MAX 105#define INF 1e6int

2021-07-28 14:24:00 82 1

原创 莫队

先开个坑,回来填block = sqrt(n);bool operator < (const Query &p)const{ return (l / block ^ p.l / block) ? l < p.l : (((l / block) & 1) ? r < p.r : r > p.r);}while(l > ql)ans += del(a[ql++]);while(l < ql)ans += add(a[--ql]);while(r

2021-07-27 19:49:16 99

原创 D - Divorce

#include <cstdio>#include <iostream>#include <cmath>#define N_MAX 100005int n,m,res,S,T;double sum[N_MAX];struct Point{ double x,y; Point(double x = 0,double y = 0):x(x),y(y){} Point operator - (Point pi){ retur.

2021-07-27 15:47:39 97

原创 Codeforces Global Round 15 F. Telepanting

设qiq_iqi​为在xix_ixi​位置处的传送门传送到yiy_iyi​后再走到xix_ixi​的距离,根据一个显而易见的结论:若能走到第i个传送门,则前i - 1个传送门都处于活动状态,所以,qi=xi−yi+qj+...+qi−1q_i = x_i - y_i + q_j + ... + q_{i - 1}qi​=xi​−yi​+qj​+...+qi−1​.#include <bits/stdc++.h>#define N_MAX 200005#define ll long lo.

2021-07-27 09:27:03 288 3

原创 Editorial of Global Round 15 C. Maximize the Intersections

假设k = 0,我们可以发现当所有交线呈星形排列(*)时答案最大。所以对于我们需要添加的n−kn - kn−k条线我们是他们呈星形排列。#include <cstdio>#include <iostream>#include <cstring>#include <utility>#include <vector>using std::pair;using std::vector;int T,n,k;bool use[205]..

2021-07-26 10:09:43 97 1

原创 Editorial of Global Round 15 D Array Differentiation

因为n比较小,我们可以考虑时间复杂度较大的算法,我们可以构造一个环(假设环上有m个点),环上的点满足 s1a1+s2a2+s3a3+...+smam=0s_1a_1 + s_2a_2 + s_3a_3 + ... + s_ma_m = 0s1​a1​+s2​a2​+s3​a3​+...+sm​am​=0 (s是选的符号),我们可以枚举环的长度并枚举s可能的情况,只要有一组环的和为0,即可构造。#include <cstdio>#include <iostream>#inclu.

2021-07-26 09:00:00 111

原创 主席树

主席树是基于权值线段树的一种数据结构,最经典的应用便是处理静态区间第k大建点int newNode(int x){ top++; tree[top] = tree[x]; tree[top].val++; return top;}建树int build(int l,int r){ int now = ++top; tree[now].val = 0; if(l == r)return now; int mid = (l + r) &

2021-07-13 16:52:06 68 2

原创 旋转卡壳

#include <cstdio>#include <iostream>#include <cmath>#include <utility>#include <climits>#include <cstring>#include <vector>#include <algorithm>#define eps 1e-8#define N_MAX 300005using std::pair;us

2021-06-17 20:50:17 96

原创 Codeforces Round #725 (Div. 3)补题

1

2021-06-11 20:40:35 92 1

原创 Codeforces Round #723 (Div. 2)补题

水题,只需要将序列分成两部分即可,一部分是大的,一部分是小的。#include <cstdio>#include <iostream>#include <algorithm>int T,a[105];int main(int argc,char *argv[]){ scanf("%d",&T); while(T--){ int n; scanf("%d",&n); for(int .

2021-05-29 13:50:10 94

原创 网络流:最大流

给定n个点,m条边的有向图,每条边都有一个容量和流量,问从源点到汇点的最大流是多少。EK算法对于给定的图中,我们可以求出一条增广路,将增广路上容量最小的边删掉,可以使得该路不再连通,如果图中没有了增广路,那么源点无法再到达汇点,我们将增广路上的所有最小流量加起来,即可求得最大流。#include <cstdio>#include <iostream>#include <climits>#include <queue>#include <cs

2021-05-28 20:02:32 177

原创 最小圆覆盖

#include <cstdio>#include <iostream>#include <cmath>#include <utility>#include <climits>#include <cstring>#include <ctime>#include <algorithm>#define eps 1e-12#define N_MAX 100005#define PI acos(-1)

2021-05-27 21:29:40 303 1

原创 半平面交

未完#include <cstdio>#include <iostream>#include <cmath>#include <utility>#include <climits>#include <cstring>#include <algorithm>#define eps 1e-8#define N_MAX 3005using std::pair;int n,m,cnt;int deq[N_MA

2021-05-26 20:26:34 114 1

原创 凸包

#include <cstdio>#include <iostream>#include <cmath>#include <utility>#include <climits>#include <cstring>#include <vector>#include <algorithm>#define eps 1e-8#define N_MAX 30005using std::pair;usi

2021-05-24 21:29:40 128 3

原创 D - Deep800080

题意给你一条直线,直线两端点为(0,0)和(a,b),在直线上找一圆心,求能覆盖最多的点为多少Sample input7 5 0 1-1 -11 -10 02 33 410 102 12Sample output5看的是这位大佬的#include <cstdio>#include <iostream>#include <cmath>#include <utility>#include <vector>#incl

2021-05-22 21:23:39 69

原创 计算几何(基础)

#include <cstdio>#include <iostream>#include <cmath>#include <utility>#define eps 1e-8#define N_MAX 300005using std::pair;int n,m,s,r;int sign(double x){ //符号 if(fabs(x) < eps)return 0; if(x < 0)return -1;

2021-05-22 20:41:24 184

原创 C - Bob in Wonderland

给你一棵树,求剪掉一些边,再把它拼到树上,使树变成一条链Sample input61 33 23 44 54 6Sample output2#include <cstdio>#include <iostream>#define N_MAX 300005int n,ans,du[N_MAX];struct Edge{ int node; int next; Edge(int node = 0,int next = 0) : node(

2021-05-22 18:34:10 71

原创 E - Zeldain Garden

题意给定1个n和m,求n到m范围内每个数的因数的个数之和。Sample input2 5Sample output9Sample input212 12Sample output26Sample input3555 666Sample output3852试除法题解

2021-05-22 18:30:09 75

原创 Hello World!

#include <iostream>int main(int argc,char *argv[]){ std::cout << "Hello World!" << std::endl; return 0;}

2021-05-21 20:41:17 59

空空如也

空空如也

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

TA关注的人

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