06 2017 档案

摘要:" 420 Div2 C" 题意 不断把数加入到一个栈里,取数的时候要求按照 1~n 的顺序取数, 每次取数保证数一定在栈里 ,如果要取的数不在栈头,可以选择对栈排序一次。问最少排序几次。 分析 只要栈头的数不符合条件,就要去排序,但是不能直接去模拟。不用真的去排序,可以选择直接清空栈,只要没有新数 阅读全文
posted @ 2017-06-29 18:00 ftae 阅读(115) 评论(0) 推荐(0)
摘要:" 420 Div2 D" 题意 给出一个方格矩阵,其中存在亮着的方格,只能在亮着的方格上行走,可以在初始亮的方格上花费一枚硬币临时点亮任意一行或一列,地图上同一时间只能存在一个这样的行或列,问走到终点最少花费的硬币。 分析 对可以行走的格子建图,如果格子相邻,花费为0,如果行差或列差小于等于2,则 阅读全文
posted @ 2017-06-29 18:00 ftae 阅读(210) 评论(0) 推荐(0)
摘要:表转化成平衡二叉树 其中有一种分治的思想。 "二叉查找树" 实现集合 注: 和`tree list`行为恰好相反。 树转化成表是从右往左放数。 最大的值一定是树最右边的结点,而这个结点正好在转化成表的时候处于表的最右端,保证了转化成的表的有序性(当然前提树是二叉查找树)。 要想通过 得到一棵二叉查找 阅读全文
posted @ 2017-06-24 13:45 ftae 阅读(919) 评论(0) 推荐(0)
摘要:"hdu5884" 题意 给出 n 个数,每次选择不超过 k 个数合并(删掉这些数,加入这些数的和),花费为合并的这些数的和,要求最后只剩下一个数,问 k 最小取多少。 分析 二分 k,合并数的时候可以按照哈夫曼树构树的原理来进行合并。因为新形成的数存在递增的单调性,所以可以开一个数组(队列)存储新 阅读全文
posted @ 2017-06-22 16:24 ftae 阅读(404) 评论(0) 推荐(0)
摘要:"uva10857" 题意 兔子希望在平面上 n 个点上放蛋,每个点最多放一个蛋,初始兔子在 (0, 0) 点,这里有无数个蛋,兔子可以回到这个点取蛋,兔子的速度为 $v 2^{ i}$(i 为携带蛋的数量)。对于每个点 (x, y) ,在 $720+x/2000$ 分钟后不能在该点放蛋了。问最多放 阅读全文
posted @ 2017-06-21 13:37 ftae 阅读(251) 评论(0) 推荐(0)
摘要:"hdu4055" 题意 给出一个长度为 n 1 的字符串,要求构造一个包含数字 [1, n] 的排列,从第二位开始,'I' 表示当前位数字比前一位大,'D' 表示当前位数字比前一位小,'?' 表示可大可小。问有多少满足条件的 n 的排列。 分析 设 dp[i][j] 为 [1, i] 已排列好,最 阅读全文
posted @ 2017-06-21 01:38 ftae 阅读(180) 评论(0) 推荐(0)
摘要:"Controlled Tournament" 题意 n 名选手进行淘汰赛,R[i][j] = 1 表示 i 能胜过 j。要求通过安排淘汰赛使得,m 选手获得最终胜利,问使得比赛数最少的方案数。 分析 设 f(i, h, S) 表示 i 选手获胜 比赛 h 场 参赛选手集合为 S 的比赛方案有多少种 阅读全文
posted @ 2017-06-20 11:23 ftae 阅读(243) 评论(0) 推荐(0)
摘要:"hdu3001" 题意 选择从任意一点出发,经过所有点的最小花费(经过每个点的次数不能多于 2 次)。 分析 类似于 "poj3311" 经过每个点的次数有限制,考虑用三进制数存储每个点被访问过的次数,其它和上面一题几乎相同。 code cpp include include include us 阅读全文
posted @ 2017-06-17 13:18 ftae 阅读(206) 评论(0) 推荐(0)
摘要:"poj3311" 题意 给出一个矩阵,i 行 j 列表示位置 i 到 j 的时间。 求从 0 点出发经过 1 到 n 所有点后并返回 0 点最短耗时。 分析 先用 Floyd 算法,求出两点之间最短路, dp[S][i] 表示访问到 i 这个点时所有点的状态,S 为二进制数,表示这个点是否访问过。 阅读全文
posted @ 2017-06-14 18:06 ftae 阅读(356) 评论(0) 推荐(0)
摘要:"poj1185" 题意 给出字母矩阵,只能在字母为 P 的位置放置大炮, 如图所示,每个大炮的射程固定,现在要求尽可能多的放大炮,且使得每个大炮都不在其它大炮的射程内。问最多能放多少。 分析 "poj3254" 很类似的一道题,但是注意到这道题,放置一个大炮后,不仅影响到与之相邻的下一行,同时对下 阅读全文
posted @ 2017-06-14 15:22 ftae 阅读(275) 评论(0) 推荐(0)
摘要:"poj3254" 题意 给出一个01矩阵,1表示当前这个位置可以放牛,要求放牛的方案保证牛不能左右或上下相邻,求方案数。 分析 dp[S][i]: 表示到 i 行时的状态S(用二进制数表示),那么状态转移就是 dp[S][i] += dp[S0][i 1] ,其中 S 为当前行合法状态,S0为上一 阅读全文
posted @ 2017-06-14 09:36 ftae 阅读(246) 评论(0) 推荐(0)
摘要:"hdu3507" 题意 给出 N 个数字,输出的时候可以选择连续的输出,每连续输出一串,它的费用是 这串数字和的平方加上一个常数 M。 分析 斜率优化dp,入门题。 "参考" "参考" 得到 dp 方程后,发现是O(n n)的复杂度,且 n 很大,考虑用斜率优化。 设 s[i] 为 1 到 i 的 阅读全文
posted @ 2017-06-13 16:09 ftae 阅读(414) 评论(0) 推荐(0)
摘要:题意 在 N N 的方格棋盘放置了 N 个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。求出有多少种合法的放置方法。 C++实现(位运算优化) flatmap 函数把产生的新皇后的位置加入到每个已经符合条件的格局(已经摆放好的皇后的状态)中 阅读全文
posted @ 2017-06-13 14:32 ftae 阅读(1333) 评论(0) 推荐(0)
摘要:"bzoj2440" 题意 求第 k 个不是完全平方数(除 1 以外)的正倍数的数。 分析 利用二分法求解,二分 x ,判断 x 是否是第 k 个数即可,那么我们就要计算 [1, x] 有几个符合条件的数。 首先本题用到容斥原理的思想, sum = 1 的倍数的数的个数 (4, 8, 9, ) 这些 阅读全文
posted @ 2017-06-12 22:51 ftae 阅读(251) 评论(0) 推荐(0)
摘要:"bzoj2301" 题意 求区间 [a, b] 和 区间 [c, d] 有多少对数 (x, y) 使得 gcd(x, y) = k 。 分析 "参考ppt" "参考blog" 考虑用容斥分成四次查询, 对于每次查询区间 [1, n] [1, m] 有多少对数使得 gcd = k ,等价于 [1, 阅读全文
posted @ 2017-06-12 22:49 ftae 阅读(173) 评论(0) 推荐(0)
摘要:"百度地图导航" 题意 给出 n 个城市, m 个城市群,每个城市群包含多个城市(一个城市可能被包含在多个城市群中),现在要修路,在城市与城市之间修路,或在城市群间修路,如果在城市群间修路,等价于两个城市群的城市两两各修一条路,问从城市 s 到 t 的最短路。 分析 问题主要是处理城市群间的相连。先 阅读全文
posted @ 2017-06-11 20:57 ftae 阅读(586) 评论(0) 推荐(0)
摘要:"腾讯消消乐" 题意 给出长度为 n 的序列,每次可以选择删除序列的一个连续区间,要求这一段区间内所有数最大公约数不小于 k ,删除后剩下的序列仍然构成连续序列。 定义 f(i) 为进行 i 次操作将整个序列删完的方案数。计算 $\sum_{i=1}^{n}{(f(i) \ast i)} \text 阅读全文
posted @ 2017-06-11 12:07 ftae 阅读(362) 评论(0) 推荐(0)
摘要:"1424 零树" 题意 给出一棵树,每次可以选择一个包含节点 1 的连通块,将所有的节点的权值同时加 1 或减 1 ,问最少多少次操作使所有节点权值变为 0 。 分析 这种题意简单的题目好处就是能很快知道自己会不会做,有些很长的英文题搞半天题意还理解错了。 树形DP。首先需要两个数组 d1 d2 阅读全文
posted @ 2017-06-09 19:52 ftae 阅读(252) 评论(0) 推荐(0)
摘要:"H. Fake News (medium)" 题意 以前是给出 S T 串,问在 S 中有多少个子串为 T 的个数,子串可以不连续,保持位置相对一致。 现在给出 n ,要你构造 S T 串。 分析 这种 special judge 的题目也是清奇。 设 S 为文本串,p 为模式串,设 S = p 阅读全文
posted @ 2017-06-09 09:55 ftae 阅读(198) 评论(0) 推荐(0)
摘要:"C. Heidi and Library" 题意 有 n 种分别具有价格 b 的书 a ,图书馆里最多同时存放 k 本书,已知接下来 n 天每天都有一个人来看某一本书,如果图书馆里没有则需要购买,问最少花费多少钱。 分析 这道题的一个 "简单版本" ,默认所有书价格为1,那么只需要用 set 维护 阅读全文
posted @ 2017-06-08 23:25 ftae 阅读(221) 评论(0) 推荐(0)
摘要:" 417 Div2 E" 题意 给出一颗苹果树,设定所有叶子节点的深度全是奇数或偶数,并且包括根在内的所有节点上都有若干个苹果。 两人进行游戏,每回合每个人可以做下列两种操作中的一种: 每个人可以吃掉某个叶子节点上的部分苹果。 将某个非叶子结点上的部分苹果移向它的孩子。 吃掉树上最后一个苹果的人获 阅读全文
posted @ 2017-06-06 00:04 ftae 阅读(353) 评论(0) 推荐(0)
摘要:"poj2728" 题意 给出 n 个点的坐标和它的高度,求一颗生成树使得树上所连边的两点高度差之和除以距离之和最小。 分析 "01分数规划" +最小生成树。 对于所有的边,在求最小生成树过程中有选或不选的问题, 首先根据01分数规划,我们要使 $ l = \frac{\sum_{i=1}^{n} 阅读全文
posted @ 2017-06-05 22:52 ftae 阅读(491) 评论(0) 推荐(0)
摘要:"UCloud 的安全秘钥" 题意 给出一个数组 s 串,和数组 t 串,那么如果两者长度相同且两者所含的数字全部相同,则说这两个串相似。 给定原始串 S ,以及 m 个询问 T 串,问 S 串有多少个连续子串和 T 串相似。 分析 2017年计蒜之道第五场的题目。题目很有趣,虽然比赛里只水出了中等 阅读全文
posted @ 2017-06-05 16:00 ftae 阅读(248) 评论(0) 推荐(0)
摘要:"poj2976" 题意 给出 a b 数组,一共 n 对数,其中最多可以去掉 k 对,问怎样使剩下比率(原始比率是 $ \frac{\sum_{i=1}^{n} a}{\sum_{i=1}^{n} b} 100 $)最大。 分析 "01分数规划" 设 $l=\frac{\sum a}{\sum b 阅读全文
posted @ 2017-06-05 11:48 ftae 阅读(269) 评论(0) 推荐(0)
摘要:"hdu4081" 题意 给出n个点坐标,每个点有权值,要求得到一颗生成树,且其中有一条道路修建不需要花费,但是要求这条道路所连接的两点的权值之和除以剩下所有道路的距离花费最大。 分析 首先求最小生成树,然后枚举所有的边,即去掉这条边后,在得到的两个连通图中分别找最大权值的点,计算最优比率。 cod 阅读全文
posted @ 2017-06-02 22:46 ftae 阅读(380) 评论(0) 推荐(0)
摘要:" 417 Div2 C" 题意 给出 n 个货物的基础价格和钱 S ,每个货物的最终价格要加上 购买商品总数 \ 商品在原来序列中的序号。 问最多能买多少件,且花费最小。 分析 二分购买商品数量,每次判断前给商品排序。 code cpp include using namespace std; t 阅读全文
posted @ 2017-06-02 01:20 ftae 阅读(137) 评论(0) 推荐(0)
摘要:" 417 Div2 B" 题意 给定一个01矩阵表示一幢楼,左右两侧是楼梯,中间是房间,1代表那个房间开灯,0代表关灯,现在某人从1层左端楼梯开始关掉所有灯,当移动某一层时,必须关掉当前层所有灯才能移动到下一层,每次在楼层间或房间间移动耗费时间为1,关灯不需要时间,问最短时间花费。 分析 移动某一 阅读全文
posted @ 2017-06-02 01:19 ftae 阅读(124) 评论(0) 推荐(0)
摘要:" 414 Div2 C" 题意 两个人每个人都有一串字母序列,他们要替换一个长度为 n 包含问号的新序列,他们每次可以使用自己序列中的字母代替新序列的问号(使用自己序列中的字母后那个字母就会消失),第一个人想要形成的序列字典序尽可能小,第二个人则希望尽可能大,两人操作不失误,第一个人先操作,问形成 阅读全文
posted @ 2017-06-01 21:06 ftae 阅读(136) 评论(0) 推荐(0)
摘要:" 415 Div2 C" 题意 给定一个数字集合,找到所有子集合最大值与最小值之差的和。 分析 列式子,找规律。 $ (a_2 a_1) 2^0 + (a_3 a_1) 2^1 + ... + (a_n a_1) 2^{n 2}$ \+ $(a_3 a_2) 2^0 + (a_4 a_2) 2^1 阅读全文
posted @ 2017-06-01 00:30 ftae 阅读(101) 评论(0) 推荐(0)