Live2D
摘要: 快读 char buf[1<<23],*p1=buf,*p2=buf,obuf[1<<23],*O=obuf; #define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<23,stdin),p1==p2)?EOF:*p1++) inline int 阅读全文
posted @ 2019-03-17 16:33 γひん0ΖΖƦ 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 本题要用矩阵快速幂。 这类问题是这样的:边有边权,求从 i 出发经过恰好 k 条边走到 j 的最长路。 对这种题可以想到 DP。设 dpk,i,j 表示从 i 出发经过恰好 k 条边走到 j 的最长路,G 为邻接矩阵,则有转移 dpk,i,j=maxp{dpk−1,i,p+Gp,j} 定义一个广义矩 阅读全文
posted @ 2020-08-20 14:11 γひん0ΖΖƦ 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 分块1 给出一个长为n的数列,以及n个操作,操作涉及区间加法,单点查值。 这是一道能用许多数据结构优化的经典题,可以用于不同数据结构训练。 数列分块就是把数列中每m个元素打包起来,达到优化算法的目的。 以此题为例,如果我们把每m个元素分为一块,共有n/m块,每次区间加的操作会涉及O(n/m)个整块, 阅读全文
posted @ 2020-08-13 12:37 γひん0ΖΖƦ 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 1、普通莫队 SP3267 DQUERY - D-query 题意简明易懂:给你一个长度不大于n≤5×10^5的序列,其中数值都小于等于10^6,有m≤5×10^5次询问,每次询问区间[l,r]中数值个数(也就是去重后数字的个数)。 #include <cstdio> #include <cstri 阅读全文
posted @ 2020-08-13 12:20 γひん0ΖΖƦ 阅读(259) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> #define rg register #define ll long long using namespace std; const int N=1e6+5; const ll INF=1ll<<60; int tot,head[N],nxt[N], 阅读全文
posted @ 2020-08-06 19:25 γひん0ΖΖƦ 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 原题 #include<bits/stdc++.h> #define r register using namespace std; const int N=1e6+5,Mod=1e9+7; int n,fac[N],cnt[N],dp[N],cur,ans; int main() { scanf( 阅读全文
posted @ 2020-01-16 16:38 γひん0ΖΖƦ 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 原题 题意分析 给出一个矩阵,要求每行只能选一个节点,每列选的节点不能超过所有选的节点的一半,不能不选,给出每个节点的选择方案数,求总方案数 思路分析 可以看出,维护每列已选的节点复杂度太大,不太可行;因此很容易想到,先不考虑每列不超过一半的这个限制,求出总方案数,然后再减去考虑这个限制后不合法的方 阅读全文
posted @ 2020-01-16 16:34 γひん0ΖΖƦ 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 原题 1、暴力:10~20pts,复杂度O(n^4)O(n4),只能解决链 暴力很容易就会了。 因为只解决链,所以不用建树,用一个数组存就可以了。恰好这题很良心,编号为 ii 的祖先恰好是 i-1i−1,也就是说本身编号就是顺序的(不像毒瘤T3,链的编号还有可能乱序) 先套一重forfor 枚举 i 阅读全文
posted @ 2020-01-16 16:31 γひん0ΖΖƦ 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 原题 #include<bits/stdc++.h> using namespace std; long long n,k,ans; int main() { scanf("%lld%lld",&n,&k); for (register long long l=1,r,t;l<=n;l=r+1) { 阅读全文
posted @ 2020-01-16 16:29 γひん0ΖΖƦ 阅读(136) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> #define r register using namespace std; const int N=3e5+5; inline int read() { int X=0,w=0; char ch=0; while(!isdigit(ch)) {w| 阅读全文
posted @ 2020-01-16 16:25 γひん0ΖΖƦ 阅读(175) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> using namespace std; const int N=3e6+5; struct node{int to,nxt;}e[N<<1]; int n,m,head[N],tot,a[N],ans; void add(int u,int v) { 阅读全文
posted @ 2020-01-16 16:24 γひん0ΖΖƦ 阅读(157) 评论(0) 推荐(0) 编辑