04 2017 档案

摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1823 体重就一位小数,可以扩展10倍更新。 坑在了更新人的时候,不应该直接更新,而应该求max,竟然在这里犯二。。 外层更新的时候,线段树的每一棵字数都要在判return之前update内层的树。相当于 阅读全文
posted @ 2017-04-30 23:28 Kirai 阅读(139) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2155 题意:给一个01矩阵,两个操作,翻转:子矩阵里每一个数都由0变1,1变0。 查询:查询某一点是0还是1。 一直以为二维线段树就是开一个线段树数组的我… 这题暴力更新每一个小矩形,翻转就+1,最后看看某点的奇偶。 写屎了,特别注意 阅读全文
posted @ 2017-04-30 21:43 Kirai 阅读(187) 评论(0) 推荐(0)
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1737 很经典的建图,但是需要记录路径。 vis数组标记点是否被扩展,在每次dinic通过bfs扩展的时候假如被扩展的点,最后一次bfs随后不再有增广路便是最终结果。 阅读全文
posted @ 2017-04-30 17:19 Kirai 阅读(160) 评论(0) 推荐(0)
摘要:转载自:http://www.cnblogs.com/icode-girl/p/5418461.html 【最小路径覆盖】 首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数. 一个PXP的有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶 阅读全文
posted @ 2017-04-30 11:18 Kirai 阅读(202) 评论(0) 推荐(0)
摘要:题目链接:http://hihocoder.com/problemset/problem/1394 相当于数一数最少有多少条链,这就是最小路径覆盖问题:给定一个有向无环图,用最少的路径数量去保证所有点都被覆盖住。 利用有向图中一条链的前驱和后继唯一(也可能没有)这一条性质就可以建立二分图,最大匹配出 阅读全文
posted @ 2017-04-30 11:15 Kirai 阅读(173) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/UVA-11992 题意:n*m的矩阵,每次对一个子矩阵操作,有三种操作:加x,设置为x,查询。查询返回子矩阵和、最小值、最大值 n很小(<=20),所以可以开20棵线段树,每次操作按行更新。 特别小心put和add两个延迟标记,坑老惨 阅读全文
posted @ 2017-04-29 23:58 Kirai 阅读(227) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/UVA-11235 题意:给一串不递减数字,q次询问,每次查询[l,r]内出现次数最多的数字出现的次数。 查询分两部分:一部分是[l,r]为同一个数的区间,另一部分则是在上下界处截取一部分的情况。 首先离散化,后用l[],r[],v[] 阅读全文
posted @ 2017-04-29 21:06 Kirai 阅读(116) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/UVALive-4329 题意:n个数,找出三个数ai,aj,ak,使得i<j<k且ai<aj<ak或者ai>aj>ak。问有多少种组合方法。 枚举aj,记cj为[1,j)内比aj小的数的个数,dj为(j,n]比aj小的个数。 那么j- 阅读全文
posted @ 2017-04-29 19:17 Kirai 阅读(149) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3469 题意:CPU两核拿来跑n个任务,每个任务在每个核上有花费,而且会有m对任务有交互,假如不在同一个核运行则需w的花费。问最小花费。 这题的意思就是把n个任务分成两部分,使得花费最小,《挑战》书上称此类问题可以通过巧妙的建图转化为最 阅读全文
posted @ 2017-04-29 16:18 Kirai 阅读(218) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/HDU-5094 题意:很典型的迷宫寻路,但是点与点之间有障碍或者门,每个点有钥匙。与其他题不同的地方是障碍不是单纯的某一个点不可以走,而是两点之间。求从一点出发到另一点最短路。 很简单,用G[][][][]存两个点之间的障碍(图大了其 阅读全文
posted @ 2017-04-29 15:19 Kirai 阅读(237) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2458 题意:n男m女构成二分图,希望找出k个人,使他们互相都认识。 相当于求这个图的最大团,由于特殊性质(是个二分图),因此可以可以用一个定理: 最大团 = 补图的最大独立集 其实想一下这个定理也很合理 阅读全文
posted @ 2017-04-29 11:31 Kirai 阅读(119) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/HDU-5098 题意:给软件安装清单,有些软件需要一些软件安装之前安装。每个软件安装前可能需要重启也可能不需要,问最少需要重启几次。 处理完字符串以后DFS,找一条需要重启的软件安装链中最长的。 gao()大法好。 阅读全文
posted @ 2017-04-28 21:37 Kirai 阅读(200) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/HDU-5093 按照行和列分别标注*的id,合并同行或同列相邻的块,二分图两部分分别是行和列,某一点(i,j)则连一条rid(i,j)到cid(i,j)的边。跑最大匹配。 阅读全文
posted @ 2017-04-28 18:21 Kirai 阅读(157) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/HDU-5092 很简单的DP,记录路径的方法也很基础。有一个小小的坑点就是希望输出最靠右的最大结果。 那么在更新的时候,尽可能向右走,并且输出结果的时候,从右到左扫描即可。 阅读全文
posted @ 2017-04-28 18:18 Kirai 阅读(177) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/UVA-1449 题意:给一个词典和一个字符串,找出字符串里出现次数最多的单词,如果有出现次数相同的,要按照输入顺序输出。 坑点好多,或许是因为自己实现得比较挫所以坑才多。 用一个map<string,int>计数,map<string 阅读全文
posted @ 2017-04-27 21:21 Kirai 阅读(167) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3057 题意:《挑战》P230的题。 首先预处理出所有人到所有门的最短距离dis(pxi,pyi,dxj,dyj),然后二分答案。 拿二分出的时间t判断,判断的时候把每一个门拆成t个点,与人连起来,求最大匹配,看匹配结果是否满足与总人数 阅读全文
posted @ 2017-04-27 20:13 Kirai 阅读(124) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3041 题意:N*N中选最少行或者列,可以覆盖所有的点。 最小点覆盖问题,等于最大匹配。 建图:考虑行,选中某一行,那么行上的点对应的列则不需要被选。根据这一条,建图就行。 阅读全文
posted @ 2017-04-27 14:13 Kirai 阅读(156) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2195 题意:给个图,m代表人H代表房子。每一个m要有一个H,代价是曼哈顿距离。问让所有m找到房子的最小花费。 可以直接枚举m和H建二分图跑KM。 1 #include <algorithm> 2 #include <iostream> 阅读全文
posted @ 2017-04-26 16:11 Kirai 阅读(187) 评论(0) 推荐(0)
摘要:题目链接:http://codevs.cn/problem/1917/ 这题输入好恶心啊,看了半天看不懂。 给一个地图,给出一些路径,这路径上的宝藏有价值。宝藏只能拿一次。 再给出机器人起始位置,终点位置。终点位置不唯一且每一个终点只能允许有限个机器人到达,起点则不止一个机器人。 问机器人收集到的最 阅读全文
posted @ 2017-04-26 15:26 Kirai 阅读(157) 评论(0) 推荐(0)
摘要:题目链接:http://codevs.cn/problem/1916/ n个点之间可以相互传递值,每传递一次步骤+1。最终希望所有点的值相同,问最少步骤。 最终所有值应当是平均数avg,如何在两个相邻点之间传输值?可以先拆点,再建边: 将每一个点拆成两个点(两个点集分别记为①和②),同点②到①之间的 阅读全文
posted @ 2017-04-26 14:22 Kirai 阅读(125) 评论(0) 推荐(0)
摘要:题目真的是从易到难的顺序,而且跨度非常合理,只是看到榜单上后5题只有一支队做出来了一个,其他的没人做出来啊。。 A - Cooking Competition 水题。 B - Problem Preparation 水题,细心点。特别是10~13题,差点被坑一小下。 C - What Kind of 阅读全文
posted @ 2017-04-25 19:00 Kirai 阅读(195) 评论(1) 推荐(0)
摘要:1.5H写出来的实验,没有用自动机,因为觉得很难画,不如直接模拟。等有时间会画一个自动机出来并且根据自动机写出一个更象样的词法分析器。 定义假设单词种别按如下形式编码: 保留字:单词种别码均为1。输出样式示例:(1, if)。 标识符;单词种别码均为2。输出样式示例:(2, x)。 无符号整数;单词 阅读全文
posted @ 2017-04-25 16:44 Kirai 阅读(474) 评论(0) 推荐(0)
摘要:题目链接:http://hihocoder.com/problemset/problem/1036 不知道为什么匹配到某点存在next[idx]的时候,只需要检查这一个sign就行,如果检查此点的fail的sign就会TLE。 大概数据比较弱能让我水过吧。 阅读全文
posted @ 2017-04-24 14:51 Kirai 阅读(196) 评论(0) 推荐(0)
摘要:比赛链接:https://www.bnuoj.com/v3/contest_show.php?cid=9056#info 好惨啊快速做完6个水题以后就在电脑前夯吃屎。。 C. Captcha Cracker 暴力。 A. Another Server 相邻两数求和求和最小的。 E. Euclidea 阅读全文
posted @ 2017-04-22 17:15 Kirai 阅读(381) 评论(2) 推荐(0)
摘要:题目链接:https://www.bnuoj.com/v3/problem_show.php?pid=49100 这题正着做会超时,考虑倒过来: 要求查询最后一次修改的值,那么某个区间的最后一次被修改,那之前的所有这个区间的子集的操作都是对查询没有贡献的。 所以倒过来区间更新线段树,tag来记录线段 阅读全文
posted @ 2017-04-21 20:39 Kirai 阅读(181) 评论(0) 推荐(0)
摘要:题目链接:https://www.bnuoj.com/v3/problem_show.php?pid=51645 最多只允许选10个点,要覆盖所有边,问最少选几个点。 可以给每条边标号,每一次选点的时候选链接到的没有被删掉的边的数量最多的点,然后每次都拿走度最大的点所连的边。直到没有这种点为止。 阅读全文
posted @ 2017-04-21 16:35 Kirai 阅读(150) 评论(0) 推荐(0)
摘要:题目链接:https://www.bnuoj.com/v3/problem_show.php?pid=51640 希望每天刷题难度差距不会太大,很容易知道排序后相邻两数差的绝对值最小。 题意变成了将n个数拆成m份,让这m份里相差最大的两个数的差的绝对值最小。 用dp(i,j)表示将j个数拆成i份的最 阅读全文
posted @ 2017-04-21 15:52 Kirai 阅读(258) 评论(0) 推荐(0)
摘要:题目链接:https://www.bnuoj.com/v3/problem_show.php?pid=51636 第i个数在线段树中存放的是第i个数作为位置的数字,两数交换的时候会影响区间和,画一棵线段树会发现会有四个点影响这个区间和。 阅读全文
posted @ 2017-04-21 15:18 Kirai 阅读(213) 评论(0) 推荐(0)
摘要:RT,整理了一个Tarjan求割点(边)的模板,和以往不同的是记录了两条边的idx,遇到相同idx的回边不会再走。这样有重边就不会误判成割点(边)了。 阅读全文
posted @ 2017-04-20 16:09 Kirai 阅读(323) 评论(1) 推荐(0)
摘要:转载请注明出处:http://www.cnblogs.com/kirai/ 作者:Kirai 零.问题的提出 最近希望在分布式平台上实现一个AC自动机,但是如何在这样的分布式平台上表示这样的非线性数据结构就难住我了。因为一直在使用RDD提供的一些基本的操作,没有需要什么复杂的操作。所以突然想到了在分 阅读全文
posted @ 2017-04-16 16:45 Kirai 阅读(1115) 评论(0) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222 题意:求字典中所有模式串各出现了多少次。 建立AC自动机,查询的时候首先跳过所有cur->next[index]为NULL的情况,再跳过cur是root的情况。因为root不存任何信息。 过滤完上 阅读全文
posted @ 2017-04-12 22:18 Kirai 阅读(151) 评论(0) 推荐(0)
摘要:链接:https://code.google.com/codejam/contest/3264486/dashboard#s=p0 A.贪心,遇到-的就翻k个, 翻到最后看看是不是都是+。 B.小数据直接从n减到第一个符合条件为止。大数据可以从头到尾扫,遇到第一对不符合条件的数字就借位并且将后面所有 阅读全文
posted @ 2017-04-09 15:50 Kirai 阅读(251) 评论(0) 推荐(0)