10 2016 档案

摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5934 题意:有n个炸弹,爆炸范围和点燃花费给你,如果一个爆炸那么它爆炸范围内的炸弹也会爆炸。问让所有炸弹爆炸的最小花费。 遍历任意两个炸弹,如果i在j的爆炸范围内,则建一条有向边。缩完点以后找入度为0的 阅读全文
posted @ 2016-10-31 20:10 Kirai 阅读(159) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5933 题意:长度为nn的数组: a_1, a_2, \cdotsa​1​​,a​2​​,⋯, 每次操作要么可以merge两个相邻的数为一个, 值为两个数的和; 要么可以把一个数分裂成两个, 两个数的和为 阅读全文
posted @ 2016-10-31 18:54 Kirai 阅读(756) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5952 题意:求图中规模为s的团的个数。 DFS+剪枝,姿势不好很容易TLE啊。 阅读全文
posted @ 2016-10-31 18:26 Kirai 阅读(290) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:求解递推式f(n)=f(n-1)+2*f(n-2)+n^4。 写了个小东西,不过我的文章里式子是2*f(n-1),内容差不多。凑合看 阅读全文
posted @ 2016-10-31 16:04 Kirai 阅读(246) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5938 题意:给出一个长度最大是2020的数字串, 你要把数字串划分成55段, 依次填入’+’, ’-’, ’*’, ’/’, 问能得到的最大结果。 想让这个结果最大,那尽可能让减号左边的数最大,只需要关 阅读全文
posted @ 2016-10-30 15:12 Kirai 阅读(299) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5907 记下每块大小,然后n*(n+1)/2 阅读全文
posted @ 2016-10-29 15:47 Kirai 阅读(187) 评论(0) 推荐(0)
摘要:题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2459 题意:给个n*n的01矩阵,可以修改其中的0变成1,问最少修改几个0可以让所有位置中的上 阅读全文
posted @ 2016-10-27 15:13 Kirai 阅读(377) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1095 字典的单词在map中排序和不排序各存1次,查的时候相减。 阅读全文
posted @ 2016-10-26 15:28 Kirai 阅读(303) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1433 数论关于3的倍数有一个推论,就是能被9整除的数的各位和都是9。所以找到5的个数*5的最大的9的倍数,后面全补0。当然前面的判断也是需要的 阅读全文
posted @ 2016-10-25 21:59 Kirai 阅读(312) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1024 因为n和m都到100了,所以直接快速幂硬算一定会爆炸,考虑直接对矩阵中的结果对2取对数,存到set里维护一下。还好精度没有爆炸。 阅读全文
posted @ 2016-10-25 21:34 Kirai 阅读(174) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1537 思路:一开始用二项式拆了一下,发现这个式子的形式总能变成a+b*sqrt(2)的形式。然后就列了几个。 1+1*sqrt(2) 3+2*sqrt(2) 7+ 阅读全文
posted @ 2016-10-25 21:21 Kirai 阅读(225) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1230 dp(l,s,ss)表示长度为l的数各位和为s,各位平方和为ss的幸运数的个数。 阅读全文
posted @ 2016-10-25 11:29 Kirai 阅读(240) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1405 (1)我们给树规定一个根。假设所有节点编号是0-(n-1),我们可以简单地把0当作根,这样下来父子关系就确定了。 (2)定义数组num[x]表示以节点x为根 阅读全文
posted @ 2016-10-24 22:17 Kirai 阅读(252) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1065 估计没人这么做吧…用一个set维护前缀和,但是set的lower_bound和upper_bound都是返回不小于x的最小值,这就很尴尬了。 重载了这个<, 阅读全文
posted @ 2016-10-24 20:36 Kirai 阅读(356) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 这道题的最大子段和有两种可能,一种是常规的子段和,另一种是从结尾到开头的一个子段。常规做是一种可能,另一种带循环的则可以认为是序列中间有一段最小子段和,把这 阅读全文
posted @ 2016-10-24 19:18 Kirai 阅读(191) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007 dp(id, s)表示第id个数之前,其中一个集合和为s的差,按照取和不取dfs就行。 阅读全文
posted @ 2016-10-24 16:55 Kirai 阅读(204) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1090 找到所有数的和,然后再原数组里二分找符合条件的第三个数。 阅读全文
posted @ 2016-10-24 16:35 Kirai 阅读(226) 评论(0) 推荐(0)
摘要:比赛链接:http://codeforces.com/gym/100861 A模拟,注意两个特殊的缩写。 B排序+离散化 C贪心,就像搭积木一样,全是1*1*1的小方块,要想让表面积尽可能小,那就把他们往一个角落堆。比如 3 3 1 2 3 4 5 6 7 8 9这样的数据,那么排出来就是。 9 8 阅读全文
posted @ 2016-10-24 15:59 Kirai 阅读(460) 评论(0) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5787 题意:求[L,R]区间内的数字,使得所有长度为k的子数列内所有数位都不同。 K<=5的所以可以直接记录到前k个数字的值是多少。dp(l,p1,p2,p3,p4)分别记录就可以了。 弱智了WA了好几 阅读全文
posted @ 2016-10-22 17:33 Kirai 阅读(183) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5783 题意:给n个数,要求划分成多个段,使得每一个段的任意前缀和都不小于0。 从后往前截取,这样不会影响到未截取的部分。维护当前的前缀和,每次截取不要忘记给前缀和置零。 阅读全文
posted @ 2016-10-22 16:09 Kirai 阅读(177) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5791 题意:给两个数列,求有多少个公共子序列。 dp(i,j)表示a1~ai和b1~bj的公共子序列个数,当ai==bj的时候,dp(i,j)=dp(i-1,j)+dp(i,j-1)+1。否则dp(i, 阅读全文
posted @ 2016-10-22 15:25 Kirai 阅读(183) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5763 题意:给定两个字符串a和b,其中a中的字符串如果含有子串b,那么那部分可以被替换成*。问有多少种替换方法。 kmp求出b在a中完全匹配后的结尾位置,然后dp(i)表示匹配到i时替换的方案数(不替换 阅读全文
posted @ 2016-10-22 13:52 Kirai 阅读(170) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5773 题意:给n个数,其中0可以用任何数字代替,问如何替换0使整个数列中的LIS最长。 0可以用任何数字替换,那显而易见不管如何最长的情况就是0全部用上。这是网上的思路,维护前缀和sum表示0的个数,在 阅读全文
posted @ 2016-10-22 11:44 Kirai 阅读(212) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5877 题意:给一棵树和各点的权值a,求点对(u,v)个数,满足:1.u是v的祖先,2.a(u)*a(v)<=k。 对于这棵树,我们先存好树的结构。再离散化,最后dfs的时候往线段树里插点,那对应idx的 阅读全文
posted @ 2016-10-20 14:39 Kirai 阅读(152) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 题意:给定数列,求区间[L,R]的GCD的值,并求出有多少个子区间满足和[L,R]的GCD相等。 RMQ预处理所有区间的GCD,枚举所有区间的左边界i,起初固定右边界j,二分枚举右边界j的最大值, 阅读全文
posted @ 2016-10-19 21:37 Kirai 阅读(160) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5723 题意:求最小生成树,并且求这棵最小生成树上所有边走过次数的期望。 走过次数的期望=Σ边被走过次数*边权/(n*(n-1)/2) 求边被走过的次数,相当于关心这个边的两侧分别有多少点,走的次数就是两 阅读全文
posted @ 2016-10-19 20:46 Kirai 阅读(230) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2182 题意:给定1~n个数和n个位置,已知ai表示第i个位置前有ai个数比当前位置的数小,求这个排列。 和刚才YY的题意蛮接近的,用树状数组维护当前数组内数字分别是第几大的,倒着查询,每次查尽可能靠右的位置,可以保证取的数字是未取到并 阅读全文
posted @ 2016-10-18 19:42 Kirai 阅读(240) 评论(0) 推荐(0)
摘要:在看组合数学,看到逆序列这个概念。于是YY了一道题:已知逆序列,求出原序列。 例子: 元素个数 n = 8 逆序列 a={5,3,4,0,2,1,1,0} 则有原序列 p={4,8,6,2,5,1,3,7} 思路蛮简单的,但是复杂度是O(2*N*lgN)的,不知道有没有O(N)的算法。 bit维护点 阅读全文
posted @ 2016-10-18 16:29 Kirai 阅读(561) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727 题意:有N个阴珠子和N个阳珠子,特定序号的阴阳珠子放在一起会让阳珠子暗淡。现在问排放成一个环,如何排放能让暗淡的阳珠子尽可能地少。 既要考虑阳珠子的位置也要考虑阴珠子的位置,可以先枚举阴珠子成环的 阅读全文
posted @ 2016-10-17 12:01 Kirai 阅读(167) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3718 题意:有一堆答题情况和正确答案,问每一个答题情况的正确率最大是多少。 给每一对答案和答题情况的字母做映射,每次映射权值+1,这样会构造出一个二分图。在这个二分图上做最大匹配结果除以题目数量就是正确 阅读全文
posted @ 2016-10-14 10:46 Kirai 阅读(226) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3714 题意:求n个二次函数在[0,1000]的最小值。 三分枚举。 阅读全文
posted @ 2016-10-13 20:34 Kirai 阅读(176) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3711 题意:两个数集合,找二进制下位数不同最少的数,如果一样,找集合数最小的。 暴力枚举 阅读全文
posted @ 2016-10-13 20:20 Kirai 阅读(167) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 题意:求区间[L,R]内每一个数中是否存在一位,使得左边的各位数*距离=右边的各位数*距离(自己和自己的距离算0)。 先枚举pivot的位置,然后做数位dp,记录当前数位、pv的位置和当前和。由于 阅读全文
posted @ 2016-10-13 14:49 Kirai 阅读(216) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:n个数中找m个数,使得从左到右读是上升的子序列。问一共有多少种。 dp(i,j)表示取到第i个位置,长为j并且最后一个数为a(i)的方案总数。 更新就比较容易了,dp(i,j)=∑(k=1- 阅读全文
posted @ 2016-10-13 11:20 Kirai 阅读(290) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5543 题意:往长为L的线段上覆盖线段,要求:要么这些线段都在L的线段上,要么有不超过自身长度一半的部分在线段外面,最多有两条这样的线段(在两头)。 dp(i,j,k)表示前i个线段覆盖在长度为j的线段上 阅读全文
posted @ 2016-10-13 10:29 Kirai 阅读(258) 评论(0) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3911 题意:一个01串,两种操作: 0 a b:查询[a,b]内连续1的最长长度。 1 a b:翻转[a,b]内的所有数字(0变1,1变0)。 更新操作落实到具体数字,这时候不能莽直接更新数字对吧,我们 阅读全文
posted @ 2016-10-12 22:08 Kirai 阅读(231) 评论(0) 推荐(0)
摘要:题目链接:http://hihocoder.com/contest/hiho119/problem/1 题意:中文题意。 由于1≤N≤200,1≤M≤200。最极端情况就是中间所有边都是满的,一共有N*M条边,则最多有40000条边。 对于这样的问题有统一的建图策略,提取出问题的最终形态即可按照如下 阅读全文
posted @ 2016-10-12 14:23 Kirai 阅读(526) 评论(0) 推荐(2)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 题意:给定n个数,两个操作: U A B:将位置A的数值改成B Q A B:查询[A,B]内最长连续上升子序列的长度。 注意到‘连续’一词,可以用线段树维护[L,R]区间内的LICS。 定义结构N 阅读全文
posted @ 2016-10-12 10:18 Kirai 阅读(204) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3667 题意:有一个hotel有n间房子,现在有2种操作: 1 a,check in,表示入住。需要a间连续的房子。返回尽量靠左的房间编号并更新。 2 a b,check out,从a开始退房,一共退到a+b-1。 seg数组l表示从左 阅读全文
posted @ 2016-10-10 21:08 Kirai 阅读(222) 评论(1) 推荐(0)
摘要:用过spark,对wordcount这个演示程序记忆犹新,于是想试着实现一个简单的wordcount。又因为在学习函数式编程,希望可以把数据看成一个整体,在现有的函数上进行操作。于是就有了这一行代码。 这行代码包括对单词的粗略处理,包括全部转化为小写,去除标点符号等。接下来用filter去掉了空行, 阅读全文
posted @ 2016-10-09 21:46 Kirai 阅读(920) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/724/problem/B 题意:给出n*m的数字阵,每行数都是1-m的全排列,最多可以交换2个数一次,整个矩阵可以交换两列一次。问在n+1次操作内是否可以让这整个矩阵每行都变成单调递增的。 先考虑不用交换列的情况,那么只需要关心 阅读全文
posted @ 2016-10-09 19:18 Kirai 阅读(249) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2846 题意:求一堆串中有多少个以0开始的子串包含目标串。 可以把所有的串符合要求的子串放入字典树统计。这时候会有一个问题,那就是adddd这样的单词:样例中已经说明了,这样的单词明显是只算一次的。所以可 阅读全文
posted @ 2016-10-09 16:20 Kirai 阅读(261) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2845 题意:某行只能选不相邻的数字,行只能选不相邻的行。问如何选使得数字的和最大。 200000显然二维数组存不下,那么针对每一行处理出来一个最大值结果,之后再对这个最大值结果做相同的操作,就可以用两个 阅读全文
posted @ 2016-10-09 15:17 Kirai 阅读(171) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1416 题意:一段数分成好几段相加,求最大的且不大于目标值的组合。 DFS,用vector<int>tmp来记录中间结果,回溯的时候pop掉。判重用了个map,其实用一个flag打标记也可。 状压枚举也可以 阅读全文
posted @ 2016-10-09 11:34 Kirai 阅读(235) 评论(0) 推荐(0)
摘要:最近在学一种对于我来讲是全新的编程范式:函数式编程。 这种编程范式旨在使用有限的函数来完成多种不同的需求,最常见的就是map reduce filter这三种操作,基础都是以集合为单位的。希望自己通过读书思考和练习能够掌握这一种程序设计的理念。 下面是一个判断是否是完美数的小程序,是用python写 阅读全文
posted @ 2016-10-08 16:05 Kirai 阅读(346) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3600 枚举行,判断列是否相同。 阅读全文
posted @ 2016-10-08 11:24 Kirai 阅读(267) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3734 题意:n个方块4个颜色,现在要求涂色,其中两种颜色的数量是偶数,问多少种情况。 考虑sta(i)为当前i块的时候的合法涂色种类数,则有:EE、OE(EO)、OO三种情况。 EEi = 2 * EE(i-1) + OE(EO)(i 阅读全文
posted @ 2016-10-08 10:26 Kirai 阅读(202) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5925 题意:一个 R×C 的棋盘,有 n≤200 个格子是黑的,其他都是白的,问所有白色格子构成的四联通块有多大。 题解:离散化后 BFS。 这个离散化以后会有一个问题,因为这个题要统计每一个连通块里的 阅读全文
posted @ 2016-10-07 17:00 Kirai 阅读(224) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5929 题意:维护一个栈,支持往栈里塞 0/1 ,弹栈顶,翻转栈,询问从栈底到栈顶按顺序 NAND 的值。 题解:只要知道最后的 00 后面 11 的个数的奇偶性就行。可以用链表把所有 00 的位置存下来 阅读全文
posted @ 2016-10-06 22:15 Kirai 阅读(302) 评论(0) 推荐(0)
摘要:比赛链接:https://www.bnuoj.com/v3/contest_show.php?cid=8506#info I.裸数位dp,dp[l][pre][dir][fz]表示长度为l的时候上一个数是pre,此时是统计dir(分为增、减、相同),fz记录当前是否是前导零。有种情况,就是各位相同的 阅读全文
posted @ 2016-10-05 18:00 Kirai 阅读(212) 评论(0) 推荐(0)
摘要:题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1080 题意:问n!能否被m整除。 给m分解质因数,用这些质因数以及他们的幂分别去除n,直到质因 阅读全文
posted @ 2016-10-05 17:37 Kirai 阅读(346) 评论(0) 推荐(0)
摘要:1002.公式,手算一下就能找到两个式子的关系,迭代一下就行。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 9; 5 int a[maxn], b[maxn]; 6 int n, p, q; 7 8 i 阅读全文
posted @ 2016-10-04 16:59 Kirai 阅读(412) 评论(0) 推荐(0)
摘要:比赛链接:https://www.bnuoj.com/v3/contest_show.php?cid=8504#info A.找两个数乘积是连续上升并且最大的。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn 阅读全文
posted @ 2016-10-03 17:19 Kirai 阅读(397) 评论(0) 推荐(0)
摘要:共享代码用~ 1 #pragma once 2 #pragma warning(disable:4996) 3 #include "convert_image.hpp" 4 #include <Windows.h> 5 #include <iostream> 6 #include <string> 阅读全文
posted @ 2016-10-02 23:03 Kirai 阅读(229) 评论(0) 推荐(0)
摘要:比赛链接:https://www.bnuoj.com/v3/contest_show.php?cid=8520 A.无非两种情况,点在体里和点在体外。在体外分三种情况,分别是到顶点的距离最小、到棱的距离最小、到面的距离最小。坑在long long于是悲催了一发。 1 #include <bits/s 阅读全文
posted @ 2016-10-02 17:22 Kirai 阅读(252) 评论(0) 推荐(0)
摘要:题目链接:http://lightoj.com/volume_showproblem.php?problem=1205 题意:求[l,r]内回文数的数量。 dp(s,l,ok)表示数字以s为开头,长度为l的时是/不是回文数 dp(s,l,ok)可以由dp(s,l-1,ok)更新来,当且仅当接下来插入 阅读全文
posted @ 2016-10-02 16:40 Kirai 阅读(246) 评论(0) 推荐(0)