自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bysen32

当梦想照进现实

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

原创 POJ 2004 最长升序子序列

比赛中切掉的... 代码很冗余,没怎么仔细想总之,是一个最长升序子序列的题啦。#include#include#include#includeusing namespace std;struct node{ char line[25]; int len; int count[27];}date[11111];bool cmp( node a,n

2012-03-20 13:48:24 554

原创 HDOJ 4004 The Frog's Games 二分

去年网络赛没做出这道题来...真是惭愧惭愧啊...恶补了一下二分,感觉难度和for循环差不多。等把五个二分题AK后,用hash再来做一边吧。补习中....思路:二分查找渡河最小能力值。用能力值来渡河...正确判断算法的时间复杂度可以省很多代码时间的啊....受教了....本来做题使用的两次二分,比较依据为跳跃次数。后来发现不需要两次... 一次即可..#include

2012-03-20 13:45:15 724 4

原创 POJ 3122 Pie 二分

没想到上次做这个题恰巧是一年前啊....当年被这题虐了,不知道怎么做,记得自己还佷傻逼的画了个矩阵...还是没有想到做法,上网看了下思路,说是二分,但是码畜还是不会这题啊!!!今天做了一下,发现很水= =。当年我是有多傻逼啊!!!直接二分半径,找到输出就可以了。果然浮点型的二分和整型的二分还是有不同的,多多练习一下吧!加油!death_acmer.#include#i

2012-03-20 10:23:26 838

原创 POJ 2785 4 Values whose Sum is 0 二分

简单的二分.. 不过写挫了... 4000*4000我算成了16W... 丢死人了...交题果断RE,还百思不得其解....后来改掉之后果断TLE了,自认算法没错,难道是函数调用的关系?对比了一下AC程序发现在二分查找的过程中有一个break条件没加...改掉之后ac了。另外发现sort的cmp调用十分的占时间。按照默认的升序sort吧,这样省时间。以上为题解.#inclu

2012-03-20 09:51:21 712

原创 HDU 2141 二分

下午练习一下二分吧,感觉写得很挫....用A和B两个数组的和作为一个附加数组,求Ai+Bj+Ck=X只需要去搜索A+B的和为X-Ck即可....#include#include#include#includeusing namespace std;int sum[255555];bool cmp( int a,int b ){ return a<b; }int X,Y,Z

2012-03-19 16:53:38 503

原创 POJ 2002 Square 计算几何

一道水题,关键是要敢做....枚举两个点,做直线,作为正方形的一条边,然后由一条边可以确定另外的两个点。可以形成两个正方形,再用二分查找找出这两个点是否存在,若存在则方形个数++。最后答案除以4就可以了。时间不怎么好2844ms... 等会儿多用几种方法优化一下....#include#include#include#include#includeusing namespace

2012-03-19 16:15:04 539

原创 HDU 1992 递推= =

这题好玩!对这种图形递推题终于攻破了!哇哈哈哈!就是递推找规律!好玩啊~#includeint main(){ int N; __int64 f[1001]; f[0]=f[1]=1; f[2]=5; for( int i=3;i<=1000;i++ ) { f[i]=f[i-1]+f[i-2]*4; int len=1;

2012-03-16 22:45:21 728

原创 HDU 1421 搬寝室

好好琢磨一下吧 DP....#include#include#include#includeusing namespace std;int f[2222][2222];int min( int a,int b ){ return a<b?a:b; }bool cmp( int a,int b ){ return a<b; }int powsum( int a,int b ){

2012-03-14 21:58:27 403

原创 HDU 3535 混合背包

看来还是需要好好理解背包的含义啊!本来鄙人写了3600+的代码,各种悲剧。果然还是对背包的理解不深啊!看过人家的代码后才A出来.....#include#include#includeusing namespace std;int dp[111][111];int max( int a,int b ){ return a>b?a:b; }int max( int a,in

2012-03-14 20:27:12 566

原创 HDU ACboy needs your help 隐藏的分组背包水题

前几天对这题编了码。自己本地都跑不过。罢了,谁叫我不会做呢= =。今天被树形DP虐了,没想法了= =。回头准备切切这题。分析了一下特点:总共要学习N天,每门课程学习的天数都有不同的价值。在每门课程中只能选择一个指定的天数来学。Wait!!! 怎么感觉好像分组背包的描述!背包容量为要学习的N天,每门课程为一个分组,分组中每个物品的代价是学分,花费是学习的天数。而分组背包为:在每个

2012-03-13 20:35:35 614

原创 HDU Bone Collector II 背包的K优解

算法比较容易想到,每次做背包操作都会产生值的。记录下排序就好了。不过关于排序的问题我倒是wa了很久,本来开个3维数组把所有的解都记录下来,然后排序取出K大的就好了。但是却wa了= =没办法,看网上的题解吧。大家的方法和我想的差不多,也是对每个背包维护k个最优值。解法还是网上的,我就不废话了。就是记录2K个值,然后归并在一起。我的想法没错啊,为嘛WA呢=3=#include#inclu

2012-03-13 19:00:47 491

原创 HUD I love sneakers! 变化的分组DP

网络上题解很多。我就不乱说了。首先分组背包的原型:给物品分组,容量为V的背包,每个分组内的物品互斥,每个分组最多取一个物品。求最大值。代码很简单:for( int i=0;i<group;i++ )for( int j=V;j>=0;j-- )for( int k=0;k<total[i];k++ ) f[V]=max( f[V],f[V-cost[k]]+value[

2012-03-13 11:43:10 704

原创 HDU 2571 命运 水DP

消极题解凑数= =话说今天的水题有点多了= =本来想用最短路做的,但是不想那么麻烦,滚动数组也不想用,能水就水吧。记得以前做过一道类似的,不过是走路方针可以斜线,飞跃什么的,各种神。不过是BFS+队列罢了+GCD 罢了罢了还是水,不说了....#include#include#includeusing namespace std;int max( int a,int b ){

2012-03-12 17:35:08 481

原创 HDU 2577 How To Type DP

哈哈~这题秒掉了,总的来说这些天的DP苦修还是有点成果的。哇哈哈哈。做题过程大概是这样的,前几天看了下这题,完全不敢切,果断的没思路。今天再一看,在纸上用笔演练了下,发现基本上能推出公式了。呵呵,蛮好玩的么,DP,虽然只是道水题,但是也说明了我在进步啊~ 哈哈哈#include#include#includeusing namespace std;int min( int a,i

2012-03-12 16:53:51 627

原创 HDU 3499 Flight spfa+dp

自认为相当正确的代码,交上去TLE了。以为是自己的方法错了,从昨晚开始想,到底错哪了?昨晚上看到了熟人的代码,依然大牛。网上的解法大多是正反向最短路+枚举折半边。这样得出。但是我的代码是:用dist[x][0]记录到x点使用折半票的花费,dist[x][1]记录到x点全票的花费。这样dp方程就很容易出来了... 自己想吧。今天下午改了改,发现这题光读入数据就要3600ms++,最终发现是我的s

2012-03-12 15:59:10 689

原创 HDOJ 饭卡 01背包

水题。不过还是让我wa了几次。原来是在于初始化的问题。罢了罢了。想清楚还是很好的。去食堂买菜,最贵的是一定要刷卡的。留着刷吧,然后让其余的尽量接近5块钱就好了。和其他人的代码有点不同... 本质是一样的啦。代价和话费是一样的和那个BIG EVENT AT HDU那题一样。这种解法知道怎么做了。继续切。。。。#include#include#includeusing namespa

2012-03-11 18:48:54 489

原创 HDOJ Robberies 01背包

囧爆了!!! 莫名其妙的就ac了。因为前段时间做了一道类似的题目,大概是出国留学的概率问题。和这题很像。然后凭借记忆把这题给敲了,一交就过了!我勒个去!不带这么玩的!!!果然做题多还是有点点好处的= =。话说题目我都没怎么看懂呢= =DP切不动了。记录一下题意吧:A-I题:acJ题:题意没看懂= =,下次再看= =K题:01背包的第K优解... 雷死哥了!L题:分组背包的变

2012-03-11 16:53:59 524

原创 HDOJ The more, The Better 树形DP

算是树形DP的入门题吧。学习了一下人家的代码过的。在网上看了几种版本。果然还是dfs遍历树好啊。树形结构用指针来建的话可以省去很多麻烦。另外这题不能赤裸裸的从叶子节点更新,因为根是可以选择多个叶子的。没用完一个叶子,就必须把相应的父亲节点更新。还不错的题。#include#include#include#define MAXN 222using namespace std;stru

2012-03-11 15:26:12 478

原创 HDOJ FATE 二维DP

一道很水的二维DP,但是对于DP没有什么感觉的我来说,真是辛苦了。这么来。[疲劳值][怪物数量]=经验值。这样保存的当前疲劳值获取的最大经验者。dp[i][j]=max( dp[i][j],dp[i-m_pl[k]][j-1]+m_exp[k] );当经验值满足升级的条件就可以了。#include#include#includeusing namespace std;in

2012-03-10 19:15:12 553

原创 HDOJ Big Event in HDU 多重背包

第一次遇到这样的题,平分= =,还要回去好好想一下...这么水的... 不懂啊= =#include#include#includeusing namespace std;int main(){ int n,m; int a[101],c[101]; int DP[100001]; while( scanf( "%d %d",&n,&m )!=EOF ) {

2012-03-09 22:55:32 552

原创 HDOJ Dividing DP

没做过多重背包,这题从严格意义上来讲也不算是多重背包。算是很水的递推方程了。关键是看能不能找不出使得价格为sum/2的,通过递推连接就好了。关键是怎样可达...#include#include#includeint DP[120001];using namespace std;int main(){ int line[7]; int testcase=0; wh

2012-03-09 22:52:45 465

原创 NOIP2004 合唱队形

最近在做DP,好好静下心来学习吧....首尾两次最长升序子序列= =,好吧 很水..#includeusing namespace std;int max( int a,int b ){ return a>b?a:b; }int main(){ int N; int high[101]; int DP1[101],DP2[101]; memset( DP1,0,

2012-03-09 16:36:35 616

原创 NIOP 1999 导弹问题 最长升降序子序列 DP[小思路]

题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入格式输入数据为两行,第一行为导弹的数目N(n第二行导弹依次飞来的高度,所有高度值均为不大

2012-03-06 15:48:15 721

原创 POJ 1887 一维DP 最长升序子序列 [暴弱]

弱爆了..... 我真水... 只会水。好久没来POJ刷水了。#include#includeusing namespace std;int max( int a,int b ){ return a>b?a:b; }int main(){ int date[10000]; int DP[10000]; int testcase=1; while(1)

2012-03-06 14:39:48 692

原创 要开始写题了!!

一有难题卡住就不想做题,这样遇难而撤可不好啊!明天开始继续切题,我的职业生涯不长了!!把握最后的一点点时间好好的学学吧。实现我的目标。!加油!!

2012-03-01 22:40:54 587

原创 [U]3.4.4 3维DP

终于会写DP了,这种水水的还是能写的~ 嘿嘿~/*ID:bysenLANG:C++PROG:rockers*/#includeusing namespace std;int DP[21][21][21];int time[21];int N,T,M; int max( int a,int b ){ return a>b?a:b; }int getDP( int k

2012-03-01 22:39:03 682

原创 [U]3.4.3 皮克定理

/*ID:bysenLANG:C++PROG:fence9*/#include#includeusing namespace std;int gcd( int a,int b ){ if( b==0 ) return a; else return gcd( b,a%b );}int main(){ freopen( "fence9.in","r",stdin

2012-03-01 22:37:50 1116

原创 [U]3.4.2 简单的递归题

拷的POJ的代码,直接A了。/*ID:bysenLANG:C++PROG:heritage*/#include#include#include#includeusing namespace std; ifstream fin("heritage.in"); ofstream fout("heritage.out"); int strlen( char *

2012-03-01 22:37:12 618

原创 [U]3.4.1 蛋疼的计算几何,二分

采用二分的方法,查找是否可见对面的篱笆。左边,右边两方收缩,采用点积叉积判断是否相交。代码很丑.... 无视.../*ID:bysenLANG:C++PROG:fence4*/#include#include#include#define MAXP 201#define ERROR 1e-6using namespace std;struct Point{

2012-03-01 22:36:11 589

原创 [U]3.3.5 博弈原理,DP实现

想了很久,看了下题解顿悟了!赤裸裸的使用的博弈的原理,但是却用DP的方法记录状态。收获颇多。/*ID:bysenLANG:C++PROG:game1*/#includeusing namespace std;int sum[101][101];int dp[101][101];int num[101];int max( int a,int b ){ return a>b

2012-03-01 22:32:29 594

原创 [U]3.3.4 很不错的DP题

开始没有想法,后来一想,这是一道很明显的DP题,当前点的的边长正方形,决定于左边下面左下角三个点的状态。这样就可以构造出一个更大的方形。/*ID:bysenLANG:C++PROG:range*/#includeusing namespace std;int min( int a,int b ){ return a<b?a:b; }int min( int a,int b,i

2012-03-01 22:30:25 547

原创 [U]3.3.3 麻烦的思路题

骑士走的方式用普通的BFS,保存每个骑士的最短路径。然后枚举每个骑士在每个点接国王,计算路径即可。相当麻烦的考验耐心的题目。/*ID:bysenLANG:C++PROG:camelot*/#include#include#define MAXR 31#define MAXC 27#define INF 0x0FFFFFFFusing namespace std;

2012-03-01 22:26:51 782

原创 [U]3.3.2 DP

赤裸裸的DP题,简单题。/*ID:bysenLANG:C++PROG:shopping*/#includeusing namespace std;int ticket_No[100][6];int ticket_Num[100][6];int ticket_Money[100];//票的成员,成员的数量,优惠金额int hash[1000];//编号映射 int

2012-03-01 22:18:50 594

原创 [U]3.3.1 欧拉回路

欧拉回路,采用递归的方法。采用递归的方法实现。/*ID:bysenLANG:C++PROG:fence*/#include#include#define MAXN 501#define MAXF 1025using namespace std;int map[MAXN][MAXN]={0};int circuit[MAXF];int nodenum;int ma

2012-03-01 22:13:57 2273

原创 [U]3.2.6 Sweet Butter 枚举+SPFA

赤裸裸的SPFA模板题... 有点小失误,变量弄错了... 囧~枚举集合点,A之~ 原来用的Floyd结果超时了..../*ID:bysenLANG:C++PROG:butter*/#include#include#define INF 0x7FFFFFFF#define MAXP 801#define MAXC 1500using namespace std;st

2012-02-18 14:24:33 733

原创 [POJ]1077 Eight 八数码:康托展开+BFS

嗯~很久以前没敲过的题,当时不懂状态压缩,不懂A*。因而没过...现在用的康托展开+普通的BFS还是过了360ms也算是一个进步吧~A*现在还是没有勇气去写... 加油!时间给我的不多了!~(用C++TLE了... 改为G++就过了...)Code:#include#includeusing namespace std;struct node{ int ei

2012-02-17 21:41:31 2731

原创 [U]3.2.5 Magic Squares 康托展开+BFS

这题和八数码十分相似,或许是我的遗留问题吧....敲完总是不过,各种错误。迟迟下不了手的原因就在于对空间的把握问题。要节约空间就必须设计一个好的hash函数,不然时空开销大。关键在于哈希怎么弄了?八位数--->87654321如果采用这么大的空间,空间消耗太大,许多内存都没采用,不行... 后来查了下资料,发现有康托展开恰好是结果全排列的哈希问题。有了康托展开之后,全排列的问题就可以采用最小的

2012-02-17 18:01:24 2284

原创 [U]3.2.4 Feed Ratios 枚举

简答的枚举题,其他的不多说了....切掉之后看了下题解,复习了一遍高斯消元法和克莱姆法则。发现还是数学方法好啊。虽然枚举很省coding时间,于是乎,抱着节省code时间的态度,决定开始用模板类.....克莱姆法则有几条重要的1.非齐次线性方程,系数矩阵D=0时,有无穷多解。D≠0时,有唯一解。2.齐次线性方程.系数矩阵D=0时,有解。否则无解。另外克莱姆法则的时间效率低,

2012-02-17 17:43:29 752

原创 [U]3.2.3 Spinning Wheels 模拟

用的最简单的方法过的,赤裸裸的模拟题。估计一下时间复杂度,发现模拟可以做,果断模拟了,不过模拟得不好,太慢了。最好是学会bitset类,这样省空间。用bool要用掉8位.用360位的bitset可以直接判断了,不需要每次扫扫扫...代码果断很丑:/*ID:bysenLANG:C++PROG:spin*/#includeusing namespace std;struct

2012-02-17 17:33:47 644

原创 [U]3.2.2 Stringsobits 组合,递推

很快就发现了这题的递推特性。简直是赤裸裸啊~定义一个数组(  [串长度][串中'1'的个数]=种类数  )这就是一个排列啊~用一个简单的递推方程求解出来C(n,i)=C(n-1,i)+C(n-1,i-1);然后从首位n开始判断,∑C[n-1][i] ( i∈[0,l] )若和大于等于当前的第k个数则说明,右边的n-1位足够提供题中所需的数量,因此当前位为'0';若右边n-1位不

2012-02-13 21:41:26 640

空空如也

空空如也

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

TA关注的人

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