随笔分类 - 思维
BZOJ 1011 [HNOI2008]遥远的行星 (误差分析)
摘要:1011: [HNOI2008]遥远的行星 Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用。请计算每颗行星的受力,
阅读全文
BZOJ 3110 K大数查询 (树套树)
摘要:3110: [Zjoi2013]K大数查询 Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。 有N个位置,M个操作。操作有两种,
阅读全文
HDU 5957 Query on a graph (拓扑 + bfs序 + 树剖 + 线段树)
摘要:题意:一个图有n个点,n条边,定义D(u,v)为u到v的距离,S(u,k)为所有D(u,v)<=k的节点v的集合 有m次询问(0<=k<=2): 1 u k d:将集合S(u,k)的所有节点的权值加d 2 u k:询问集合S(u,k)的所有节点的权值之和 析:把这个图树成两部分,一个是一个环,然后剩
阅读全文
Gym 101201J Shopping (线段树+取模)
摘要:题意:给定 n 个物品,然后有 m 个人买东西,他们有 x 元钱,然后从 l - r 这个区间内买东西,对于每个物品都尽可能多的买,问你最少剩下多少钱。 析:对于物品,尽可能多的买的意思就是对这个物品价格取模,但是对于价格比我的钱还多,那么就没有意义,对取模比我的钱少的,那取模至少减少一半,所以最多
阅读全文
Gym 100792C Colder-Hotter (三分)
摘要:题意:系统有一个点对,让你去猜,每次你猜一个,如果这个数和系统里的那个点距离比上一个你猜的近,那么返回1,否则返回0,第一次猜一定返回0,在不超过500次的情况下,猜出正确答案。 析:是一个简单的三分,横纵坐标可以分开来考虑,每次两次三分,然后看那个点更偏向哪边即可,注意这个题,有一个坑,那就是你输
阅读全文
HDU 5117 Fluorescent (数学+状压DP)
摘要:题意:有 n 个灯,初始状态都是关闭,有m个开关,每个开关都控制若干个。问在m个开关按下与否的2^m的情况中,求每种情况下亮灯数量的立方和。 析:首先,如果直接做的话,时间复杂度无法接受,所以要对其进行小小的变形,设开灯数X,和每个开关的状态的对应关系是X = x1+x2+...+xn,其中 xi
阅读全文
POJ 2152 Fire (树形DP)
摘要:题意:给定一棵树,要建立一些消防站,并且每个结点到最近一个的消防站的距离不能超过limit i,在每个结点建立消防站要花一定的费用cost i,求最少的花费是多少。 析:想了很久,确实是没想出来怎么做,dp[i][j] 表示 i 结点依赖 j 结点的最小花费,然后ans[i] 表示 以 i 为根结点
阅读全文
UVALive 7752 Free Figurines (瞎搞)
摘要:题意:给定 n 个盒子,然后告诉你每个盒子在哪个盒子里,数值越大,盒子越大,给定你初态,和末态,问你最少要几步能完成,只有两种操作,一种是把一个盒子连同里面的小盒子放到一个空盒子里,另一种是把一个堆盒子里的最外面的那个盒子拿出来。 析:首先,先遍历一次,如果初态和不一样,那么初态后面的要全部拿出来,
阅读全文
HDU 6053 TrickGCD (莫比乌斯函数)
摘要:题意:给一个序列A,要求构造序列B,使得 Bi <= Ai, gcd(Bi) > 1, 1 <= i <= n, 输出构造的方法数。 析:首先这个题直接暴力是不可能解决的,可以先找出最大值mmax和最小值mmin,然后枚举每个gcd,也就是最大公约数d,那么其他数就应该是d 2*d 3*d 4*d
阅读全文
HDU 6153 A Secret (KMP)
摘要:题意:给定两个串,求其中一个串 s 的每个后缀在另一个串 t 中出现的次数。 析:首先先把两个串进行反转,这样后缀就成了前缀。然后求出 s 的失配函数,然后在 t 上跑一遍,如果发现不匹配了或者是已经完全匹配了,要计算,前面出现了多少个串的长度匹配也就是 1 + 2 + 3 + .... + j 在
阅读全文
BZOJ 2038 小Z的袜子(hose) (莫队算法)
摘要:题意:中文题。 析:很著名的莫队算法,先把这个求概率的式子表达出来,应该是分子:C(x1, 2) + C(x2, 2) + C(x3, 2) + ... + C(xn, 2) 分母:C(n, 2),然后化成分数的表达形式,[x1(x1-1)+x2(x2-1)+...+xn(xn-1)] / (n*(
阅读全文
HDU 6096 String (AC自动机)
摘要:题意:给出n个字符串和q个询问,每次询问给出两个串 p 和 s 。要求统计所有字符串中前缀为 p 且后缀为 s (不可重叠)的字符串的数量。 析:真是觉得没有思路啊,看了官方题解,真是好复杂。 假设原始的字符串 数组为A,首先将A中的每个字符串都进行翻转,得到字符串数组B,然后,将A和B按字典序排序
阅读全文
HDU 5834 Magic boy Bi Luo with his excited tree (树形DP)
摘要:题意:给定一棵树,每个点有个权值,每条边有权值,每经过边都会消耗相应的权值,但是点的权值只能获得一次,问你从 i 点出发能获得的最大权值是多少。 析:树形DP,就是太麻烦了,两次dfs,维护一共6个值分别是,从 i 出发的最大值并且返回 i, 从 i 出发的最大值并且不返回,从 i 出发的次大值并且
阅读全文
POJ 3709 K-Anonymous Sequence (斜率优化DP)
摘要:题意:有一个不递减的序列,现在要把这些数分成若干个部分,每部分不能少于m个数。每部分的权值为所有数减去该部分最小的数的和。求最小的总权值。 析:状态方程很容易写出来,dp[i] = min{dp[j] + sum[i] - sum[j] - (i-j)*a[j+1] },然而这个复杂度是 O(n^2
阅读全文
LightOJ 1065 Island of Survival (概率DP?)
摘要:题意:有 t 只老虎,d只鹿,还有一个人,每天都要有两个生物碰面,1.老虎和老虎碰面,两只老虎就会同归于尽 2.老虎和人碰面或者和鹿碰面,老虎都会吃掉对方 3.人和鹿碰面,人可以选择杀或者不杀该鹿4.鹿和鹿碰面,没事问人存活下来的概率 析:最后存活肯定是老虎没了,首先可以用概率dp来解决,dp[i]
阅读全文
POJ 1741 Tree (树分治)
摘要:题意:给定一棵树,然后给定每条边的权值,问你有多少个点对满足路径的权和小于等于m。 析:直接枚举是肯定不行的,会TLE,利用分治的思想,我们可以把树按重心分成几部分,那么答案就是所有子树的点对都经过重心的,对于所有的子树的重心也是这样,对于经过重心的,可以先求出每个点都重心的距离,再排序,利用单调性
阅读全文
HDU 3729 I'm Telling the Truth (二分匹配)
摘要:题意:给定 n 个人成绩排名区间,然后问你最多有多少人成绩是真实的。 析:真是没想到二分匹配,。。。。后来看到,一下子就明白了,原来是水题,二分匹配,只要把每个人和他对应的区间连起来就好,跑一次二分匹配,裸的。 代码如下:
阅读全文
HDU 6034 Balala Power! (贪心+坑题)
摘要:题意:给定一个 n 个字符串,然后问你怎么给 a-z赋值0-25,使得给定的字符串看成26进制得到的和最大,并且不能出现前导0. 析:一个很恶心的题目,细节有点多,首先是思路,给定个字符一个权值,然后要注意的进位,然后排序,从大到小,给每个字符赋值,如果最后一个出现前导0,就得向前找一个最小的不在首
阅读全文
HDU 4424 Conquer a New Region (并查集)
摘要:题意:给定一棵树,让你选一个中心城市,问你中心城市到所有其他城市的权值和最小,每条路的权值是该边上和最小权值。 析:从大到小枚举边,然后用并查集进行维护,在合并两个集合时,要考虑两边集合加上该边的的最大的那一个,每次要取最大值。 代码如下:
阅读全文
HDU 1540 Tunnel Warfare (线段树或set水过)
摘要:题意:D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少。 析:首先可以用set水过,set用来记录每个被破坏的村庄,然后查找时,只要查找左右两个端点好。 用线段树的话,就维护三个值分别是左端点连续右端点连续,全连续的最长的区别,然后用线段树维护就好。 代码如下
阅读全文
浙公网安备 33010602011771号