bzoj
取竹
Hai capito?
展开
-
bzoj 2667 [cqoi2012]模拟工厂
bzoj 2667: [cqoi2012]模拟工厂由于n≤15,爆枚接受哪些订单 每次Check的时候,对于每段时间显然先提高生产力再生产产品 那么我可以考虑这一段内先尽量提高生产力 但是这样可能会导致生产力提高得太高而没有足够的时间生产产品使得某个订单失败 因此我们计算出对于后面的每一个订单,最多花多少时间提高生产力可以满足如果用接下来的时间都生产的话不至于fail 由于产品数量是原创 2017-12-05 21:16:34 · 186 阅读 · 0 评论 -
[bzoj]1026: [SCOI2009]windy数
看题目很容易想到数位dp,具体做法看这位的:http://blog.csdn.net/zz_ylolita/article/details/50754618讲的还是很详细的。#include #include #include #define ll long longusing namespace std;ll a,b;int len,d[12];ll dp[12][12];原创 2017-07-04 18:02:07 · 160 阅读 · 0 评论 -
[bzoj] 1049: [HAOI2006]数字序列
这题第一问直接做比较复杂,我们考虑转化为问题的补集,那么要满足不被修改,需要条件是aj − ai ≥j − i。建立一个b数组为b[i]=a[i]-i,就是n减去b数组的最长不下降子序列长度。第二问看ydc大神的吧https://pan.baidu.com/share/link?uk=2651016602&shareid=1490516411#include #include原创 2017-07-04 17:45:58 · 400 阅读 · 0 评论 -
[bzoj]3876: [Ahoi2014]支线剧情
可以看出来是有上下界的费用流,我们对于一条边权为z的边u,v,从s向u连一条容量为1的边,从u到v连上容量为INF的边,让此边可以重复走。对于每个点p,从p到T连上一条流量为p,费用无的边,再从x到1连上一条费用无,流量无限的边,直接跑网络流就行了。跑的好慢啊。。。#include #include #include #include using namespace std原创 2017-07-12 23:35:20 · 1648 阅读 · 0 评论 -
[bzoj]1040: [ZJOI2008]骑士
根据关系建立一个无向图,每次找到一个环。对于环上的一条边e,取两边的点u,v,各做一次树形dp。对于g[x]表示不取x时最大值,对于f[x]表示取x时最大值。在做dp时要将边e断开不走。取g[u]与f[u]的最大值加入答案中。#include #include #define ll long longusing namespace std;const int N=10000原创 2017-06-12 20:04:40 · 247 阅读 · 0 评论 -
[bzoj]1520: [POI2006]Szk-Schools
对于每座学校,都将它与可更换的值连上一条容量为1,权值为c*|a-m|的边。然后跑一遍费用流就行了。#include #include #include #include using namespace std;const int M=1000005,N=2005,Inf=1<<29;int n,m,a,b,c;struct edge{ int nxt,to,ro,c,fl原创 2017-07-11 22:37:28 · 293 阅读 · 0 评论 -
[bzoj]1092: [SCOI2003]蜘蛛难题
按时间去模拟就行了。把管道建成双向边,然后每次求出可以流到的,如果有一个已经溢出就输出-1。#include #include using namespace std;const int N=25;struct node{ int x,y,h;}g[N];bool f[N];int p,pre[N*N],L,tot,u,v,w;int x,y,ans;struct原创 2017-06-09 20:58:38 · 608 阅读 · 0 评论 -
[bzoj]1046: [HAOI2007]上升序列
题目要求我们求出以每个数开头的最长上升序列,那么我们就倒着做最长下降序列。best[i]数组记录以i开头的最长上升序列的最大值。处理时记得是位置的字典序。#include using namespace std;const int N=100005;int n,cnt,m;int a[N],f[N],best[N];inline int find(int x){ int原创 2017-06-29 21:36:32 · 197 阅读 · 0 评论 -
[bzoj]1211: [HNOI2004]树的计数
此题与[HNOI2008]明明的烦恼是同类型的题目。在处理时记得质因数分解,直接做会炸精度。以及无解时输出0。#include #include #define ll long longusing namespace std;int n,l;int dr[155];int pr[155],tot;int num[155];ll s[155],ans;inline void原创 2017-06-29 21:26:53 · 213 阅读 · 0 评论 -
[bzoj]1015: [JSOI2008]星球大战starwar
这道题如果直接做很困难,但如果我们倒过来做,此题就变成了一个可以用并查集做的题。注意还没还原到的星球不能和当前一起处理。#include #include using namespace std;const int N=400005;int n,m,num,x,y,k;int atk[N],fa[N];bool yes[N],in[N];int ans[N];int fi,原创 2017-06-08 20:11:24 · 305 阅读 · 0 评论 -
[bzoj]1024: [SCOI2009]生日快乐
直接暴力求答案,听说标准解法是二分最小值?#include #include using namespace std;int x,y,n;double dfs(double x,double y,int n){ register int i; if (n==1) return (x>y)?(x/y):(y/x); double ans=100000; for (i=1;i<=原创 2017-06-03 19:19:08 · 187 阅读 · 0 评论 -
[bzoj]4596: [Shoi2016]黑暗前的幻想乡
此题用容斥做,答案就是没有不选的-一个不选的+两个不选的-三个不选的……2^n枚举出不选的,算方案使用矩阵树定理。#include #include #include #include #define ll long longusing namespace std;const ll pp=1000000007;struct node{ int u[400],v[40原创 2017-06-14 09:05:28 · 360 阅读 · 0 评论 -
[bzoj]1603: [Usaco2008 Oct]打谷机
直接暴力dfs搞出解就行了。。。#include using namespace std;const int N=1005;int n,cnt=1;struct node{ int from,to,w,nxt;}edge[N<<1];int head[N];inline void add(int from,int to,int w){ edge[cnt原创 2017-06-14 21:09:59 · 243 阅读 · 0 评论 -
[bzoj] 1073: [SCOI2007]kshort
罕见的题目就是题意的题(感觉好奇怪?)a*跑不过去,只能cheat。正解应该是yen算法,但是这东西我问manchery大神被D飞,以下原话:这算法学什么?用可持久化可并堆啊!。。可持久化堆等学了再来补上。#include #include #include #include using namespace std;const int N=51;const int M=原创 2017-07-06 21:28:02 · 659 阅读 · 0 评论 -
bzoj 1041 [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点http://www.lydsy.com/JudgeOnline/upload/1041.flvhttp://blog.csdn.net/csyzcyj/article/details/10044629有上述定理,则问题转化为求r^2的 %4余1因子数 和 %4余3因子数。用约数个数定理,去掉偶因子后可以求出两者之和因此,求其中一种即可。从%4余1的因子数下原创 2017-12-05 21:14:04 · 198 阅读 · 0 评论 -
bzoj 3629: [JLOI2014]聪明的燕姿
3629: [JLOI2014]聪明的燕姿首先,若n=a1p1∗a22...anpnn=a1^p1*a2^2...an^pn,那么n的约数和为(1+a1+a12+...+a1p1)∗(1+a2+a22+...+a2p2)∗...∗(1+an+an2+...+anpn)(1+a1+a1^2+...+a1^p1)*(1+a2+a2^2+...+a2^p2)*...*(1+an+an^2+...+an^p原创 2017-12-05 20:20:35 · 220 阅读 · 0 评论 -
poj 3761 Bubble Sort
poj 3761 Bubble Sort找规律发现冒泡排序的轮数与逆序对有关,kk是最大逆序对的个数。 令c(k)c(k)表示最大逆序对小于等于kk的数列个数。 那么c(k)=k!∗(k+1)n−kc(k)=k!∗(k+1)n−k 所求的答案为c(k)−c(k−1)c(k)−c(k−1)#include <cstdio>#define t14 20100713#define ll lon原创 2017-12-10 20:25:05 · 296 阅读 · 0 评论 -
bzoj 1013 [JSOI2008]球形空间产生器sphere
bzoj 1013: [JSOI2008]球形空间产生器sphere裸地高斯消元。。#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int n;const double eps=1e-6;double f[22],a[22][22];inline void gauss(){ re原创 2017-12-10 20:19:31 · 236 阅读 · 0 评论 -
BZOJ 2006超级钢琴
http://blog.csdn.net/zzkksunboy/article/details/76927058 写的很详细了,其实是一种贪心模板#include <cstdio>#include <queue>#include <algorithm>#define mk(A,B,C,D) make_pair(make_pair(A,B),make_pair(C,D))using name原创 2017-09-11 21:39:59 · 225 阅读 · 0 评论 -
BZOJ 1150 数据备份Backup
算是套路的贪心,因为给出数据是有序的,先将相邻的搞成线段存进堆里,每次取出一个最小的值,加到总值中,并改变左右的链表值,并将左右线段值存入当前位置作为撤销操作。#include <cstdio>#include <algorithm>#include <queue>#define mk(a,b) make_pair(a,b) using namespace std;const int in原创 2017-09-12 20:35:13 · 259 阅读 · 0 评论 -
[bzoj] 2851: 极限满月
这道题初看时没想到过数,看了题解才知道可以建虚树。对题目分析可以将b数组想成一颗数,第i个就是i到根节点的上路径的所有点。那么在构造树时就相当于将a数组中的所有点取lca ,再将i节点连到lca上。这样的复杂度是O(nlogn)的。在询问时离线处理,dfs更新每个点对问题的贡献。其深度减去lca的深度即为贡献。#include #include #include us原创 2017-07-04 17:38:22 · 321 阅读 · 0 评论 -
bzoj[1855] [Scoi2010]股票交易 ,[2826]Minecraft的世界末日
这两道题本质上是一样的。令f[i][j]表示第i天持有j个股票(污染物),那么答案一定是f[i][0]中的一个。dp转移式:f[i][j]=max(f[i-t-1][k]-a[i]*k+a[i]*j)用单调队列维护f[i-t-1][k],保证队头最大。队列中记录k。当队头的k加上当天的最大买入值仍小于j时弹出队头队尾的值若小于当前的值则弹出队尾。#include原创 2017-07-02 13:04:27 · 384 阅读 · 0 评论 -
[bzoj]4590: [Shoi2015]自动刷题机
二分答案,暴力验证。找到一个最小满足的值与一个最大满足的值。记得最后判断二分的是否正确。#include #include #define ll long longusing namespace std;int n,k;ll w[100005];ll sum,x,y;inline ll pd(ll x){ register int i; ll now=0,ret=0;原创 2017-07-06 21:43:36 · 292 阅读 · 2 评论 -
[bzoj]2130: 魔塔
这道题我没想出来,只能看题解,学长的题解都指向了Claris的题解。貌似维护最小值,次大值会跑的更快?不过我没打。#include #define C (c=getchar())using namespace std;const int N=100005,inf=1<<29;int n,m,ans;struct qaq{ int vl,vr,vx,sig;}tr[269505原创 2017-07-06 21:34:19 · 259 阅读 · 0 评论 -
[bzoj]2306: [Ctsc2011]幸福路径
这道题用倍增+floyd。令f[i][j][t]表示从i到j走2^t步的最大值。就有f[i][j][t]=max{f[i][k][t-1]+f[k][j][t-1]*p^(2^t)}在实际处理时可以省略t,每次floyd只需将p乘方即可。#include #include using namespace std;const int N=105;int n,m,st,x,原创 2017-06-04 21:06:38 · 256 阅读 · 0 评论 -
[bzoj]2179: FFT快速傅立叶
FFT做高精乘。。#include #include #include #include #define node complex#define pi acos(-1)using namespace std;const int N=140005;node a[N],b[N];char s1[N],s2[N];int le1,le2,n,m,L,r[N],c[N];void原创 2017-06-04 18:09:29 · 273 阅读 · 0 评论 -
[bzoj] 1628: [Usaco2007 Demo]City skyline
用单调栈维护,每当有一栋楼高度大于栈头,就++ans。小于则出栈。#include#define C (c=getchar())using namespace std;const int N=50005;int n,w,ans,p=1;int que[N],x[N],y[N];inline char nc(){ static char buf[100000],*p1=buf,*原创 2017-05-31 08:49:59 · 323 阅读 · 0 评论 -
[bzoj]1042: [HAOI2008]硬币购物
神奇的题目,dp+容斥。一开始基本没思路,看了别人的题解后才理解。令f数组为硬币无数量限制时达到s的种类,先预处理完。然后对于每次询问只要加出一个sum后减去重复部分。(容斥)#include #define ll long longusing namespace std;const int N=100005;int c[6],tot;int d[6],s;ll a原创 2017-04-18 20:58:01 · 198 阅读 · 0 评论 -
[bzoj] 1059: [ZJOI2007]矩阵游戏
第一眼看上去马上想到用状态压缩,连个二分图匹配都没看出来。此题其实就是找n个不同行或不同列的点,我们把每一行匹配一列,用匈牙利直接跑就行了。#include #include using namespace std;int t,n;int map[205][205];bool vis[205],f;int ver[205];bool cop(int now){原创 2017-04-19 19:59:55 · 393 阅读 · 1 评论 -
[bzoj] 1067: [SCOI2007]降雨量
这道题也是够了,我调了好几个小时。。条件判断实在烦,设从x年到y年:maybe:①x,y未知②x知y未知,因为y最大与x等,区间中已知没有大于x的③y知x未知,区间中已知没有大于y的④x,y都知,且x>=y,区间中已知没有大于y的,但x到y此区间中有未知年份⑤x,y在边界true:x,y都知,且x>=y,区间中已知没有大于y的,但x到y此区间中没有未知年份其余的都是原创 2017-04-21 08:03:10 · 399 阅读 · 0 评论 -
1079[bzoj]: [SCOI2008]着色方案
打这道题的时候总感觉自己在打表。。。。无话可说用F数组表示能涂1,2,3,4,5个的油漆各有几个,pre记录前一个选的。如果两个油漆可涂次数一样,那么他们可以看做同一个性质的,记录在一起。然后转移,具体看代码。#include #define ll long longusing namespace std;const int p=1000000007;int k,x原创 2017-05-02 20:47:29 · 164 阅读 · 0 评论 -
bzoj[1191]: [HNOI2006]超级英雄Hero
这道题怕不是裸的匈牙利哦。。建立锦囊与问题的二分图,然后跑匈牙利,注意条件是如果中途已经有无法匹配的就跳出。#include using namespace std;int n,m;int map[1005][1005];int com[1005];int vis[1005];int bg;bool find(int x){ int i; for (原创 2017-05-02 18:19:08 · 231 阅读 · 0 评论 -
[bzoj1202][HNOI2005]狡猾的商人[并查集]
给出[l,r]的区间和,相当于s[r]-s[l](前缀和思想)一旦已经知道了 s[a]-s[b],s[b]-s[c],再给出一条[a,c]就可以判断了 #include #include #includeusing namespace std;int w;int n,m;int s,t,v;int fa[102];int v1[102];bool flag;int pa原创 2017-03-06 21:03:42 · 612 阅读 · 0 评论 -
bzoj [1005] [HNOI2008]明明的烦恼
此题用到了prufer编码的性质,一个度为n的节点将会再其中出现n-1次,即可用C(n,m)进行求解。并且加上高精度与素数分解。#include #define C (c=getchar())using namespace std;const int prime[170]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61原创 2017-03-14 20:19:10 · 427 阅读 · 1 评论 -
bzoj 1610: [Usaco2008 Feb]Line连线游戏
暴力求出所有连线的斜率,相同的去掉。剩下的个数即为答案。#include #include #include using namespace std;struct qaq{ double x,y;}a[205];const double eps=1e-10;double line[40005];int n,tot,ans;int main(){原创 2017-04-05 19:43:28 · 538 阅读 · 0 评论 -
[bzoj] 4373算术天才⑨与等差数列
对于一段l至r的等差序列,一定会满足①任意两数间的差定为k的倍数,即是相邻两数差的绝对值的最小公因数=k②Max-min=(r-l)*k③无相同元素 那么可以直接用线段树进行维护,并注意l==r的情况#include #include #define lson (num<<1)#define rson (lson+1)using namespace std;原创 2017-03-26 19:22:01 · 394 阅读 · 0 评论 -
bzoj 1012 [JSOI2008]最大数maxnumber
裸的线段树。。#include using namespace std;int m,d;struct VV{ int l,r; int ma;}tr[800005];inline int max(int i,int j) {return i>j?i:j;}void build_tr(int l,int r,int k){ tr[k].l=l;tr[原创 2017-03-14 20:49:01 · 553 阅读 · 0 评论 -
[bzoj] 1029 [JSOI2007]建筑抢修
此题我们考虑贪心,以完成时间为关键字排序,但是直接做会错,所以我们考虑如何节省时间。可以想到每次替换花费时间最大的建筑,就可以保证最优性。然后维护一个大根堆,以花费时间为关键字。每次无法添加时就把当前的与top进行比较,可以节省时间就替换。 #include #include #include #define mk make_pairusing namespace原创 2017-04-18 17:38:42 · 393 阅读 · 0 评论 -
[bzoj] 1002: [FJOI2007]轮状病毒
用基尔霍夫矩阵推出f[i]=(f[i-1]*3-f[i-2]+2);用高精度即可。看这个吧。。http://vfleaking.blog.163.com/blog/static/17480763420119685112649/#include using namespace std;struct Big_num{ int len,a[102];};Big_num f[102原创 2017-05-13 17:09:21 · 285 阅读 · 0 评论 -
[bzoj] 1082: [SCOI2005]栅栏
预处理掉无用状态,二分查找可以切出多少木板。dfs搜索可行性,加上剪枝优化。#include #include using namespace std;int n,m,tot,ans,l,r,mid;int a[55],b[1005],sl[1005],bl[1005];bool f;long long sum;void dfs(int ak,int bk,int w){原创 2017-05-23 21:16:57 · 237 阅读 · 0 评论