jzoj
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【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 · 598 阅读 · 0 评论 -
【jzoj4685】【礼物】
题目大意一次购买有一定概率获得一种产品(有概率不获得任意一种),求获得所有种类产品的期望购买次数。解题思路由于种类较少可以状压,可以由自己和子状态得到,通过解方程可以处理自己转移到自己的情况,详见code。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define L原创 2016-08-16 22:00:27 · 305 阅读 · 0 评论 -
【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 · 301 阅读 · 0 评论 -
【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 · 301 阅读 · 0 评论 -
【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 · 432 阅读 · 0 评论 -
【jzoj4755】【快速荷叶叶变换】
题目大意解题思路可以发现∑ni=1∑mj=1(nmodi)∗(mmodj)\sum_{i=1}^{n}\sum_{j=1}^{m}(n\mod i)*(m\mod j)=>∑ni=1(nmodi)∗∑mj=1(mmodj)\sum_{i=1}^{n}(n\mod i)*\sum_{j=1}^{m}(m\mod j)∑ni=1(nmodi)\sum_{i=1}^{n}(n\mod i)=>∑ni=1(原创 2016-09-05 14:59:39 · 632 阅读 · 0 评论 -
【jzoj4756】【幻象】
题目大意每秒他的思绪中都有一定的概率浮现出奇异的幻象,持续x秒的幻象将产生 x^2的幻象值。他想知道,在N秒内他期望产生的幻象值是多少。解题思路设L[i]为第i秒幻象的持续时间的期望.显然L[i]= (L[i-1] + 1) * a[i]%设f[i]表示前i秒的答案f[i] = f[i-1] + ((L[i-1] + 1)2–L[i-1]2) * a[i]%时间复杂度为O(N)这里提供一个nlogn原创 2016-09-05 20:37:40 · 381 阅读 · 0 评论 -
【jzoj4746】【树塔狂想曲】
题目大意求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。他每次即规定哪个点不能经过(不是永久化的修改),然后询问你不走该点的最大路径和。解题思路dp出每个点做到顶和走到底的最优值,发现不经过一个点一定经过同一行的其它点,做一个前缀后缀和就可以了。code#include<set>#include<cmath>#include<cs原创 2016-09-05 20:42:52 · 698 阅读 · 0 评论 -
【GDOI2004】【可怜的绵羊】
题目大意给出一个凸包,让你求一个不包含一些点的新凸包,用原来凸包上的点。解题思路新的凸包可以割成若干个三角形,三角形内部一定不包含那些点,所以外部的点一定等于总点数。我们可以求出一条线一边所含点的个数,可是这有交集。考虑到新凸包上的点是原凸包的子集,交集一定在原凸包外。我们就可以n^2预处理出那些点在凸包内,n^3处理处一条线一边的点数,再n^3DP。枚举起点,f[i]表示到i的最优答案,枚举j下一原创 2016-07-20 21:28:22 · 397 阅读 · 0 评论 -
【jzoj4707】【艾比所特】
题目大意排成一条直线的n个点,要从一个点走完所有点再回到原点,其中第i个点位于数轴上的位置x[i]。如果从i跳到j,首先要花费时间|x[j]-x[i]|。假如i解题思路设f[i][j][k]为到第i个点,有j条边连出去,k条边连进来的最小花费。1)f[i][j][k]=f[i-1][j+1][k+1]+a[i]+c[i]+x[i]*2;2)f[i][j][k]=f[i-1][j][k]+a[i]+d原创 2016-09-06 16:09:33 · 679 阅读 · 0 评论 -
【jzoj4790】【选数问题】
题目大意有N个数,以及一个R*C的矩阵。现在他的任务是从N个数中取出R*C个,并填入这个矩阵中。矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值。求矩阵的最小法值是多少。解题思路显然不可能将一段紧挨着的数拆开,排序后二分答案,发现可以贪心地尽量往前取。找到一个区间,不够大但能增大的增大,否则把第一个退出来继续取,判断够不够区间数即可。code#include<set>原创 2016-09-22 17:29:25 · 523 阅读 · 0 评论 -
【jzoj4783】【Osu】
题目大意给出一些按顺序出现的点(x,y)和出现时间,问经过k个点所需要的最小速度,初始在(0,0)速度要保留根号。解题思路答案可能值有n^2个(两两点对),二分答案后n^2dp判断即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#原创 2016-09-23 20:56:51 · 430 阅读 · 0 评论 -
【jzoj4786】【小a的强迫症】
题目大意解题思路按颜色添加,显然一定要有一粒在最后,其他的用隔板原理就可以算出。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define max(a,b) ((a>b)?a:b)#def原创 2016-09-23 21:38:40 · 302 阅读 · 0 评论 -
【jzoj4821】【打膈膜】
题目大意解题思路贪心,先攻击生命小的,场上人数大于3时用群伤,否则用重击,如果重击生命小于2则换一个重击。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define max(n1,n2) (原创 2016-11-03 15:38:16 · 317 阅读 · 0 评论 -
【jzoj4869】【平均数】
题目大意解题思路二分答案,求和小于等于零的区间个数,等于求前缀和的逆序对个数,可以排序离散化后用树状数组做,然而这回被卡常,还是乖乖归并。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL long long#de原创 2016-11-07 21:44:09 · 282 阅读 · 0 评论 -
【jzoj4863】【Market】
题目大意解题思路将商店和询问按时间排序,一边dp一边回答询问。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL long long#define LD double#define max(a,b) ((a>b)原创 2016-11-07 21:46:49 · 309 阅读 · 0 评论 -
【jzoj4859】【连锁店】
题目大意在第i家店,顾客可以用ai个饮料瓶兑换到bi瓶饮料和1个纪念币(注意不足ai个饮料瓶则不能兑换)。一家店可以兑换多次,兑换得到的饮料瓶还可以继续用于兑换。小C买了s瓶饮料,他想知道用这s瓶饮料最多可以兑换到多少个纪念币。解题思路贪心,以差值为第一关键字,花费为第二关键字排序,有可能大于longlong,所以要用unsigned longlong,注意读入用llu。code#include<s原创 2016-11-07 22:41:18 · 459 阅读 · 0 评论 -
【jzoj4890】【随机游走】
题目大意给出一棵树,边权为一,一个点走到相邻点的概率相等,求一对点对期望最多走多少步能到达。解题思路可以推出走过一条边的期望,考虑lca为i的路径贡献,找到走到i和从i出发不同子树和最远的路径,和答案取max即可。code#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define min(a,原创 2016-11-12 21:38:27 · 563 阅读 · 0 评论 -
【jzoj4888】【最近公共祖先】
题目大意n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少。这个数字n层的满k叉树指一棵带标号的有根树,深度为i(0≤i解题思路显然得出ans=∑n−1i=1i∗ki∗(((kn−i−1)/(k−1))2−k∗((kn−i−1−1)/(k−1))2)ans=\sum_{i=1}^{n-1}i*k^i*(((k^{n-i}-1)/(k-1))^2-k原创 2016-11-12 21:50:06 · 313 阅读 · 0 评论 -
【jzoj4678】【钱仓】【平衡树】【avl】【队列】
题目大意有n个循环的槽,有n个物品分配在槽里,可以将一个物品沿顺时针方向移动到另一个槽里,花费为距离的平方,求最少花费使每个槽刚好有一个物品。解题思路显然每个物品移动不超过一圈,可以找到一个地方开始逐一移动满足要求。可以看做每个槽有多余(+)或需求(-),一个合法的开头做前缀和后一定大于等于零。可以发现一个点只要有剩余就可以覆盖更多的点,如果一个点被别人覆盖一定优于没被人覆盖,因为被人覆盖不会减少多原创 2016-08-16 21:00:05 · 375 阅读 · 0 评论 -
【jzoj4598】【准备食物】【字典树】
题目大意给出长度为n的序列,询问[1,r]的后缀区间[i,r] (1<=i,i<=r)异或和大于等于k的区间的个数。题解异或可逆,[i,r]等于[1,i-1]异或[1,r],设前缀和s,求满足s[i-1]^s[r]>=k,由于不可移项,必须考虑s[r]和k的影响。考虑建立Trie在上面查询答案。考虑当先选0还是1,选了一个异或后比k大则所有答案可以贡献,当前相等则继续比较,小于则放弃。详细见code原创 2016-07-12 11:54:04 · 409 阅读 · 0 评论 -
【jzoj4907】【NOIP2016提高组】【蚯蚓】【单调队列】
题目大意解题思路可以发现先分裂的不会比后分裂的短,应为本来就比后来的长,一样会长长同样的q,所以没有影响。这样我们就可以开三个队列,分别存原来的数,拆出来的两个数,这样就可以轻松排序。还有可以记录分裂出来的时间,就可以在分裂的时候求出真实的长度。code#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#inc原创 2016-11-27 17:45:58 · 344 阅读 · 0 评论 -
【jzoj4597】【现世斩】【平衡树】【set】
题目大意给出有权无向连通图,有一次机会使与一个点相连的边的权变为一,求最短路。题解显然的想法是学习gdoi2016的一题,分层单源最短路,设f[i][0,2],表示没有用机会,在前驱用机会,没有机会,dijset优化就可以了。还有一种方法,只有一次机会,影响很小,起点终点都做一次最短路,枚举在哪里用,扫一下边,每条边只被扫2次,复杂度有保证。code#include<set>#include<cm原创 2016-07-12 12:03:32 · 277 阅读 · 0 评论 -
【jzoj4771】【爬山】【人工栈】【图论】【强连通分量】
题目大意给出一幅有向图每个点有价值,要从起点走到一个给定的点集中的一个点才能停止,求最大价值,重复经过没有价值。解题思路tarjan后按拓扑序dp即可,坑的是点可能很多要打人工栈。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#def原创 2016-09-23 22:14:56 · 282 阅读 · 0 评论 -
【jzoj4897】【人生的意义】【拓扑排序】【找环】
题目大意这个新世界由N个城市组成(编号为1..N),其中第i个城市的意义大小为W[i]。每个城市都有一个唯一的后继城市a[i]。设NiroBC最初降落在城市x,那么她将按照x -> a[x] -> a[a[x]] -> a[a[a[x]]] -> …的路径行走,同一个城市的人生意义只能得到一次,NiroBC最终得到的人生意义是所有经过的城市(不重复)的人生意义的和。 NiroBC是等概率地随机地降落原创 2016-11-17 08:17:57 · 537 阅读 · 0 评论 -
【jzoj4885】【隔壁】
题目大意已知主视图左视图,求可能的体积最大值与最小值。解题思路对于一个位置最大值不能超过行列的限制,取行列最小值求和即可求出最大值,知道每行每列都要出现给定的值,如果行列出现相同的数,就可以省下一个数,求和即最小值。code#include<cstdio>#include<cstring>#include<algorithm>#define min(a,b) ((a<b)?a:b)#defi原创 2016-11-14 08:27:22 · 400 阅读 · 0 评论 -
【jzoj4892】【最优得分】
题目大意给出很多道题,每题的得分随时间线性减少,求给定时间内最高得分解题思路考虑相邻两题的先后顺序,得到偏序关系,再经转化得到任意两题的绝对偏序关系,排序后就是背包问题。code#include<cstdio>#include<algorithm>#define LL long long#define min(x,y) ((x<y)?x:y)#define max(x,y) ((x>y)?x原创 2016-11-14 21:38:34 · 355 阅读 · 0 评论 -
【jzoj4891】【摆书】
题目大意给出1到n的排列,每次可把一个数提到队头,求最少次数是序列有序。解题思路答案为n-结尾为n的最长连续上升子序列。code#include<cstdio>#include<algorithm>#define LL long long#define min(x,y) ((x<y)?x:y)#define max(x,y) ((x>y)?x:y)#define fo(i,j,k) for原创 2016-11-14 21:46:13 · 295 阅读 · 0 评论 -
【jzoj4876】【基因突变】【exkmp】
题目大意707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为“源头基因”人类身上与源头基因完全匹配的片段越多,这个人就越容易被控制。于是707就开始了他邪恶的计划……作为人类卫士的射手ZMiG自然不会让707得逞,他决定拯救人类,现在他拿到了其中一个人被改造后的基因,他想请你统计一下它的基因中究竟有多少基因片段是可以与源原创 2016-11-08 22:13:58 · 369 阅读 · 0 评论 -
【jzoj4668】【腐败】【数论】【快速乘】
题目大意给出一个序列,求两两gcd的积。解题思路可以发现每个质数对答案贡献是独立的,分解质因数后发现数是无序的,排序后可以用前缀和求答案,排序可以用计数排序,快速幂可以放在分解质因数的循环里,还有模数较大,要用快速乘,类似快速幂。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorith原创 2016-07-20 22:08:12 · 419 阅读 · 0 评论 -
【jzoj4715】【树上路径】【树】【分治】【点分治】
题目大意给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k>=S且k<=E。(k为路径p上的边的权值和)解题思路点分治,求出所有点到当前重心的距离以及所属的子树,排序后扫描并用不同子树的点更新答案,然而我的做法很暴力,很有可能超时,但随机数据下表现良好,应该有更好的方法。暴力code#include<set>#include<cmath>#include<cstdio>#include原创 2016-09-06 16:25:14 · 366 阅读 · 0 评论 -
【jzoj4827】【钻石游戏】
题目大意一个M行N列的棋盘,里面放了M*N个各种颜色的钻石。每一次你可以选择任意两个相邻的颜色不同的钻石,进行交换。两个格子相邻的定义是两个格子有一条公共边。每次交换的分值为通过这次交换后能够形成的最大矩形的面积,具体请见样例。跟传统的钻石游戏不太一样的是,交换后钻石不会消除。现在告诉你每一次操作,请输出每一次所能得到的分值。解题思路首先我们可以预处理出一个点往上下左右最远扩展到哪里(同色),每个询原创 2016-12-10 13:15:40 · 439 阅读 · 0 评论 -
【jzoj4826】【小澳的葫芦】【二分答案】
题目大意葫芦世界有n个葫芦,标号为1~ n。n个葫芦由m条藤连接,每条藤连接了两个葫芦,这些藤构成了一张有向无环图。小澳爬过每条藤都会消耗一定的能量。小澳站在1号葫芦上(你可以认为葫芦非常大,可以承受小澳的体重),他想沿着藤爬到n号葫芦上,其中每个葫芦只经过一次。小澳找到一条路径,使得消耗的能量与经过的葫芦数的比值最小。解题思路二分答案,将每一条边都减去二分的答案,求1到n的最短路,如果最短路小于0原创 2016-12-10 13:51:07 · 604 阅读 · 0 评论 -
【jzoj4825】【舞会配对】【贪心】
题目大意在舞会上有N个男孩和N个女孩,每个人都量过了自己的身高。每个男孩只跟女孩跳舞,并且女孩也只跟男孩跳舞。每个人最多只有一个舞伴。男孩或者想和比自己高的女孩跳舞,或者想和比自己低的女孩跳舞,同样的,女孩也是或者想和比自己高的男孩跳舞,或者想和比自己低的男孩跳舞。你能决定最多有多少对能在一起跳舞吗?解题思路将喜欢高的标记为正,喜欢低的标记为负,排序之后贪心地取。code#include<set>原创 2016-12-10 14:03:55 · 1256 阅读 · 0 评论 -
【jzoj4824】【配对游戏】【搜索】
题目大意流行的跳棋游戏是在一个有m*n个方格的长方形棋盘上玩的。棋盘起初全部被动物或障碍物占满了。在一个方格中,‘X’表示一个障碍物,一个‘0’~‘9’的个位数字表示一个不同种类的动物,相同的个位数字表示相同种类的动物。一对动物只有当它们属于同一种类时才可以被消去。消去之后,他们所占的方格就成为空方格,直到游戏结束。要消去一对动物的前提条件是:这对候选动物所在的方格必须相邻,或它们之间存在一条通路。原创 2016-12-10 14:35:41 · 365 阅读 · 0 评论 -
【jzoj4823】【小W学物理】【模拟】
题目大意为了测试小W的物理水平,Mr.X在二维坐标系中放了N面镜子(镜子坐标绝对值不超过M),镜子均与坐标轴成45°角,所以一共有两种类型“/”和“\”。原点不会有镜子,任意一点最多只有一面镜子。镜子两个面都能反光,而中间不透光,例如,对于一个“/”型镜子,下方向射入的光线会被反射到右方向,左方向射入的光线会被反射到上方向。现在有一条光线从原点沿X轴正方向射出,求走过T路程后所在位置。解题思路排序后原创 2016-12-10 14:40:53 · 355 阅读 · 0 评论 -
【jzoj4919】【神炎皇】【数论】
题目大意对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对。请问这样的数对共有多少呢?解题思路设gcd(a,b)=k,a’=a/k,b’=b/k。a+b<=n&&a+b|ab=>(a’+b’)k<=n&&(a’+b’)k|a’b’k^2。gcd(a’,b’)=1=>gcd(a’+b’,a’)=gcd(a’+b’,b’)=1=>gcd(a’+b’,a’b’)=1=>(a原创 2016-12-11 17:39:39 · 716 阅读 · 0 评论 -
【jzoj4921】【幻魔皇】
题目大意幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。解题思路首先我们发现对于白点只有子树中的白点才可能与它配对(只有一个子节点),原创 2016-12-12 14:30:33 · 567 阅读 · 0 评论 -
【jzoj4910】【子串】【字符串】【kmp】
题目大意有n个字符串,求编号最大的字符串,它前面有一个串不是它的子串。解题思路顺序枚举当前字符串now,维护一个指针表示最前一个不是当前串的子串的串,可以发现如果当前串是后面串的子串,前面的串也一定是后面串的子串,每个串都只考虑一次,所以复杂度是可以的。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>原创 2016-12-03 17:04:33 · 336 阅读 · 0 评论 -
【jzoj4901】【矩阵】【动态规划】
题目大意给出矩阵中每行每列的和,还有矩阵的每项都是非负整数。求满足这样条件的矩阵总共有多少种。解题思路由于一行最多只有3个数,只有125行,设f[i][j][k]为到第i行,第一列填了j,第二列填了k的方案数,直接dp剪一下枝就可以了。code#include<cstdio>#include<algorithm>#define LL long long#define min(x,y) ((x<原创 2016-12-03 19:29:10 · 316 阅读 · 0 评论