自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丿聪丶

每发一篇文章,就意味着我向成功更近了一步!

  • 博客(189)
  • 资源 (1)
  • 收藏
  • 关注

转载 hdu 1568 求斐波数的前四位

hdu 1568 (log取对数 / Fib数通项公式) 2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。 接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长

2013-05-07 18:09:46 786

原创 tarjan

struct edge {        int v , nex;   }e[maxm]; int k ,head[maxn]; void addedge(inta,int b) {        e[k].v = b;        e[k].nex = head[a];        head[a] = k++;   }//链式前向星 int dfn[maxn]

2013-04-26 15:05:02 699

原创 欧拉回路与欧拉路

对无向图:   定义:给定无孤立结点图G,若存在一条路,经过图中每条边一次且仅仅一次,该条路称欧拉路,若存在一条回路,经过图中每边一次且仅仅一次,该回路称为欧拉回路。具有欧拉回路的图称为欧拉图,不是柏拉图。 定理:无向图G具有一条欧拉路,当且仅当G是连通的,且有0个或者是两个奇数度得结点。 推论:无向图G具有一条欧拉回路,当且仅当G是连通的,并且所有结点的度数均为偶数。 一

2013-03-30 18:40:44 618

原创 hdu 3018 一笔画问题

题意:给出一个图,求至少画几次可以把每一条边都遍历一次。 思路:找连通块,如果该连通块中存在奇数度的点,那么笔数为奇数度的点 / 2 ,如果该连通块中没有奇数度的点,那么一笔可以画出,也就是存在欧拉回路。 #include #include #include using namespace std; const int maxn = 100010; int father[maxn] , vis

2013-03-29 20:50:01 670

转载 图论基本知识点

转载于:http://blog.csdn.net/niushuai666/article/details/6750516 1.图的定义 由若干个不同顶点与连接其中某些顶点的边所组成的图形就称为图。(顶点的位置以及边的曲直都是无关紧要的,而且也是没有假定这些顶点和边都要在一个平面内,只关心顶点的多少和这些变是连接哪些顶点的),通常用大写字母G表示图,V表示所有顶点的集合,E表示边的集合,记作G

2013-03-26 21:11:07 691

转载 二分注意边界问题

我之前写过两篇关于二分查找算法的文章,这篇算是一个小结.我给这份文档整理了一份pdf格式的文档,可以在这里下载. 二分查找算法学习札记 说明 作者:那谁 blog: http://www.cppblog.com/converse 转载请注明出处. 二分查找算法基本思想 二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),

2013-03-23 20:07:02 978

转载 最长公共子序列

http://blog.csdn.net/yysdsyl/article/details/4226630

2013-03-23 11:39:06 724

转载 最长上升子序列

转载于:http://blog.csdn.net/wangkechuang/article/details/7949151 最长上升子序列问题是各类信息学竞赛中的常见题型,也常常用来做介绍动态规划算法的引例,笔者接下来将会对POJ上出现过的这类题目做一个总结,并介绍解决LIS问题的两个常用 算法(n^2)和(nlogn). 问题描述:给出一个序列a1,a2,a3,a4,a5,a6,a7...

2013-03-23 11:35:00 605

转载 Graham's Scan法求解凸包问题

参考: http://blog.csdn.net/hqd_acm/article/details/6218420 http://www.cnblogs.com/kuangbin/archive/2012/09/29/2707961.html 概念 凸包(Convex Hull)是一个计算几何(图形学)中的概念。用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层

2013-01-24 00:01:57 537

原创 poj 2318

题意:给出矩形的左上和右下的坐标,在矩形中有n个木棒,木棒之间不会相交,然后给出木棒上下端点的横坐标,接着有m个玩具,给出玩具的坐标。输出木棒围成的区域中有玩具的个数。 思路:由于数据范围大,所以对有序的木棒二分,叉积判断点在木棒的哪端。 #include #include using namespace std; const int maxn = 5010; struct point {

2013-01-23 00:11:42 1110

原创 矩形覆盖

NYOJ http://acm.nyist.net/JudgeOnline/problem.php?pid=16 题意:给出一系列的矩形长宽,求符合矩形嵌套的最多矩形。。 思路1:白书上说的DP。。。如果矩形A可以嵌套在矩形B中,那么map[A][B]有边,最后在这些矩形中找到从一个矩形出发的最长路。 #include #include #include using namespace st

2012-11-14 15:04:40 1144

原创 hdu 1010 奇偶剪枝

题意:给一个字符矩阵,S是起点,D是终点,X不能走,其它地方可以走,求T步数的时候是否能从S恰好走到T。。。 思路:开始题意理解错了,以为就是个BFS(),WA掉。。。后来看了discuss是dfs()。。TLE掉,后来上网搜,原来得加个“奇偶剪枝”的东西、、、 奇偶剪枝:http://www.cnblogs.com/newpanderking/archive/2012/10/09/27169

2012-11-13 19:46:21 544

转载 poj 2299 归并求逆序数

题意:给出一些数,然后求这串数字的逆序数,也就是从这个状态到升序状态的最小步数。 思路:归并排序,同时累加子问题的逆序数。 http://blog.csdn.net/morgan_xww/article/details/5742926 #include #include #include using namespace std; int a[500010]; __int64 ans; i

2012-11-10 09:10:54 458

原创 hdu 1006 时钟求交集

题意:给出一个角度,然后求一天中时针、分针、秒针互相的夹角都大于等于这个夹角的概率。。 思路:开始的思路就是枚举,但是由于精度问题,果断TLE、、、  膜拜网上各种解法啊,主要就是个数学问题、、但是真心不会啊,这道题学到一些,处理时钟问题的方法吧,还有区间求交集什么的。。。 http://blog.csdn.net/lulipeng_cpp/article/details/7320710 O

2012-10-30 21:35:21 2236 1

原创 hdu 2809 状态DP 三国吕布

参考于 http://blog.csdn.net/woshi250hua/article/details/7746780 题意:吕布一个人单挑N个英雄,没打一个英雄一定要有一个人死才行,求最后如何打才能剩下的血量最多。 思路:状态DP ,dp[i]为,状态i下剩余的血量,用 0 1 表示该位置是否杀死了该敌方英雄。。 #include #include #include #include u

2012-10-28 01:19:17 836

原创 Codeforces Round #147 (Div. 2)

A 拨开题意就是求,最多重复的时间,然后记录下个数就行、 #include #include #include #include using namespace std; int main() { int n; set myset; set::iterator it; string str; while(~scanf("%d",&n)) {

2012-10-26 08:44:45 450

原创 poj 3254 炮兵的简化版

题意:给出个N*M的矩阵,1可以放,0不可以放,相邻之间不能放,求放的方法数。 思路:最后有bug,还是参考的@ZeroClock大神。。。    poj 1185炮兵阵地的简化版。  #include #include #include #define Mod 100000000 using namespace std; int dp[15][4200]; int map[15][15]

2012-10-23 00:39:10 389

原创 体积为负数的DP

参考与:http://blog.csdn.net/actangy/article/details/7433992 题意:给出n个 si 和 fi , 要求si和fi的和 都不能是负数的前提下,求Σsi+Σfi的最大和。 思路:见参考。。。我是弱B。。。╮(╯▽╰)╭ #include #include #include #define inf 10000000 using namespace

2012-10-05 16:14:34 609

原创 2012 ACM/ICPC 长春赛区网络赛

1001  A Simple Problem with Integers 参考地址:http://www.haogongju.net/art/1637871 题意:有两种操作,一种是更新区间a~b中 a 思路:明显的线段树 , 但是依然跪倒啊、、、cnt[i][k] = c 代表当前区间i 每隔k个字符累加c, 然后就是更新,如果存在要更新的区间那么直接更新就行,否则左孩子依旧

2012-09-19 00:30:35 1558

原创 Codeforces Round #137 (Div. 2)

哎、、 好水啊 准备敲之前一定要想好思路、、、到快结束的时候思路才对、、而且有个JR还总cha我、、最后依然一题悲剧、、 A. Shooshuns and Sequence 题意:大水、就是把当前kth位置的数字复制到最后,然后删除第一个数字,求最小操作数能把序列变为所有位置的数字都相同。 思路:开始脑子进水,写模拟。。。然后变换一次check一次、、果断悲剧好久,后来看看发现点端倪,初

2012-09-11 09:01:26 709

原创 hdu 1059 多重背包

题意:输入n1~n6 代表1~6的 个数,然后求这些数能不能通过分配达到value相等的状态 思路:多重背包(详见背包九讲) 能不能装满背包v/2的问题  #include #include #include using namespace std; int dp[100000]; int v; bool flag; void _com(int c , int w) { for

2012-09-06 19:12:21 357

原创 hdu 1494 跑跑卡丁车

题意:中文题、、、 思路:技能槽的状态一共有15种状态0% 20% 40% 60% 80% 100% 120%..... dp[i][j] 代表通过第i条路的技能槽状态是j , 所以要考虑好哪些状态可以到达dp[i][j]是最优的就行了 dp[i][j] = min(dp[i-1][j-1] + a[i]  , dp[i-1][j+5] + b[i]) . 然后就是处理细节  1.N圈处理

2012-09-06 13:29:08 473

原创 hdu 1712 分组背包

分组的背包问题  问题  有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。  算法  这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则

2012-09-06 09:53:40 335

原创 poj 1061 青蛙的约会

题意:中文题 不解释了 思路:两只青蛙跳了t步,A的坐标是x+mt,B的坐标是y+nt。它们相遇的时间的充要条件是:x+mt-y-nt=pL 即:(n-m)t+Lp = x-y ----- ax+mx= b解这个同余方程的非负整数解就行 x0解出的是ax+mx=d(d是a , b最大公约数)  有解的时候 d|b  所以把x0扩大d/b倍数即可 #include #include #inc

2012-09-02 16:24:47 390

原创 Codeforces Round #135 (Div. 2)

哎、、、我太水了。。。参考各种神代码 @dut200901102 @hanfei @cxlove A. k-String 统计字母出现次数 YY即可。。。 #include #include #include using namespace std; int main() { int cnt[30] , k , i , len , j; char s[1010] , an

2012-08-30 19:48:50 564

转载 扩展欧几里得算法

转载于:http://blog.csdn.net/zixiaqian/article/details/4480037 扩展欧几里德算法   欧几里德算法   欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:   定理:gcd(a,b) = gcd(b,a mod b)   证明:a可以表示成a = kb + r,则r = a mod b

2012-08-25 10:07:25 372

原创 Codeforces Round #133 (Div. 2) 找奇环

B. Forming Teams 题意:要平均分配两只队伍,队伍内的人不能有敌对关系,一个人最多可以和两个人敌对,如果没办法按要求分配,那么输出最小要去掉的人数。 思路:因为一个人最多可以和两个人敌对,所以如果形成链或者是孤立的点都是可以分配的,如果形成偶数环,那么交错着安排也可以,只要判断奇数环就行,例如 1-2 2-3 3-1 必须要去掉一个人,最后去掉后的人如果是奇数的话,那么还得去掉

2012-08-24 08:28:59 1219 2

原创 poj 2153 map && sort+二分

题意:有N个人,然后有M次考试,每次考试每个人都会有一个分数,然后求每次考试后“Li Ming” 的排名。 思路:开始以为就是个sort的排序,后来WA了,原来有trick,排名是按总分来排序的,所以每次考试都要累加得分,但是每个人每次考试的得分如何累加到这个人的得分上,直接暴力TLE...还得用二分啊。。。。 #include #include #include #include using

2012-08-23 22:57:24 649

原创 ACM对拍程序

ACM对拍程序过程。。。 一、用随机程序生成符合题目的输入数据文件名为in.txt 如何产生随机数: http://www.cnblogs.com/lvsi/archive/2011/04/21/2024079.html 二、用AC的程序和你的程序分别跑数据in.txt AC程序生成out1.txt  你的程序生成out2.txt 在生成输出数据的时候最好把输入的一些关键数据也一并

2012-08-14 12:25:01 3943 1

原创 2012 Multi-University Training Contest 4

1004 线性查找 O(n^3) 题意:有五个集合,每个集合中最多有200个数,从每个集合中选出一个数判断这五个数的和能否是零。 思路:如果直接暴力的话复杂度是O(n^5) TLE , 在网上看到一种所谓的线性查找的方法,刚开始跟这个思路差不多,但是还是TLE。。 把第一个集合的第二个集合的所有和的情况组成新的s1,第三个和第四个集合所有和的情况组成s2,然后对s1和s2分别排序  O(n^

2012-08-14 11:44:53 877 1

原创 poj 2407 求欧拉函数值

题意:给出n求欧拉函数值。 以后再把求欧拉函数的方法完善下,看来知识都有连锁反应啊。。。想做一道题得看不少东西。。。先看看欧拉这个鸟人。。 #include #include #include using namespace std; int phi(int n) { int ans = n; for(int i = 2 ; i*i <= n ; i ++) {

2012-08-11 23:00:01 1104

原创 2012 Multi-University Training Contest 3

1001 质数筛选 判断公共因子 题意:判断A进制下的有限小数 能否转化成B进制下的有限小数。 题解给的是,只需要判断B中质因子是否包含A中质因子即可。不是很明白,后来问了群里的大牛,现在也算明白些了。 整数部分的互相转换不用考虑,一定可以转换的,A进制转化成十进制的小数形式是(1/A + 1/A^2 + 1/A^3 + ... + 1/A^n) 系数不用考虑,想想十进制化二进制的时候是每次

2012-08-10 17:52:24 420

原创 poj 1273 EK 最大流

要了解最大流感觉还是要啃《算法导论》,加上点程序模板基本可以搞个差不多。 这是介绍网络流基础的  http://chhaj5236.blog.163.com/blog/static/1128810812009827112857794/ 这道题就是裸的EK了,唯一注意的是要注意重边的情况。 #include #include #include #include using namespac

2012-08-10 12:45:47 448

原创 hdu 1269 tarjan

题意:中文题,就是根据给出的一些有向边,判断所有的点是不是在一个强连通里。最最基本的tarjan了,用链式前向星的加边方式。 tarjan算法:tarjan #include #include #include using namespace std; const int maxn = 10010; const int maxm = 100010; struct edge{ int v

2012-08-05 18:25:39 440

原创 几道水博弈

1、poj 1067 威佐夫博弈(取石子问题) 课件上的例题,P态和N态与黄金分割点有关。 (0,0)  (1,2) (3,5) (4,7) ... P(必败态) 满足 a = i*(sqrt(5.0)+1)/2;  b = a + i;  (a #include #include #include using namespace std; typedef long long ll; i

2012-08-05 12:41:12 465

原创 2012 Multi-University Training Contest 2

1001  排序+贪心(不会状态DP) 题意:假设你的血是无限的但是攻击力只有1,给出N个人的dps和hp,你每攻击一个人,那么这个人的血量减一,同时你的血量减少值为所有活着的人的dps和,求最小花费多少血量可以把人全干倒。 思路:按照dps/hp 排序 ,优先把dps/hp数值高的人干掉。 #include #include #include #include using namesp

2012-07-28 17:14:50 454

原创 Codeforces Round #124 (Div. 2)

A. Plate Game 题意:给出桌子大小,和圆盘的半径,两个人轮流放盘子,盘子不可以重叠,谁先没有地方放盘子,那么这个人就输了。 这题尼玛坑爹啊。。。神题+群里大牛神解。。跪了。 只要第一个人可以放下盘子,那么他肯定是能赢的,First能放的话就放中间,随便第二个人怎么下,以中心为对称点模仿他就行了。 #include #include using namespace std;

2012-06-13 00:02:09 3160 2

原创 poj 3450/poj 3080 多串最长公共子串 后缀数组

题意:就是求多串的最长公共子串 思路:子串可以看作是字符串中后缀的前缀。把这些字符串连接起来,中间用不能出现的状态隔开,然后求其height数组,二分枚举一个字符串的子串长度,看是否存在连续n个最长公共前缀的长度都大于mid,并且这些公共长度分别属于n个字符串。 poj 3080  保证最长的前提下,保证字典序,字典序是用sa数组来保证的,最先找到的公共前缀一定是字典序较小的,然后这些公共前

2012-06-05 23:13:13 490

原创 hdu 1428 漫步校园 优先队列BFS +记忆化搜索

参考:http://blog.sina.com.cn/s/blog_7fec44cf0100ypaq.html 题意:从(1,1)点开始走,终点是(n , n),每走一步都要保证距离终点最近,如果和A区域相邻的四个区域离(n,n)点,比A点离(n,n)点更近,那么就可以走,求到终点的方案数。 思路:如何判断一个点是否离终点更近?用优先队列的BFS求终点到其它各个点的最短距离,并保存在数组中。(

2012-06-05 11:23:33 514

原创 poj 1226 求多串最长公共子串 或 回文子串 KMP&&strstr&&后缀数组

题意:求给出的字符串中的最长公共子串 ,其中子串可以反转,比如rose 和 orchid , ro 和第一个匹配 , ro 的回文串or 和orchid 匹配 。最后输出最长子串的长度。 思路:找出长度最小的子串, 枚举其所有子串 ,然后将其反转再保存 ,最后用这两个串去匹配其它的字符串。 #include #include #include using namespace std; ch

2012-06-03 20:01:00 762

空空如也

空空如也

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

TA关注的人

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