自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kalilili的专栏

岁月如歌

  • 博客(68)
  • 收藏
  • 关注

转载 3xian教主的警世良言兼退役贴

最后一天,漫天飘起了雪花,假装欢送我离去。这次WF之战不太顺利,早期的C题大概花了1秒钟构思,然而由于输出格式多了一个空格直到两个半小时才逃脱Wrong Answer的纠缠。还好lynncui在期间独挡一面过掉D。最终成绩不好,然而没有遗憾,从不遗憾。相比之下,来自全球的队伍让我看到了很强大的实力,每一道题都有人过,包括SJTU欺骗性提交的H都被人干掉了。身为地球人我感到自豪。

2015-03-30 17:11:53 1131

原创 POJ 3415 Common Substrings(长度不小于k 的公共子串的个数--后缀数组+单调栈优化)

题意:给定两个字符串A 和B,求长度不小于k 的公共子串的个数(可以相同)。样例1:A=“xx”,B=“xx”,k=1,长度不小于k 的公共子串的个数是5。样例2:A =“aababaa”,B =“abaabaa”,k=2,长度不小于k 的公共子串的个数是22。思路:如果i后缀与j后缀的LCP长度为L, 在L不小于K的情况下, 它对答案的贡献为L - K + 1. 于是

2015-03-31 22:15:29 766

原创 POJ-2442 Sequence (K路归并问题拓展)

题意:有n行含m个元素序列,从每行取一个数得到他们的和,一共可以得到m^n个和。输出前n个最小的和。思路:可以用优先队列递归解决,当只取前两行的数,得到两个数的和的前n小的序列。这个序列就相当于把第一行和第二行合并,再解决n-1行的子问题。用优先队列解决的时候也有点小技巧,类似尺取法。//236 KB 563 ms C++ 1480 B #include#include#incl

2015-03-30 11:05:34 627

原创 POJ 3254 Corn Fields (状压DP)

题意:一个n*m的矩阵,每个格子是0或者1,1表示土壤肥沃可以种植草地,0则不可以。在种草地的格子可以放牛,但边相邻的两个格子不允许同时放牛,问总共有多少种放牛的方法?(不放牛也算一种情况)思路:就是POJ 1185 炮兵阵地 的弱化版,炮兵那题相当于间隔两行,这里是间隔一行,减少一维坐标就可//192 KB 32 ms C++ 1221 B #include#incl

2015-03-29 22:00:24 664

原创 POJ 3311-Hie with the Pie(floyd+TSP 状压DP)

题意:一个送外卖的人,要将外卖全部送去所有地点再回到店离,求最短路。(可以重复经过边)思路:由于可重复走某些边,所以先求各个点的最短路,再TSPdp[i][s] 表示目前在i点还需要遍历s集合后回到0点的最短路径边界条件就是dp[i][0]=dis[i][0]//196 KB 0 ms C++ 1190 B #include#include#include#include

2015-03-29 21:00:03 756

原创 POJ 1185 炮兵阵地 (状态DP--经典题)

本题的难度给跪了,完全不是自己的能力范围内,看了别人的解题报告才写的摘自http://blog.csdn.net/woshi250hua/article/details/7736045题目大意:给定一张n*m的地图,地图上有平原p,有山地h,可以在平原p打炮,俗称野战,打炮方向有四个,上下左右,射程是2,要求两个炮不能相互打到,问符合这个要求的情况最多打几个炮?n 解题思路:经

2015-03-29 09:26:30 726

原创 CodeForces 525D Arthur and Walls(DIV2 D) (DFS+YY)

D. Arthur and Wallstime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputFinally it is a day when Arthur has eno

2015-03-29 09:14:47 781

原创 POJ 1463 Strategic game(树形DP-树上的点集覆盖模型)

题意:一城堡的所有的道路形成一个n个节点的树,如果在一个节点上放上一个士兵,那么和这个节点相连的边就会被看守住,问把所有边看守住最少需要放多少士兵。思路:和最大独立集的思路差不多,转移方程差不多,用0,1表示子树的根放不放士兵    dp[root][0] += dp[son][1];     dp[root][1] += min(dp[son][1],dp[son][

2015-03-29 09:06:12 917

原创 HDU 1520 Anniversary party(树形DP-最大独立集)

大意:很多领导,能形成一个树形关系网,这些领导参加一个party,每个人都有一个能使party活跃的值,但是每个人又不喜欢跟自己的直接领导同时参加party。为使party气氛最好,求最好气氛值。思路:法一:对子树的根按两种决策找到状态方程,然后用刷表法法二:细化状态,dp[i][0],dp[i][1] 分别表示不选i时的最大集和选了i时的最大集法二的方法更实用,状态细化后更便于找

2015-03-29 09:01:28 922

原创 POJ 2486-Apple Tree(树形DP)(难)

题意:一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走V步,最多能遍历到的权值思路:(思路转自http://blog.csdn.net/libin56842/article/details/10101807)树形dp,比较经典的一个树形dp。首先很容易就可以想到用dp[root][k]表示以root为根的子树中最多走k时所能获得的最多苹果数,接下去我们很习惯

2015-03-29 08:48:22 1442

原创 UVA 1252 - Twenty Questions(状态压缩DP+记忆化搜索)

题意:01特征串组成的物品,现在你可以询问一个位置的特征,对于每个东西如果为1回答YES,如果为0回答NO。那么如果你当前无法区分开每个东西,就可以继续问一个特征,现在要求最坏情况下,你需要询问几次的最少次数。思路:枚举询问的位置的所有可能,也就是枚举(1#include#include#include#includeusing namespace std;int m,n;in

2015-03-26 20:57:19 664

原创 HDU 4749 Parade Show(KMP变形)

题意:有一个文本数列,问可以匹配多少个模式数列(不允许重叠),但这里的“匹配”是这样定义:满足大小关系即可,比如(2,4,4,1)和(33,57,57,2)匹配思路:明显可以把文本数列和模式数列处理一下,用i与i+1的关系差值代替再KMP即可,KMP的时候由于不能重叠,所以匹配成功以后,文本串要向后移一位再接着匹配即可#include#include#include#includ

2015-03-26 13:00:38 994

原创 POJ 2063 Investment(完全背包--容量变化)

题目大意:给你一笔金额,你要将这比金额去投资,现在有t种股票,每种股票都有一个价值和年收益,问你如何投资在n年后的最大收益思路:由于获益后的钱加上本金可以再来投资,所以背包容量变化,这点还是不难的,主要本题给了一个信息:股票的价值都是1000的倍数,所以后面可以空间优化,对每个价值除以1000对背包容量优化#include#include#include#includeusing

2015-03-26 11:09:39 1110

原创 POJ 3260 The Fewest Coins(混合背包+鸽巢原理)

题意:有某些硬币,已知某人分别有这些硬币数ci,卖家有这些硬币无限数量,已知待买的商品价格,求这个人所花的硬币数加上找零的硬币数的和最少是多少思路:不难看出一个多重背包和完全背包即可主要难点在于那个人应该出多少钱?出钱的上界是什么,一开始我以为只要出了超过最大面额的钱就可以了,结果wa后意识到错了但也没想到如何确定上界的方法。看了别人的博客学到:出钱的上界不会超过最大面额(mmax)的

2015-03-26 11:03:56 1198

原创 UVA10817 Headmaster's Headache 状态压缩的01背包

题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1758题目意思:某校有n个教师和m个求职者。已知每人的工资和能教授的课程集合,要求支付最少的工资使得每门课都至少有两名教师教学。在职教师必须招聘思路:

2015-03-26 09:52:11 792

原创 FZOJ 2188 过河I (确定状态+BFS)

Problem 2188 过河IAccept: 27    Submit: 82Time Limit: 3000 mSec    Memory Limit : 32768 KB Problem Description一天,小明需要把x只羊和y只狼运输到河对面。船可以容纳n只动物和小明。每次小明划船时,都必须至少有一只动物来陪他,不然他会感到厌倦,不安。不论是船上还是

2015-03-23 23:02:31 1016

原创 FZOJ 2185 树的路径覆盖(YY+DFS)

Problem 2185 树的路径覆盖Accept: 37    Submit: 118Time Limit: 2000 mSec    Memory Limit : 32768 KB Problem Description給一棵树, 用最少的路径去覆盖所有的边, 求(1)允许边被重复覆盖, (2)不允许边被重复覆盖. Input第一行是组数

2015-03-23 22:59:01 847

原创 FZOJ Problem 2183 简单题

Problem 2183 简单题 Accept: 64    Submit: 289Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description现在有一些被简单压缩的字符串,例如:a[120]代表120个a。对于字符串acb[3]d[5]e相对于acbbbddddde现在给你两个字符串c

2015-03-23 22:53:11 676

原创 POJ 3693 Maximum repetition substring (后缀数组+RMQ 求重复最多的连续子串)

给定一个字符串,求重复次数最多的连续重复子串。先穷举长度L,然后求长度为L 的子串最多能连续出现几次。首先连续出现1 次是肯定可以的,所以这里只考虑至少2 次的情况。假设在原字符串中连续出现2 次,记这个子字符串为S,那么S 肯定包括了字符r[0], r[L], r[L*2],r[L*3], ……中的某相邻的两个。所以只须看字符r[L*i]和r[L*(i+1)]往前和往后各能匹配到多远

2015-03-23 22:48:44 505

原创 kuangbin OJ 1217-- Operations on Grids(YY)(好题)

1217: Operations on GridsTime Limit: 2 Sec  Memory Limit: 128 MBSubmit: 89  Solved: 20[Submit][Status][Web Board]Description你有一个 9 位数字串,现在你把这个数字的每一位填到 3 × 3 格子上。如果数 字是 12

2015-03-21 23:07:14 654

原创 binshenOJ 1215-I Wanna Be A Palindrome (YY)

1215: I Wanna Be A Palindrome时间限制: 2 Sec  内存限制: 128 MB提交: 148  解决: 22[提交][状态][讨论版]题目描述给出一个字符串,仅由小写字母组成。请找出是否仅删除其中的一个字母之后, 字符串变成回文串。输入输入第一行是一个整数 T,表示有 T 组数据。 每组数据占

2015-03-21 21:59:29 897

原创 ZOJ 3785 What day is that day?(打表找周期)

题意:It's Saturday today, what day is it after 11 + 22 + 33 + ... +NN days? InputThere are multiple test cases. The first line of input contains an integer T indicating the number of test ca

2015-03-21 13:53:03 969

原创 HDU 4923 Room and Moor(数学+YY)(好题)

题意:给定一个长度为n的,由0和1组成的序列ai,求一个序列bi,使得∑(bi-ai)^2最小。其中0思路:显然开头为0的的部分和结尾为1的部分不用考虑然后把其他序列划分成多个11111000形式的区域(这步也需要YY),每个区域分别求出bi(因地制宜的YY2333),求bi是二次函数的对称轴,如果bi不满足递增要求,比如bi-1>bi,所以如果不改变bi-1,bi至少要增

2015-03-21 10:55:04 711

原创 HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包 水)

Input输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(1分别表示经费的金额和大米的种类,然后是m行数据,每行包含3个数p,h和c(1Output对于每组测试数据,请输出能够购买大米的最多重量,你可以假设经费买不光所有的大米,并且经费你可以不用完。每个实例的输出占一行。Sample Input 18 22

2015-03-19 22:55:10 934

原创 POJ 2046 Power Strings(连续重复串重复次数--后缀数组)

连续重复串:如果一个字符串L 是由某个字符串S 重复R 次而得到的,则称L 是一个连续重复串。R 是这个字符串的重复次数。题意:求连续重复串的最大重复次数R思路:当然可以用kmp。用后缀数组的话,穷举字符串S 的长度k,然后判断是否满足。判断的时候,先看字符串L 的长度能否被k 整除,再看suffix(0) suffix(k)的最长公共前缀是否等于n-k。在询问最长公共前缀

2015-03-19 22:00:29 842

原创 URAL 1297. Palindrome(输出最长回文子串--后缀数组)

InputThe input consists of a single line, which contains a string of Latin alphabet letters (no other characters will appear in the string). String length will not exceed 1000 characters.Outpu

2015-03-19 19:59:28 655

原创 URAL 1614. National Project “Trams” (图论大YY)

1614. National Project “Trams”Time limit: 0.5 secondMemory limit: 64 MBPresident has declared the development of tram service a priority national project. As a part of this project, Yeka

2015-03-19 16:45:13 728

原创 SPOJ 694. Distinct Substrings (不相同的子串的个数--后缀数组)

题意:给定一个字符串,求不相同的子串的个数。思路:子串的总个数是n*(n+1)/2现在用height数组解决所以把子串的个数看成是以i字符串开头的子串的个数的和,那么总个数减去sum(height[i]),即是答案因为height[i]是sa[i]与sa[i-1]后缀的相同前缀的长度,那么以前面那种计算子串的方式,也就是重复了height[i]个子串//Distinct Subst

2015-03-18 19:57:41 632

原创 Codeforces Round #296 Dvi2 D. Clique Problem (数学的大YY)

D. Clique Problemtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe clique problem is one of the most wel

2015-03-18 18:22:02 863

原创 Codeforces Round #296 (Div. 2) C - Glass Carving(STL运用)

C. Glass Carvingtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLeonid wants to become a glass carver (the

2015-03-18 18:17:00 839

原创 POJ 3261 Milk Patterns (离散化+后缀数组 k次最长重复子串(可重叠))

题意:给定一个字符串,求至少出现k 次的最长重复子串,这k 个子串可以重叠。思路:仍是二分出长度再以长度把height数组分类,再判是否存在k次因为只有20000个数,但是数的范围是1000000 所以先离散化后基数排序效率将大大提高。//Accepted 860K 47MS#include#include#include#includeusing namespace std

2015-03-17 22:09:15 551

原创 POJ 1743 Musical Theme (后缀数组,求最长不重叠重复子串)

题意:有N(1 “主题”是整个音符序列的一个子串,它需要满足如下条件:1.长度至少为5个音符2.在乐曲中重复出现(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值。)3.重复出现的同一主题不能有公共部分。思路:是要求最长不重叠重复的子串,如果没有不重叠的限制条件,那么height中的最大值即可现在对于这题需要二分出答案,二分出最长重复子串

2015-03-17 20:22:50 744

原创 POJ 2774 Long Long Message(最长公共子串 -初学后缀数组)

后缀数组的两篇神论文:国家集训队2004论文集 许智磊算法合集之《后缀数组——处理字符串的有力工具》很多人的模版都是用论文上的包括kuangbin的模版:(DA算法)模版中比较难理解的地方有两点1.按关键词排序 2.把字符串长度增加一位按关键词排序的意思其实是基数排序中相当把两位数排序时先排个位,再排十位这里也一样先排后2^k

2015-03-17 16:14:13 772

原创 POJ 2449 Remmarguts' Date(A* - 第K短路)

题意:找第K短路的值思路:A*,bfs找K短路的时候加上估计函数(距离下界),而且要满足:cost(u,v)+h*(u)-h*(v)>=0因为这是bfs'需要的下界函数,不是任何下界都可以,不像IDA*,这里的下界必须让每个bfs的节点保持原样的大小关系而IDDFA中的A*下界函数就不需要这个性质了,只要是下界即可。显然这个具体问题的天然的估计函数就是从此点到目标点的最短路。#

2015-03-16 23:41:37 629

原创 POJ 3134 - Power Calculus (IDDFS)

题意:求只用乘法和除法最快多少步可以求到x^n思路:迭代加深搜索//Accepted 164K 1094MS C++ 840Binclude#include#include#includeusing namespace std;int step[100005];int n;int cur;bool IDDFS(int lim,int g){ if(cur>li

2015-03-15 21:27:20 772

原创 POJ 2676/2918 数独(dfs)

思路:记录每行每列每个宫已经出现的数字即可,数据比较弱另外POJ 3074 3076 必须用剪枝策略,但实现较麻烦,还是以后学了DLX再来做吧//Accepted 160K 0MS #include#include#include#includeusing namespace std;const int N =15;char sudo[N][N];bool visr[N][

2015-03-15 14:55:45 781

原创 POJ 1849 Two(树的直径--树形DP)(好题)

大致题意:在某个点派出两个点去遍历所有的边,花费为边的权值,求最少的花费思路:这题关键好在这个模型和最长路模型之间的转换,可以转换得到,所有边遍历了两遍的总花费减去最长路的花费就是本题的答案,要思考,而且答案和派出时的起点无关求最长路两遍dfs或bfs即可,从任意点bfs一遍找到最长路的一个终点,再从这个终点bfs找到起点//1032K 79MS C++ 1455B #include

2015-03-15 10:55:09 1217

原创 POJ 1655 Balancing Act(求树的重心--树形DP)

题意:求树的重心的编号以及重心删除后得到的最大子树的节点个数size,如果size相同就选取编号最小的.思路:随便选一个点把无根图转化成有根图,dfs一遍即可dp出答案//1348K 125MS C++ 1127B#include#include#include#include#includeusing namespace std;int n;const int N= 20

2015-03-15 09:19:40 840

原创 HDU 1272 小希的迷宫(并查集)

题意:判一个无向图无环且处处连通思路:并查集,trap 可能直接输入0 0而且....合并的时候按某一个方向会爆栈,爆了好几次...下次考虑一下直接递归找祖先吧#include#include#include#includeusing namespace std;const int N =1e5+1e2;int fa[N];int getf(int x){ re

2015-03-15 00:39:01 636

原创 HDU 3635 Dragon Balls(并查集--路径压缩拓展应用)

题目大意:初始时,有n个龙珠,编号从1到n,分别对应的放在编号从1到n的城市中。现在又2种操作:T A B,表示把A球所在城市全部的龙珠全部转移到B城市。(第一次时,因为A球所在的城市只有一个球,所以只移动1个,如果有多个,则全部移动)。Q A,表示查询A。要求得到的信息分别是:A现在所在的城市,A所在城市的龙珠数目,A转移到该城市移动的次数(如果没有移动就输出0)思路:并

2015-03-14 23:12:08 604

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除