自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【jzoj4711】【Binary】【树状数组】

题目大意解题思路每一位分别考虑,没有加操作时直接开个计数器查找就可以了。有了加操作,我们要考虑加对二进制的影响。一位一位考虑,保存当前位及以下的状态,存到数据结构里,y是1才有可能有贡献。不进位时2^(i-1)<=ai+x<=2^i-1。进位时2^i+2^(i-1)<=ai+x<=2^(i+1)-1。code#include<set> #include<cmath> #include<cstdio>

2016-08-18 14:42:07 319

原创 【jzoj4710】【Value】

题目大意解题思路可以发现先选代价小的不会更劣,最傻b的dp就是f[i][j],表示做到i前面的代价和为j,可以发现代价和不可以大于价值,所以复杂度是500000000的,卡卡常还是可以过的。正解其实差不多,只是把第二维换成了已选的个数,倒着做先选大的就可以把代价用个数表示。code暴力#include<set> #include<cmath> #include<cstdio> #include<cs

2016-08-18 14:29:43 427

原创 【jzoj4709】【Matrix】

题目大意解题思路显然每个l和t的贡献是独立的,向右走就是乘一个a,向下走就是乘一个b,走到终点的a和b的个数可以算出来,系数就是走到终点的方案数,用组合数算就行了。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LF double #define LL l

2016-08-18 11:39:41 295

原创 【bzoj1208】【HNOI2004】【宠物收养所】【平衡树】【set】

题目大意有一些宠物和领养人,都有一个特征值,有一些事件加入宠物或领养人,将找到最近的领养人或宠物配对并产生特征值差的不满值,求不满值和。解题思路用数据结构维护,查找最近的点。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LF double #define

2016-08-18 10:08:26 337

原创 【bzoj1257】【CQOI2007】【余数之和】【sum】

题目大意给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值解题思路k%i==k-⌊n/i⌋\lfloor n/i \rfloor*i,发现i>k的部分可以直接算,而⌊n/i⌋\lfloor n/i \rfloor只有n√\sqrt n种取值,分块处理即可。code#include<set> #include<cmath> #i

2016-08-18 08:26:57 314

原创 【bzoj1192】【HNOI2006】【鬼谷子的钱袋】

题目大意你有一些钱,你要分最少的组使你可以通过选取其中的一些组来支付所有小于等于你拥有钱的金额。解题思路假设你有n元钱,你可以将⌈n/2⌉\lceil n/2 \rceil 的钱分一组,这样就变成里一个n/2的子问题,它能满足就一定可以与⌈n/2⌉\lceil n/2 \rceil 配合满足原问题。code#include<set> #include<cmath> #include<cstdio>

2016-08-18 08:18:33 301

原创 【bzoj1202】【HNOI2005】【狡猾的商人】【最短路】

题目大意序列中有一些限制,是否有那么一个序列满足所有限制。解题思路把限制看成两点间的距离,跑floyd,看是否所有边都是最短路。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LL long long #define fo(i,j,k) for(int i

2016-08-18 08:10:13 399

原创 【bzoj1207】【HNOI2004】【打鼹鼠】

题目大意某个时间会在某个坐标出现一只鼹鼠,求最多能打多少只。解题思路不用讲了,直接上暴力dp,f[i][j]打到第i只鼹鼠用了j时间最多能打多少只。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LL long long #define fo(i,j,k)

2016-08-17 22:51:17 399

原创 【bzoj1103】【POI2007】【大都市】【meg】【人工栈】

题目大意一棵有根树,每次修改一条边或询问跟到一个点的路径上有多少条边没被修改。解题思路可以用括号序表示树上的一条路径,访问时间戳+1,离开时间戳-1,修改一条边就是将深度大的点的时间戳都改为0,表示对后面没影响。最恶心的是要打人工栈。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algori

2016-08-17 22:46:29 471

原创 【bzoj1293】【SCOI2009】【生日礼物】

题目大意在坐标轴上有不同种类的一些点,求最短的区间包含所有种类的点。解题思路可以考虑找到第一个合法区间,当左指针右移时有可能是某一些种类没被包含,这时我们可以加入下一个当前种类的点,每个点只会被加入一次,因此O(n)。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #de

2016-08-17 22:28:07 391

原创 【CF583C】【Password】【数论】

题目大意有n个数,给出他们两两的gcd(包括自己和自己)n^2个,求这n个数。解题思路显然发现最大的那个gcd一定是最大的数,第二大的gcd一定是第二大的数,出去它们gcd的影响,最大的哪一个一定是第三大。以此类推用数据结构存储即可。可是我想到了一个随机数据下表现优良的水法。大量的实验证明随机数据下不同的gcd大约在1.5n左右,gcd是原数的约数,若有x个gcd是y或y的倍数,则有x√\sqrt

2016-08-17 22:14:56 412

原创 【SCOI2010】【传送带】【三分答案】

题目大意平面上有两条传送带,在上面行走有一定的速度,在平面其他地方行走有一定速度,求从一条传送带一端走到另一条一端的时间。解题思路显然在两条传送带都走一段后走平面,当一个转折点确定后,距离就是一个单峰函数,可以用三分解决,总的就是三分套三分。由于数据较小精度要求较小,可以暴力一个转折点再三分。code//#include<set> #include<cmath> #include<cstdio> #

2016-08-17 21:52:33 426

原创 【BestCoder Round #59 (div.1) B】【疯狂的火神】

题目大意t分钟有n个人可以打,如果在第x分钟单挑这个人(x指单挑完这个人的时间),就会得到a-b*x的经验值。求最大经验值。解题思路比较相邻两个人单挑的顺序怎样更优,发现c[i]*b[i+1]>*c[i+1]*b[i]时前后调换更优, 接着就可以dp,f[i][j]=g[j-c[i]]+a[i]-j*b[i],f[i][j]为打到第i个人用了j分钟的最大经验值,g[i]为至多打到第i-1个人用了至多

2016-08-17 21:44:07 297

原创 【bzoj2002】【Hnoi2010】【Bounce】【弹飞绵羊】【分块】

题目大意有n个格,可以在i往后跳a[i]个格,修改a[i],询问i跳多少次跳出这n个格。解题思路这是一道lct模板题,显然a[i]就是i的father,修改就是割一条边连一条边,询问一个点的深度。然而我并不会lct,只会打暴力。我们可以分块,维护跳到下一个块的花费,修改暴力重构当前块的所有点跳到下一个块的花费,询问一个块一个块的跳,当一个块大小为n√\sqrt n时复杂度为O(nn√)O(n\sqr

2016-08-17 20:54:19 374

原创 【bzoj1196】【HNOI2006】【公路修建问题】【并查集】

题目大意有一些可修路点对,可修一级或二级公路使图连通且最少有k条一级公路,使最大的公路费用最小。解题思路可以发现求最大值最小用二分答案,可以用并查集维护当前连通块,首先能建一级公路要先建(满足一级公路的限制),再建二级公路,再看看是否能是整个图连通,直到找到最优答案。code#include<set> #include<cmath> #include<cstdio> #include<cstring

2016-08-17 20:39:55 607

原创 【CF 526F】【奇袭】

题目大意给出一个n*n的图,有n个点,每行每列有且仅有一个点,求有多少个k*k矩形中有k个点。解题思路可以发现按x坐标把点排序后得出一个排列,求有多少个区间长度等于最大值减最少值。可以考虑分治,可以算出中心到左右区间的最大最小值,若最大最小值在同侧则可以枚举一端算出另一端再判断是否合法。若不同侧可以发现左最大右最小时r-l==max[l]-min[r],即l+max[l]==r+min[r],相互独

2016-08-16 22:45:37 589

原创 【HDU 3072】【通讯】【强连通分量】

题目大意给出一幅有向图,强连通分量内传递信息不用花费,其余沿有向边传递有花费,求最少的花费使1可以传递到所有点。解题思路首先tarjan缩点,得出一个dag。显然一个店的信息又花费最少的边传递过来,记录每一个点的前驱,统计答案即可。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorit

2016-08-16 22:17:19 244

原创 【jzoj4685】【礼物】

题目大意一次购买有一定概率获得一种产品(有概率不获得任意一种),求获得所有种类产品的期望购买次数。解题思路由于种类较少可以状压,可以由自己和子状态得到,通过解方程可以处理自己转移到自己的情况,详见code。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define L

2016-08-16 22:00:27 298

原创 【UOJ 67】【种树】【强连通分量】

题目大意给出一幅图,求有多少删点(包括与其相连的边)方案,使原图变成树。解题思路可以发现被删点的度数一定且不能是割点。用tarjan求割点,有多于一个儿子的根或u有边(u,v)dfn[u]<=low[v]。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define L

2016-08-16 21:54:12 287

原创 【jzoj4678】【钱仓】【平衡树】【avl】【队列】

题目大意有n个循环的槽,有n个物品分配在槽里,可以将一个物品沿顺时针方向移动到另一个槽里,花费为距离的平方,求最少花费使每个槽刚好有一个物品。解题思路显然每个物品移动不超过一圈,可以找到一个地方开始逐一移动满足要求。可以看做每个槽有多余(+)或需求(-),一个合法的开头做前缀和后一定大于等于零。可以发现一个点只要有剩余就可以覆盖更多的点,如果一个点被别人覆盖一定优于没被人覆盖,因为被人覆盖不会减少多

2016-08-16 21:00:05 368

原创 【jzoj4629】【修路】【最小生成树】

题目大意有一些点和一些边,修建一条边有花费,但可以是连接的两个点有收益,花费远大于收益,求最小花费使图连通。解题思路显然每条边的花费(计算了收益的影响)是一定的,可以直接最小生成树。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LL long long

2016-08-02 09:32:04 417

原创 【jzoj4630】【计数】【数位动态规划】

题目大意求有多少个n位的k进制数不包含连续的两个零。解题思路显然数位dp具体看代码。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LL long long #define fo(i,j,k) for(int i=j;i<=k;i++) #define f

2016-08-02 09:27:12 328

原创 【jzoj4603】【颜料大乱斗】【线段树】

题目大意给出一个长度为n的区间,有一些操作,对一个区间染上某种颜色,询问一个区间有多少种颜色。解题思路题目所说,颜色最多有30种,注意初始颜色是1,显然可以开30棵线段树,处理每种颜色。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LL long lon

2016-08-02 09:21:15 301

原创 【bzoj1191】【HNOI2006】【超级英雄】【Hero】【二分图匹配】

题目大意给出一些题目,每题有两个锦囊,用其中一个一定能解决一道题,必须按顺序解决题目,求最多可以解决多少道题目。解题思路显然用匈牙利做二分图匹配,注意按顺序做,一旦有一个失配就停止并输出答案。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LL long

2016-08-02 09:14:58 385

原创 【jzoj4637】【大鱼海棠】

题目大意给出一棵树,可以选择一个未被染色的节点,将它到根的路径染色,两个人轮流操作,最后染色的输,求先手是否必胜。解题思路这是一题结论题,除非只有一个节点,不然先手必胜。考虑先手选根,如果后首选某个节点必胜,那先手可以不选跟选那个点。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algori

2016-08-01 16:12:49 401

原创 【Codeforces696B】【寻找】

题目大意给出一棵树,求每个点的期望dfs序。解题思路可以发现当前点的dfs序只与父亲的dfs序和兄弟子树大小有关。考虑父亲有x个儿子,则有x!种排列,一个子树排在第i位有(x-1)!种情况,可以算出其他子树在当前子树前的次数,加上他的贡献。最后得出了f[son]=f[now]+(size[now]-size[son]-1)/2.0+1。直接遍历就可以了。code#include<set> #incl

2016-08-01 16:01:16 458

原创 【Codeforces678E】【锦标赛】

题目大意有n个人,两两决斗有一定概率胜,求安排出场顺序后第一个人最大的获胜概率。解题思路考虑到数据较小,我们可以状压。直观的方法我们可以不断添加人,记录当前擂主,可惜这无法使第一个人尽可能赢。我们可以考虑倒着做,知道谁后添加,再不断向前,这样我们就可以使第一个人尽量赢。code#include<set> #include<cmath> #include<cstdio> #include<cstrin

2016-08-01 15:39:58 511

原创 【POI 12】【Double-row】

题目大意有两个序列,可以调换两个序列相应的位置的元素,求最少步骤使得每个序列所含元素互不相同。解题思路可以发现一个元素最多出现两次,必须在不同序列,所以我们可以枚举一个元素的状态,便可以确定一个连通块的状态。注意有多个连通块,它们相互独立。code//#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<a

2016-08-01 15:08:05 336

空空如也

空空如也

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

TA关注的人

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