自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Devil_Gary的博客

Devil_Gary

  • 博客(59)
  • 收藏
  • 关注

原创 BZOJ2462 二维hash

这题挺裸的 想着是hash做 但是还不会二维的 搜了份题解现场学习了一发大佬代码#include<bits/stdc++.h>#define MAX 1100 using namespace std; const unsigned int BASE1 = 10016957; const unsigned int BASE2 = 10016957; const int MO = 99

2017-10-20 14:36:02 526

原创 BZOJ2759 hash

这题思路挺神 循环节一定是长度的约数 && i是[l,r]这一段的循环节的充要条件是[l,r-i]和[l+i,r]相匹配 那么很明显可以hash 还有就是要存一下这一段每个字符的个数 循环节一定是gcd(k,cnt) k为每个字母的个数 cnt为当前的得到的gcd cnt的初值为r-l+1 可恶的是cout居然RE贴代码#include<bits/stdc++.h>#define mod

2017-10-20 14:33:02 510

原创 BZOJ4719 &&NOIP2016 天天爱跑酷

这道题还是蛮有趣的 把每一个询问的链拆成s->lca 和lca->t 然后tarjan或者倍增求lca都可过(我的tarjan写丑了) 具体写法见大佬博客我就放份代码 在联系新的代码风格#include<bits/stdc++.h>using namespace std;const int N=3e5+5;int n,m,tot=1,cnt=1;int a[N],head[N],f[N],d

2017-10-20 10:37:25 557

原创 BZOJ1342 单调队列

两个单调队列 一个递减一个递增 做的时候如果当前点-队首大于m l++ 这样就保证了区间长度为m #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define N 1001000#define inf 0x3f3f3f3fusing namespace std;int id1[N],

2017-10-18 20:29:05 770

原创 BZOJ1746 DP

这个题挺好想 转移好麻烦 F[I][J][1…4] 表示当前序列第i列放j块覆盖情况位1…4的最小面积 情况 1 只有上端覆盖 2 只有下端 3 上下由一块一起覆盖 4 上下由不同覆盖 (要先离散化)#include<bits/stdc++.h>using namespace std;const int N=1e3+5;inline

2017-10-18 14:24:52 534

转载 BZOJ3907

题解是粘的 代码也是粘的转自这里(0,0)->(n,m)方案数为C(n,n+m), 然后减去不合法的方案. 作(n,m)关于y=x+1的对称点(m-1,n+1), 则(0,0)->(m-1,n+1)的任意一条路径都对应(0,0)->(n,m)的一条不合法路径(y>x). 所以答案就是C(n,n+m) - C(n+1,n+m).高精度算就OK了#include<cstring>#include<al

2017-10-18 08:57:06 942

原创 BZOJ2396 随机化

直接乘n3肯定GG 考虑建立一个新的1*n的矩阵R A*B*R=C*R R随机化 最后几乎一样就是成立的#include<bits/stdc++.h>using namespace std;int n;int a[1001][1001],b[1001][1001],c[1001][1001];int rnd[1001],ans1[1001],ans2[1001]; void mmul(i

2017-10-17 19:57:39 516

原创 BZOJ4264 边集哈希

刚学会 每个点随机一个值 对一个点把他连得所有点权值异或 找相同就好了#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e6+5;ll n,m,ans;ll h[N],g[N],a[N]; inline int read(){ int x=0,f=1;char ch=getch

2017-10-17 19:53:41 526

转载 BZOJ1426 玄学概率DP

我是看不懂啊 直接粘dalao的 链接【题目链接】 参考【pygbingshen的题解】,推了一晚上终于推出来了。 注意题意指的是,第i次买的时候价钱为i,不是编号为i的邮票价钱为i(否则样例应该是11…)。设g[i]表示已经收集了i张邮票,要收集到n张邮票的期望购买次数。 设pr(x, i)表示已经收集了i张邮票,购买x次能收集到n张邮票的概率。 那么根据g[i]定义,有(pr(x,

2017-10-17 18:15:38 556

原创 BZOJ3697 点分治

很裸的点分治 把权值0改为-1 记录一下重心到某点的权值和 用f[i][0…1],g[i][0…1]分别表示前面几个子树以及当前子树和为i的路径数目,0和1用于区分路径上是否存在前缀和为i的节点。那么当前子树的贡献就是f[0][0] * g[0][0] + Σf [i][0] * g [-i][1] + f[i][1] * g[-i][0] + f[i][1] * g[-i][1],其中i的范围

2017-10-17 17:28:44 287 2

原创 51NOD 1615

还是暴力 从1开始一直加 要是比n大了 做差看是不是偶数 偶数的话就直接输出 不然就继续加 证明的话 如果差△s是偶数的话 就在之前的+(△s/2)变成-(△s/2) 很好想#include<bits/stdc++.h>#define ll long long/*char *TT,*mo,but[(1<<15)+2];#define getchar() ((TT==mo&&(mo=(TT=b

2017-10-17 16:16:15 227 1

原创 51NOD 1419

很显然最小公倍数 n为偶数是n-1*n-2 *n-3和n*n-1*n-3的最小公倍数取max 奇数就是n-1*n-2 *n-3 特判1 2就好了#include<bits/stdc++.h>#define ll long long/*char *TT,*mo,but[(1<<15)+2];#define getchar() ((TT==mo&&(mo=(TT=but)+fread(but,1

2017-10-17 16:13:57 215 1

原创 BZOJ1734 二分

二分距离 水题#include<bits/stdc++.h>using namespace std; int x[100001]; int main() { int n,c; scanf("%d%d",&n,&c); int i; for(i=1;i<=n;i++) scanf("%d",&x[i]);

2017-10-16 15:19:44 526

原创 BZOJ3673 可持久并查集

可以用线段树维护 每个叶子结点存它父亲的位置 查一个点的父亲和正常并查集差不多 记录每个点的深度 当要相连的两个点深度相同时 (p,q) 把q的deep++ 整体用主席树维护 copy hzwer的 Orz#include<cstdio>#include<iostream>using namespace std;inline int read(){ int x=0;char

2017-10-16 15:14:54 558

原创 BZOJ4245 二进制贪心

对于第i位 只有每段第i位都为0 结果才为0 所以要最小的话 从最高位开始判断是否可以为零 具体的求出前缀xor的值 如果第i位偶数个1 那就可以偶数个分一组 这样最后or的结果是0 在奇数个的位置打上标记 即不能在这里分开(这里分开的话or下来肯定是1) 扫完一遍如果 总标记+m-1<=n 那就有分成m段的方案 每一位这样贪心就能得到最小值#include<bits/stdc++.h>#defi

2017-10-16 14:36:13 629 3

原创 BZOJ3251 暴力

发现只有斐波那契这种形式的数才不能构成三角形 INT范围内只有50多项 所以暴力跑 小于50暴力判断 大于50直接输出YES#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e5+5;inline int read(){ int x=0,f=1;char ch=getchar();

2017-10-16 14:28:33 514

原创 BZOJ3126 单调队列DP

记录一下每个位置包含它的区间最左端在哪里还有和他前面的不包含他的区间最右端 然后单调队列跑DP#include<bits/stdc++.h>#define N 200003using namespace std;int n,m,L[N],R[N];int head,tail,q[N],f[N];int main(){ scanf("%d%d",&n,&m); for (i

2017-10-16 14:26:28 628

原创 bzoj题目总结

仓库

2017-10-14 11:41:43 457

原创 BZOJ4443

裸裸的二分图匹配 结果我上来先给排了序 无限WA#include#include#include#include#include#include#define maxn 250using namespace std;struct node{ int w; int x,y;}q[100010];int b[maxn][maxn];int lk[maxn];

2017-07-26 14:28:32 488 1

空空如也

空空如也

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

TA关注的人

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