- 博客(103)
- 收藏
- 关注
原创 【NOI2013】向量内积
一开始用bitset水了50分。。。但想一想那个年代stl还没有解禁啊。。。 然后不会,弃疗,看题解,竟然是矩阵! 生成行向量n^2判断矩阵相等太妙了 自己写..wa…然后抄代码….#include<bits/stdc++.h>#define rep(i,n) for(int i=1;i<=(n);i++)using namespace std;const int N=200005;v
2016-06-21 19:02:26 994
原创 【NOI2014】购票
点分治套cdq分治维护斜率优化dp#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define rep2(i,k,n) for(int i=k;i>=(n);i--)#define inf 0x7f7f7f7f7f7f7f7fullusing namespace std;typedef long long
2016-06-21 18:55:49 811
原创 【NOI2014】随机数生成器
暴力…#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int N=5016;typedef long long ll;int X,a,b,c,d;int rand(){ return X=(1ll*a*X%d*X%d+1ll*b*X%d+c)%d;
2016-06-21 18:53:17 628
原创 【NOI2013】树的计数
通过代数语言来表达问题,使其异常清晰… 差分 –> 原数列 –> 前缀和;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)const int N=200005;int n,D[N],B[N],P[N],pl[N],a[N],vis[N];int main(){scanf("%d",&n);rep(i,1,
2016-06-21 18:52:01 487
原创 bzoj 1563: [NOI2009]诗人小G
四边形不等式,黑书讲的很详细,但其中有一些小错误==… f[j]=min(f[i]+(sum[j]-sum[i]+(j-i-1)-T)^P)) 首先我们要证明 w(i,j)=(sum[j]-sum[i]+(j-i-1)-T)^P 满足凸四边形不等式: w(i,j+1)+w(i+1,j+1)<=w(i+1,j)+w(i,j+1); 个人凭直觉,乱写写感觉应该是满足的……. 详细证明:在这里然
2016-06-21 18:47:56 1167
原创 3720: Gty的妹子树
树分块..#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int N=60105;int n,lastans=0,Size,w[N],m,belong[N],cnt=0,fa[N],ans;struct E{ int to,next; E(i
2016-04-30 09:53:17 321
原创 bzoj 4513: [Sdoi2016]储能表
神奇乱搞; “二进制分组”#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define rep2(i,k,n) for(int i=k;i>=(n);i--)using namespace std;typedef long long ll;int T,p,ans=0;ll n,m,q,zn,zm,bin[
2016-04-30 09:52:18 1098
原创 2331: [SCOI2011]地板
插头dp; 姿态1;#include<cstdio>#include<algorithm>#include<bitset>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define mod 20110520using namespace std;const int N = 5000000;int n, m;int g[N], ans[N],
2016-04-30 09:50:48 277
原创 bzoj2527: [Poi2011]Meteors
整体二分;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define inf 0x3f3f3f3fusing namespace std;const int N=300005;typedef long long ll;vector<int> a[N];int n,m,K,p[N],l[N],r[N],
2016-04-30 09:48:59 351
原创 bzoj 2208: [Jsoi2010]连通数
神奇bitset;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int N = 2005;const int M = 4000000;struct E { int to, next; E(int to = 0, int next = 0):
2016-04-30 09:47:02 284
原创 2594: [Wc2006]水管局长数据加强版
填坑!#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define ls ch[x][0]#define rs ch[x][1]using namespace std;const int maxt = 1500005;const int maxn=100005;const int maxm=100000
2016-04-30 09:43:11 580
原创 bzoj4518: [Sdoi2016]征途
赤果果斜率dp…#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#include<iostream>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define rep2(i,k,n) for(int i=k;i>=(n);i--)
2016-04-30 09:42:04 242
原创 bzoj4517: [Sdoi2016]排列计数
赤果果的错排…#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define rep2(i,k,n) for(int i=k;i>=(n);i--)#define mod 10000000
2016-04-30 09:40:36 338
原创 bzoj2631: tree
lct; 注意标记可以看作a*x+b#include<cstdio>#include<algorithm>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define mod 51061#define ls ch[x][0]#define rs ch[x][1]using namespace std;const int N=100005;typ
2016-04-30 09:39:00 271
原创 bzoj 3555: [Ctsc2014]企鹅QQ
hashashashashash…. 这题也要看题解,没救了…#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define si 131using namespace std;typedef unsigned long long ll;const int N=30005;ll hash[N][205],
2016-04-30 09:36:22 179
原创 bzoj1103: [POI2007]大都市meg
dfs序+树状数组维护;#include<cstdio>#include<algorithm>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;int read(){ int x=0;char ch=getchar(); while(ch<'0'||ch>'9')ch=getchar(); wh
2016-04-30 09:34:41 280
原创 2326: [HNOI2011]数学作业
矩阵乘法,“10进制分组”#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;typedef unsigned long long ll;ll mod;ll n;struct ju{ ll a[4][4];ju(){memset(a,0,sizeof(a));}}
2016-04-30 09:33:17 229
原创 bzoj4310: 跳蚤
二分+后缀数组;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<(n);i++)#define rep2(i,k,n)for(int i=k;i>=(n);i--)using namespace std;const int maxn=100105;typedef long long ll;int K,sa[maxn],he[
2016-04-30 09:28:37 470
原创 4289: PA2012 Tax
迷之建图… 考虑边转点,点转边; 每条边拆成两条有向边 新图中两点(原边)连边当且仅当其有公共点,边权为原图中两边的较大值; 并新建源点汇点,分别与原图中与1,n相连的边连边; 跑最短路即可…. 但这样建图边为O(M^2)级别;考虑枚举中转点x,将所有与它有关的边按费用从小到大排序。 对于每条边,从以x为终点的点向以x为起点的点连边,费用为该边的费用。 从以x为起点的点向下一条边连边
2016-04-30 09:21:24 579
原创 1692: [Usaco2007 Dec]队列变换
贪心,后缀数组保证正确性#include<bits/stdc++.h>#define rep2(i,k,n) for(int i=k;i>=(n);i--)#define rep(i,k,n) for(int i=k;i<(n);i++)using namespace std;const int maxn=100000;int n;char read(){char c=getchar()
2016-04-30 08:57:52 341
原创 bzoj 3894: 文理分科
最小割经典模型 其实最小割就是可以保证有一条边必须被割掉#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)#define inf 1000000000using namespace std;const int N=103;const int maxn=50017;const int M=1000005;i
2016-04-30 08:53:50 379 1
原创 2659: [Beijing wc2012]算不出的算式
数竞基础…整点…嗯#include<cstdio>int main(){ long long p,q; scanf("%lld%lld",&p,&q); if(p==q)printf("%lld",((p-1)/2)*((q+1)/2)); else printf("%lld",((p-1)/2)*((q-1)/2));}
2016-04-30 08:46:02 313
原创 3670: [Noi2014]动物园
维护两个指针,记录cnt表示能向前跳几步#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1000005;ll ans=1;int p[maxn],cnt[maxn],T,n;char s[maxn];int main(){//freopen("in.in","r",stdin);
2016-04-30 08:32:49 269
原创 bzoj4459 丢番图
去分母得到 xy=xn+yn xy-xn-yn=0 xy-xn-yn+n^2=n^2 (x-n)(y-n)=n^2答案就是n^2的约数个数/2(向上取整)…对不起初中数学老师….#include<bits/stdc++.h>using names
2016-04-30 08:25:35 303
原创 bzoj3930 [CQOI2015]选数
首先注意 H-L≤10^5 这个条件,从而可以递推: 记f[i]为gcd恰好为K*i的选数方案数 那么对于每一个i 记L为 a/(K*i) 上取整 R为 b/(K*i) 那么他的方案数就为 (R-L+1) ^ N - (R-L+1) 再减去f[a*i] (a = 1,2,3….) 最后的f[1]即为答案 注意若a/K上取整 == 1 那么全部选K也是一种方案 需要+1引用自
2016-04-30 08:13:46 296
原创 bzoj 1187 [HNOI2007]神奇游乐园
插头dp;参考cdq的论文; 感觉模仿po姐先把状态转移写出来,会更加清晰好调; 注意情况分类,与换行时的小讨论;/************************************************************** Problem: 1187 User: jiazihankk Language: C++ Result: Accepted
2016-04-16 22:35:09 259
原创 bzoj 2510: 弱题
dp,方程易得;用循环矩阵优化;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int N=1005;int n,m,k;struct mat{ double a[N]; mat(){rep(i,1,n)a[i]=0.0;} ///}ans
2016-04-04 22:49:11 331
原创 bzoj 2733: [HNOI2012]永无乡
treap启发式合并;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)#define ls ch[x][0]#define rs ch[x][1]#define son ch[x][d]using namespace std;const int N=100005;int root[N],p[N],ch[N][
2016-04-04 22:46:26 301
原创 bzoj 2648
kd_tree; 目前仍理解不足…#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)using namespace std;const int N=500005;const int inf=0x7f7f7f7f;struct P{ int d[2],mn[2],mx[2],l,r; int& op
2016-04-04 22:45:05 529
原创 bzoj 1812 river
树形dp,转化为儿子兄弟表示法成为一棵二叉树,然后用二叉树的角度dp#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)using namespace std;const int maxn=20000;const int N=150;typedef long long ll;int head[N],tot=0;s
2016-04-04 22:43:11 324
原创 bzoj 1095
动态点分治做法; 更新一个点只会影响一条log的链,信息用三个堆维护; 点分治作为复杂度保证#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)#define inf 0x7f7f7f7fusing namespace std;const int N=100005;struct heap{ priorit
2016-04-04 22:40:04 416
原创 bzoj 1095
神题啊。。。 括号序列做法; 代码扒的hwzer的…#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)#define ls x<<1#define rs x<<1|1using namespace std;const int N=100005;const int N2=500005;const int in
2016-04-04 22:37:00 239
原创 bzoj 3223
splay#include<bits/stdc++.h>using namespace std;const int maxn=100005;int ch[maxn][2],fa[maxn],vis[maxn],val[maxn],root=0,tot=0,s[maxn],n,m;inline void down(int x){ if(vis[x]){ int k1=c
2016-04-04 22:33:35 291
原创 bzoj 1098
求补图联通快数量,使用链表加速的bfs;#include<bits/stdc++.h>using namespace std;const int maxn=100005;int next[maxn],pre[maxn],head[maxn],t[maxn],tot=0,n,m,ans=0,way[maxn];struct E{int to,next;E(int to=0,int next=0
2016-04-04 22:32:20 425
原创 bzoj 1468
楼教主男人八题之一… 点分治做法#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)using namespace std;const int inf=0x7f7f7f7f;const int maxn=100005;int head[maxn],s[maxn],vis[maxn],n,sta[maxn],top=
2016-04-04 22:30:36 211
原创 bzoj 2054: 疯狂的馒头
并查集加速查找#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int maxn=1000015;int col[maxn],n,m,p,q,f[maxn];inline int find(int x){return f[x]==x ? x : f[x]=fi
2016-03-31 22:46:43 308
原创 bzoj 3260: 跳
乱搞题… 一定是先走长再走短,两条边。为什么?因为自信; 打表发现C像组合数…然后就乱搞了…#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod=(1e9)+7;ll qpow(ll a,ll b){ll ans=1,aa=a;for(;b;b>>=1){if(b&1)ans=ans*a
2016-03-31 22:45:23 348
原创 bzoj 3620: 似乎在梦中见过的样子
n^2的kmp暴力可过; 发现竟不会写kmp了…..#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int maxn=15005;const int inf=0x7f7f7f7f;char s[maxn];int p[maxn],k,ans=0,n,g[m
2016-03-31 22:41:14 362
原创 bzoj 3262: 陌上花开
没开权限就想做的一个题,今天终于…2333 排序一维,归并一维,树状数组一维;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int maxn=200005;struct F{ int d1,d2,d3,ans,s;F(){ans=0;s=1;}}
2016-03-31 22:38:04 300
原创 bzoj 3339: Rmq Problem
莫队+对值分块查找;#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=(n);i++)using namespace std;const int maxn=200005;int a[maxn],have[maxn],sum[maxn],n,s,m;struct Q{ int l,r,ans,id;}q[maxn];
2016-03-31 22:33:34 303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人