
ACM
文章平均质量分 80
_anlin
这个作者很懒,什么都没留下…
展开
-
关路灯(区间DP)
描述Dr.Kong设计的机器人卡多越来越聪明。最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关掉ZK大道右侧上所有的路灯。卡多每到早晨5:00准会在ZK大道上某盏路灯的旁边,然后他开始关灯。每盏灯都有一定的功率,机器人卡多有着自觉的节能意识,它希望在关灯期间,ZK大道右侧上所有路灯的耗电量总数是最少的。机器人卡多以1m/s的速度行走。假设关灯动作不需要花费额外的原创 2016-07-24 19:44:41 · 1105 阅读 · 0 评论 -
HDU5208 Where is Bob(数位DP,dfs)
题意:Alice和JSL正在玩一个游戏(Bob呢?)。Alice从[l1,r1][{l}_{1},{r}_{1}][l1,r1]中选出一个数字xxx,JSL看到这个数字之后从[l2,r2][{l}_{2},{r}_{2}][l2,r2]中取出一个数字yyy(yyy可能和xxx相同)。最后他们计算出数字z=x⊕yz=x\oplus yz=x⊕y(⊕\oplus⊕为异或运原创 2017-07-04 14:47:08 · 422 阅读 · 0 评论 -
poj2155 Matrix 二维树状数组
题意:一个01矩阵,进行两种操作,一种是对一个子矩阵的数字进行反转,0变1,1变0。还有一种是查询一个数字。这里涉及频繁的区间修改和查询,可以考虑使用树状数组。因为是一个矩阵,所以要拓展到二维。是区间修改和单点查询所以使用向下修改,向上统计。重点在于二维树状数组的add和getsum怎么写。然后是因为getsum得到的都是从原点到对应点的一个矩阵的和,所以要得到一个子矩原创 2017-06-26 14:37:33 · 286 阅读 · 0 评论 -
数位DP
原博客地址:http://blog.youkuaiyun.com/wust_zzwh/article/details/52100392#comments基础篇数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦!之转载 2017-07-19 15:47:27 · 303 阅读 · 0 评论 -
博弈SG函数
题意: 一个棋盘有n行,每行20格子,都有一些棋子,两个人轮流进行这个操作:选择某一行一个棋子移动到该行右边第一个空的格子。不能进行的人输。问先手是否能赢。分析: SG函数的应用,当时自己做的时候没做出来QAQ。终结点是这一行没有棋子可以走,即0,然后逆推出其他结点的SG函数。每一行的状态看成是一个结点,然后把状态二进制压缩,1表示有棋子,0表示空格。#includ原创 2016-07-21 20:44:46 · 348 阅读 · 0 评论 -
分治法求最近点对
先说下题意,很简单,给n个点的坐标,求距离最近的一对点之间距离的一半。第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标,实数。 这个题目其实就是求最近点对的距离。《算法导论》上有详细讲解,王晓东的书上也有代码。主要思想就是分治。先把n个点按x坐标排序,然后求左边n/2个和右边n/2个的最近距离,最后合并。合并要重点说一下,比较麻烦。 首先,假设点是n个,转载 2015-09-02 19:13:26 · 2362 阅读 · 0 评论 -
GCD (ST表,二分求区间查询)
HUD 5726 GCD 给一个序列,多次查询区间的最大公约数,并求出同样是这个最大公约数的区间有多少个。区间查询采用ST表,第二问查询利用区间向右延伸最大公约数递减的规律可通过二分快速找到右边界。把第一问的答案先求出来,表示要查询的公约数加入map。然后枚举左端点二分右端点,把已经从存在map的值加上找到的区间数,不存在的就不用管了。#include#inclu原创 2016-07-22 20:30:27 · 2108 阅读 · 0 评论 -
ACM找BUG(特例)个人心得
1.去掉前导0的时候,注意答案就是0的情况原创 2017-02-24 17:05:10 · 499 阅读 · 0 评论 -
最长公共上升子序列LCIS
http://blog.youkuaiyun.com/wall_f/article/details/8279733原创 2017-07-24 16:04:32 · 222 阅读 · 0 评论 -
骨牌覆盖(轮廓线DP)
#include#include#include#include#include#define LL long long intLL dp[2][1 int main(){int n, m;while (scanf("%d %d", &n, &m) != EOF){if (!(n | m))break;if ((n &原创 2016-07-23 20:17:24 · 1593 阅读 · 0 评论 -
CSU 1969 TFSudoku 特殊数独
题目:DescriptionAt some point or another, most computer science students have written a standard Sudoku solving program. A slight twist has been added to standard Sudoku to make it a bit more ch原创 2017-07-26 19:16:47 · 590 阅读 · 0 评论 -
bigint
#include #include #include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3f#define MS(x,y) memset(x, y, sizeof(x))#define MOD 1000000007#de原创 2017-08-04 13:58:06 · 400 阅读 · 0 评论 -
线段树
用数组实现线段树 ,当前节点为 now,左儿子是now*2右儿子是now*2+1,父节点now/2.注意线段树的数组大小,用 最大子叶个数的4倍。左儿子为父节点的前半个区间,右儿子 为父节点的后半个区间。#include #include #include #include #include#include #define MOD 1原创 2016-07-30 16:16:00 · 282 阅读 · 0 评论 -
POJ1952 BUY LOW, BUY LOWER(DP,最长下降子序列不重复计数)
BUY LOW, BUY LOWERTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 10466 Accepted: 3657DescriptionThe advice to "buy low" is half the formula to success原创 2017-08-19 15:49:47 · 250 阅读 · 0 评论 -
高斯消元1(解方程)
小Ho:小Hi:小Ho,你还吃呢。想好了么?小Ho:肿抢着呢(正想着呢)......我记得这个问题上课有提到过,应该是一元一次方程组吧。我们把每一件商品的价格看作是x[1]..x[n],第i个组合中第j件商品数量记为a[i][j],其价格记作y[i],则可以列出方程式:a[1][1] * x[1] + a[1][2] * x[2] + ... + a[1][n] * x原创 2016-08-06 19:19:16 · 343 阅读 · 0 评论 -
整数划分DP
整数划分 --- 一个老生长谈的问题: 1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3. 将n划分成最大数不超过k的划分数。 4. 将n划分成若干奇正整数之和的划分数。 5. 将n划分成若转载 2016-07-27 20:33:04 · 926 阅读 · 0 评论 -
动态规划总汇(转载)
原博客地址: http://blog.youkuaiyun.com/cc_again/article/details/25866971动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度动态规划(英语:Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分转载 2017-07-10 15:16:00 · 331 阅读 · 0 评论 -
树状数组
转载两篇好文章收藏在topcoder的网站上了解到树状数组这个结构是在设计压缩算法时被发现的。这个数据结构真是天才的构想,膜拜!树状数组的基础是一个被构造出来的式子:C[i]=A[i]+A[i-1]+....+A[i-2^k+1];k代表i的二进制的最后连续0的个数 比如 对于1000和101000,k=3。至于这个式子是怎么被构造出来的,k为什么要代表这个。因为二进制转载 2017-06-20 17:04:23 · 266 阅读 · 0 评论 -
士兵杀敌(4,5)(区间修改、查询)
士兵杀敌(四)时间限制:2000 ms | 内存限制:65535 KB难度:5描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情,军师小工的任务就是在南将军询原创 2017-02-23 18:43:23 · 420 阅读 · 0 评论 -
RMQ 区间查询
1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。2.RMQ算法对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大转载 2016-03-12 12:38:05 · 270 阅读 · 0 评论 -
逆序对问题(归并)
#include #include #include #include #include using namespace std;int z[40005];int az[40005];//辅助空间int fun(int l, int r){ int sum = 0; if (r - l <= 1) { if (z[l] > z[r]) { az[l] =原创 2015-09-10 14:30:49 · 522 阅读 · 0 评论 -
导弹拦截(最长单调子序列二分优化)(Dilworth偏序对定理)
如何用O(nlogn)的的速度求解最长上升(下降)子序列打导弹解题有感求一个序列的最长上升子序列,可以用贪心的思想来做。例:389 207 155 300 299 170 158 65要求它的最长递减子序列,具体步骤如下:389389 207389 207 155389 300 155 //207被300替换了,207是三个数中刚好小于300的数,207原创 2015-09-12 16:35:33 · 2001 阅读 · 0 评论 -
线段树3(离散化,连续区间)
题目是依次按给定的范围贴海报,问覆盖到最后还能看到几张海报。因为给定的贴海报的板子总长度为10^9,数组开不下。但是考虑到海报只有10^5张,而整个问题其实课忽略板子长度,只需要考虑每张海报之间的覆盖关系就可以了,也就是说(1,1000008)(3,9990)(10,20000000)这三个区间的覆盖情况完全可化成(1,5)(2,4)(3,6),也就是只需要把出现的所有位置进行 排序,把数原创 2016-07-31 11:54:44 · 467 阅读 · 0 评论 -
棋盘覆盖2(1X2骨牌 和 L型骨牌 混合铺满)(强行轮廓线DP)
NYOJ435【题意】用1*2或者L型的地板铺满n*m的地面一共有多少中方案因为多了L型骨牌,轮廓线需要判断左上方的填充情况,所以轮廓线的状态要加一位,最高位表示左上方,次高位表示上方,最低位表示左方。状态的转移也复杂些,之前是上方有空就必填,否则没机会填了,现在因为可以填充到左上方的格子,所以上方有空也可以考虑不填,但是当当前位置是每排的最后一个时上方的格子不填就没机会 填了,所原创 2016-08-17 18:36:56 · 1264 阅读 · 0 评论 -
Manacher算法(最长回文串)
首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做回文串问题中时比较烦的地方。这个算法还有一个很好的地方就是充分利用了字符匹配的特殊性,避免了大量不必要的重复匹配转载 2016-08-07 18:56:41 · 447 阅读 · 0 评论 -
NYOJ 1030 Yougth's Game[Ⅲ](博弈加DP)
描述有一个长度为n的整数序列,A和B轮流取数,A先取,每次可以从左端或者右端取一个数,所有数都被取完时游戏结束,然后统计每个人取走的所有数字之和作为得分,两人的策略都是使自己的得分尽可能高,并且都足够聪明,求A的得分减去B的得分的结果。输入输入包括多组数据,每组数据第一行为正整数n(1输出对于每组数据,输出A和B都采取最优策略的情况下,A的得分减去B的得分的结果。原创 2016-09-01 21:27:33 · 313 阅读 · 0 评论 -
HDU2222 多串匹配 (AC自动机)
AC自动机简介: 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有字典树Trie和KMP模式匹配算法的基础知识。KMP算法是单模式串的字符匹配算法,AC自动机是多模式串的字符匹配算转载 2016-08-24 20:11:28 · 774 阅读 · 0 评论 -
凸包(旋转卡壳求最远点)
计算几何之凸包(一) {卷包裹算法}http://www.cnblogs.com/Booble/archive/2011/02/28/1967179.html#3229390计算几何之凸包(二) {更高效的算法}http://www.cnblogs.com/Booble/archive/2011/03/10/1980089.html计算几何之凸包(三) {旋转卡转载 2015-09-03 19:09:13 · 448 阅读 · 0 评论 -
骨牌覆盖去除切割线的情况(DP+容斥原理)
题目要求给出N*M的矩阵,用1*2和2*1的骨牌覆盖,不出现切割线的情况有多少。这题可以先用轮廓线DP求出任意矩阵一共有多少种放法,预处理出任意矩形大小的方案数 RES[i][j] 不过我怀疑这部分不提前打表的过不了第二部分是一个容斥 先对列容斥,用状压的方式枚举出所有列的分割情况 然后计算,当前列分割情况下,行没有分割的方案数 dp[n] 然后再用容斥,奇原创 2016-07-24 13:05:08 · 370 阅读 · 0 评论 -
最长公共子序列装换成最长递增子序列
题目大意:给你两串整数,要求你输出最长公共子序列(串的长度是100000.)时间限制:1000 ms | 内存限制:65535 KB所以无论是时间上还是空间上这都是需要进行比较精心的优化过后才行。这题我做了老半天然后各种优化最终都没成功,都是超时了,然后dp数组还开不到100000*100000;而且这题网上的代码页找不到,最后只能求助大师了,看完大师的代码后才恍然大悟,只转载 2016-08-25 16:13:46 · 293 阅读 · 0 评论 -
NYOJ 742 (多段子串和)
题目:给你一个序列 S1, S2, S3, S4 ... Sx, ... Sn (1 ≤ x ≤ n ≤ 1,000,000, -32768 ≤ Sx ≤ 32767). 我们定义sum(i, j) = Si + ... + Sj (1 ≤ i ≤ j ≤ n).现在给你一个 m(8>m>0&&msum(i1, j1) + sum(i2, j2) + sum(i3, j3) + ... +原创 2016-08-26 16:08:27 · 498 阅读 · 0 评论 -
线段树2(区间修改,lazy)
每次对于修改的不是一个数而是一个区间的情况我们可以采用lazy的方法来偷懒,达到减少操作步骤的效果。具体思路是当要修改某个区间 时,和查找的方法一样先找在线段树中对应 到要修改的几个小区间,然后修个这些区间节点的值,但不同的是先不再对下面细分的区间进行修改。我们偷懒的原则是后面不访问的就暂时不修改,等到要访问的时候再随便把lazy下放到子区间,并把当前的lazy标记 消除。#i原创 2016-07-30 17:41:26 · 436 阅读 · 0 评论 -
博弈汇总
博弈知识汇总有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜转载 2016-11-11 11:28:28 · 298 阅读 · 0 评论 -
KMP算法
KMP 算法,俗称“看毛片”算法,是字符串匹配中的很强大的一个算法,不过,对于初学者来说,要弄懂它确实不易。整个寒假,因为家里没有网,为了理解这个算法,那可是花了九牛二虎之力!不过,现在我基本上对这个算法理解算是比较透彻了!特写此文与大家分享分享!我个人总结了, KMP 算法之所以难懂,很大一部分原因是很多实现的方法在一些细节的差异。怎么说呢,举我寒假学习的例子吧,我是看了一种方法后,似懂转载 2016-07-30 12:37:16 · 722 阅读 · 0 评论 -
表达式计算
表达式求值时间限制:3000 ms | 内存限制:65535 KB难度:4描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)输入第一行输入一个整数n,共有n组测试数据(n每组测试数据原创 2017-02-23 17:04:58 · 311 阅读 · 0 评论 -
BK树
除了字符串匹配、查找回文串、查找重复子串等经典问题以外,日常生活中我们还会遇到其它一些怪异的字符串问题。比如,有时我们需要知道给定的两个字 符串“有多像”,换句话说两个字符串的相似度是多少。1965年,俄国科学家VladimirLevenshtein给字符串相似度做出了一个明确的定义 叫做Levenshtein距离,我们通常叫它“编辑距离”。字符串A到B的编辑距离是指,只用插入、删除和替换三种操作...转载 2018-07-16 17:14:59 · 555 阅读 · 0 评论