08 2014 档案
摘要:描述小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市——那座城市即将举行美食节!但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票——他们只能够乘坐最为破旧的火车进行他们的旅程。不仅如此,因为美食节的吸引,许多人纷纷踏上了和小Hi小Ho一...
阅读全文
摘要:总结一下小数和分数之间精确转换的方法。首先是分数转换为小数,这个比较简单,先看题http://acm.hdu.edu.cn/showproblem.php?pid=2522输入一个n,求1/n的精确表示,如果有循环节只输出最小的一个。手动模拟一下出发,会发现每次都是上一次除法剩下来的余数*10然后继...
阅读全文
摘要:经典的3-sum问题,写了个hash400ms过,但是写的n^3的暴力枚举特么居然0ms,让我非常不能容忍。Hash代码#include #include #include #include using namespace std;const int maxn = 1005;const int mo...
阅读全文
摘要:把等式分成两拨算用中途相遇法就好了。不过要注意的是这里不能用map,会超时,要自己手写hash,我重载了[]操作符之后用起来和map差不多,很随意#include #include #include #include #include #include #include #include #incl...
阅读全文
摘要:状压整张图包括每个点的炸弹有没有被拿,墙壁有没有被炸。用优先队列存一下状态。还有就是注意整数数溢出的问题。#include #include #include #include #include #include #include #include #include #include #includ...
阅读全文
摘要:简单BFS? 感觉不是很好写,不过我觉得我这种写法还是比较飘逸的。#include #include #include #include #include #include #include #include #include #include #include #include #include ...
阅读全文
摘要:囧,一开始没有管人的情况,只看箱子,果然SB了。#include #include #include #include #include #include #include #include #include #include #include #include #include #include ...
阅读全文
摘要:状压一下然后随意写,注意如果你被魔王抓了一次钥匙就全丢了哦,这样第二个样例就可以解释为什么是-1而不是20了#include #include #include #include #include #include #include #include #include #include #inclu...
阅读全文
摘要:搞法和上面那个逃离迷宫差不多,细节要处理好,蛋疼了好久QAQ#include #include #include #include #include #include #include #include #include #include #include #include #include #in...
阅读全文
摘要:其实就是让你找最少的拐弯次数,dk数组记录到一个点的最少拐弯次数,每次让一个方向上的所有点进队就好了。注意如果拐弯次数相等还是可以进队的,因为过来的方向可能不一样。#include #include #include #include #include #include #include #incl...
阅读全文
摘要:对于石头的处理就按照每个位置的时间取k的余数判一下重复就好,其他随意写#include #include #include #include #include #include #include #include #include #include #include #include #includ...
阅读全文
摘要:虐心广搜#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i...
阅读全文
摘要:其实就是多加了一个引爆时间的限制条件,反正n,m给的很小,直接记录3维状态,之后就很随意了。#include #include #include #include #include #include #include #include #include #include #include #incl...
阅读全文
摘要:我们需要维护一个区间和表示各个区间剩下多少个点,每次切一个多边形的时候先算一下被切下来的多边形有多少条边(多少个顶点),然后把这些顶点抹掉即可。但是会出现一个问题,如果被切下来的多边形还要继续被切,怎么破? 因为切的顺序是无关的,所以先将所有切的操作排序,先处理切下来小块的,然后处理大块的,就可以避...
阅读全文
摘要:所有的“雨点”最后都可以分解成梯形(三角形就是其中一个底为0),然后lazy标记设置成梯形的上底和下底就好。数目很大,当然要离散化,注意处理点和点之间线段的关系,而且向下更新还有下放标记的时候要注意更新的过程中标记是有可能会变的。#include #include #include #include...
阅读全文
摘要:保存5棵线段树,分别表示当前区间内的各个位置取5模的和。核心操作就是这个pushup,我们主要关心怎么样通过两个子区间的信息来推出父区间即可。感觉做了这题之后对线段树的理解又深了一些。#include #include #include #include #include #include #inc...
阅读全文
摘要:一直觉得这题因为有总量限制,是不能用母函数解的,今天偶然发现原来是可以的,记录一下。只要搞母函数的时候多开一维来表示用了多少个硬币就好了,其实就是目标状态是二维的母函数类似于 假设我现在要处理的面值是2 (1 + x^2 * y + x^4 * y ^ 2 + x ^ 6 * y ^ 3...)...
阅读全文
摘要:~~~NotOnlySuccess 出的题~~~看了题之后觉得和HDU 4027有点像,给的K很小,只有10,目测只要有人升级的时候直接更新到叶子节点就ok了。不过不同于HDU 4027 的是,那题每一次更新都相当于这题的一次升级操作,这题里面可能会出现一次操作之后没有升级和出现升级两种情况,一时半...
阅读全文
摘要:囧,一开始看错题意,后来才发现人是垂直下落的,被附带链接里的Man Down游戏误导了。那就变成了一个简单的DAG模型动态规划,随意搞就ok了#include #include #include #include #include #include #include #include #includ...
阅读全文
摘要:直接暴力更新,复杂度10NlogN#include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ...
阅读全文
摘要:题意: 给你一个数列,然后有n个查询,问你给定区间中不同数字的和是多少。思路还是比较难想的,起码对于蒟蒻我来说。将区间按照先右端点,后左端点从小到大排序之后,对于每个查询,我只要维护每个数字出现的最后一次就可以了(这个结论稍微想一下就可以证明是正确的)。然后就是简单的点更新,区间求和问题了~#inc...
阅读全文
摘要:题意奇葩的一笔,本质上就是一个复杂统计,智商低下的我想不出来只好去搜了题解#include #include #include #include #include #include #include #include #include #include #include #include #incl...
阅读全文
摘要:有点像HDU 3642的强化版。给你N个矩形的坐标,问题平面上被k个不同的矩形覆盖的面积是多少。当初HDU 3642 是直接一个一个手写的,这里的k虽然说只有10,合并过成一个一个手写也是相当蛋疼的,不过仔细想一下,不难推出一般性的关系,然后直接用循环搞就好了。不过我还是因为有个地方忘记初始化WA了...
阅读全文
摘要:一开始把题目看错了,弄得很复杂,后来发现就是简单的求体积并问题。#include #include #include #include #include #include #include #include #include #include #include #include #include #...
阅读全文
摘要:题面据说很美~每个星星可以根据在窗口的左下角和右上角两个位置建立两条扫描线,之后就是简单的区间增减和求最大值操作了。注意要处理在边界上的星星是不算的情况,其实只要把左右边界分别增减一个eps即可。#include #include #include #include #include #includ...
阅读全文
摘要:题意:给你N个长方体的左下角和右上角坐标,问你空间中有多少体积是被大于两个不同的立方体覆盖的。x,y~10^6 z~500考虑到给的z比较小,所以可以直接枚举z,然后跑二维的扫描线就好。关于处理被不同的线段覆盖三次的问题,可以维护四个信息,cnt,once,twice,more,然后相互推出结果就好...
阅读全文
摘要:反向标记是错的,要对矩形进行拆分#include #include #include #include typedef long long LL;using namespace std;#define lson rt seg;void pushup(int rt, int l, int r) { ...
阅读全文
摘要:题意:给你一些矩形的左上角点的坐标和右下角点的坐标,求周长并最显而易见的思路就是对于x轴和y轴做两次扫描线,对于负数的坐标进行离散化。每次增加的值是线段变化量的绝对值。具体写法和求面积并的差不多。#include #include #include #include using namespace ...
阅读全文
摘要:题意:给出一些矩形的最上角坐标和右下角坐标,求这些矩形的面积并。NotOnlySuccess 线段树专辑中扫描线模板题,弱智的我对着大大的代码看了一下午才搞懂。 具体见思路见注释=。=#include #include #include #include #define lson rt dy;vec...
阅读全文
摘要:线段树大杂烩~ 各种操作都有,细心点不难1A#include #include #include #include using namespace std;#define lson rt> 1; int Llen = mid - l + 1, Rlen = r - mid; for (int i =...
阅读全文
摘要:简单的区间合并线段树,不过要特殊讨论一下当前车是停车场里面唯一一辆车的情况还有车停在边界的情况#include #include #include #include using namespace std;#define lson rt> 1; int Llen = mid - l + 1, Rle...
阅读全文
摘要:虐心线段树 感觉写的有点挫#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define lson rt> 1...
阅读全文
摘要:水题,一维的DP,表示还剩哪些atom的时候能获得的最大能量#include #include #include #include #include #include #include #include #include #include #include #include #include #in...
阅读全文
摘要:一开始能想到的状态就只有位压两行和当前行的行号,这样无论是空间和时间都是无法接受的。但是因为炮兵的攻击范围比较大,而且又有地形限制,每一行的状态其实不多了,打表看了一下不超过80种,离散化一下就可以随意DP了。据说题目也可以抽象成二分图最大匹配来搞?感觉复杂度有点高#include #include...
阅读全文
摘要:三进制状压。调了一整天,一开始用记忆化搜索一直超时,后来改成了递推,代码能力真是弱。。后来瓜神提供了一个思路,如果建立一个超级源点然后用记忆化搜索的话,应该可以过。。。。#include #include #include #include #include #include #include #i...
阅读全文
摘要:保证每个点访问过一次就行,然后会到原点。 这种情况可以先做一边floyd,然后跑tsp就好。#include #include #include #include #include #include #include #include #include #include #include #incl...
阅读全文
摘要:水题,记录一下当前是第几行和上一行的状态就好,因为每一行只会受到上一行的限制#include #include #include #include #include #include #include #include #include #include #include #include #inc...
阅读全文
摘要:题目描述看的莫名其妙,很久才看懂。就是很裸的树形背包问题吧,状态是dp(i,j)表示节点i取到j个客户能得到的最大收益。注意一开始初始化的时候所有j为0的时候应该是0,然后其他值都要初始化成负无穷,因为收益有可能是负值。然后做01背包的时候注意方向,防止出现取某一个元素多次#include #inc...
阅读全文
摘要:一开始看错题了,后来发现原来是在一颗带权的树上面求出距离每一个点的最长距离,做两次dfs就好,具体的看注释?#include #include #include #include #include #include #include #include #include #include #inclu...
阅读全文
摘要:这个是同时有上下限的,初始化的时候注意一下就好#include #include #include #include #include #include #include #include #include #include #include #include #include #include u...
阅读全文
摘要:就是一个多重背包可行性判断,范围不大的话也可以用母函数处理出所有的情况、#include #include #include #include #include #include #include #include #include #include #include #include #inclu...
阅读全文
摘要:这次变成了每一种硬币有数量限制的情况了,用母函数显然可以十分方便的解决#include #include #include #include #include #include #include #include #include #include #include #include #includ...
阅读全文
摘要:就是经典的找零钱问题的小小变形,DP和母函数都可搞#include #include #include #include #include #include #include #include #include #include #include #include #include using na...
阅读全文
摘要:其实这题是水题,DP随便搞一下就能求,但是第一次写母函数,所以找了道水题做好理解些~_~#include #include #include #include #include #include #include #include #include #include #include #includ...
阅读全文
摘要:非常水的树DP,状态为当前为i,上级来没来然后跑一遍记忆化搜索即可#include #include #include #include #include #include #include #include #include #include #include #include #include ...
阅读全文
摘要:和上次那道CF的差不多,都是要开一个数组来记录已经填了哪些数字,最后再判断符不符合要求。状态设计也差不多,记录当前位置和长度。#include #include #include #include #include #include #include #include #include #inclu...
阅读全文
摘要:这题做了有好几天了,终于过了= =完全不懂网上题解的递推写法,只能自己用记忆化搜索瞎搞,总算是搞出来了。具体策略就是记忆化搜索的时候用一个tmp数组记录最前面len个的值,然后后面的数字必须要和前len相同。但是麻烦的是这样子会有重复,想了一个很挫的写法就是枚举算出恰好长度为ll并且循环节长度为l的...
阅读全文
摘要:E. Inna and Binary Logic显然对于一次更新应该一位一位的来,对于第k位的改变,通过找规律可以发现,被更新的数字数量为(k前面有多少个连续的1 + 1) * (k后面有多少个连续的1 + 1) ,找到这个规律时候,直接开线段树或者用set维护连续是1的区间就好了。这里我是用set...
阅读全文
摘要:水题,随便统计一下就好#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;ty...
阅读全文
摘要:题意大概是,判断一个正整数区间内有多少个整数能被它自身的每一个非零的数字整除。因为每一个位置上的整数集s = {0,1,2,3,4,5,6,7,8,9} lcm(s) = 2520现在有一个整数t是由s中一个或者多个数字构成的,记为abcde,显然t = a*10^4+b*10^3+c*10^2+d...
阅读全文
摘要:由LIS的nlogn解法 可以得出最后统计数组中数的个数即为LIS的长度 这样就可以状压了#include #include #include #include #include #include #include #include #include #include #include #inclu...
阅读全文
摘要:一开始想了一个用二进制状压的方法,发现空间需要的太大,光光memset都要超时 = = 其实不用每次都memset也可以用三进制,一开始直接打表出所有的状态转移就好#include #include #include #include #include #include #include #incl...
阅读全文
摘要:因为连续异或满足区间减法性质,所以可以状压之后用异或来判断是否为符合条件的单词并且存储次数一开始用map,一直超时。虽然直接用开1#include #include #include #include #include #include #include #include #include #inc...
阅读全文
摘要:前面先用数位DP预处理,然后暴力计算组合方式即可。#include #include #include #include #include #include #include #include #include #include #include #include #include using na...
阅读全文
摘要:这个不是求的数量,而是求平方和,所以记忆化的时候不能像以前那样无脑的来。先来看简单的情况,如果是求和,应该怎么搞。假如我现在搜索到第3位,一共有5位,情况应该是这样的XXiXX,注意后面的X和前面的X都是不确定的,转移的时候应该是i * 10^(5-3) * (能满足的条件的数的数量) + sigm...
阅读全文
摘要:枚举支点之后数位DP,注意姿势#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace st...
阅读全文
摘要:注意处理数字只有一位的情况(其实不用怎么处理)= =简单数位DP#include #include #include #include #include #include #include #include #include #include #include #include #include u...
阅读全文
摘要:很裸,注意状态的记录和存储#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;...
阅读全文
摘要:据说又是一道组合数学题,数学不好的我只想出的DP写法注意如果输入不合法要输出0#include #include #include #include #include #include #include #include #include #include #include #include #in...
阅读全文
摘要:注意只有高位放了1之后才能开始统计#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace ...
阅读全文
摘要:注意n=1的情况#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typed...
阅读全文
摘要:唔,图论部分暂时就看到这里了,整理一下最近学的东西//最短路//dijkstravoid dijkstra() { memset(vis,0,sizeof(vis)); for(int i = 1;i maxv) { maxv = d[x = i]; ...
阅读全文
摘要:最小路径覆盖 = 顶点数 - 最大匹配#include #include #include #include #include #include #include #include #include #include #include #include #include using namespac...
阅读全文

浙公网安备 33010602011771号