自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 POJ 1579 Function Run Fun

这题时简单的dp题,不过我也就能写写这样简单的题了,不过注意一点。没什么说的,直接按照题目顺序就可以了。#include#include#include#include#include#include#includeusing namespace std;int dp[21][21][21];int recursion(int a,int b,int c){ i

2015-03-10 21:47:02 611

原创 POJ 1410 Intersection

这题我就是用最原始的思考方法,其中有许多细节要注意。主体思想就是四条边分别和线段比较。线段在矩形内要考虑。我的代码有点乱有点长,其中有的部分可以写成函数。#include#include#include#includeusing namespace std;int x_s,y_s,x_e,y_e,x_l,y_t,x_r,y_b;bool f1(int x){ re

2015-03-04 22:21:53 543

原创 POJ 1269 Intersecting Lines

本题就是判断直线之间的关系,我的思想就是先判断是否共线,然后判断是否平行,剩下的肯定相交,直接求交点就可以了。在判断平行的时候只要看两者的斜率是否相等就可以了,因为在判断平行之前已经判断是否共线,所以只要斜率相等,肯定就是平行了。求交点的时候就是用的数学方法,注意斜率不存在的情况就可以了。#include#include#include#includeusing namespace s

2015-03-03 20:50:29 502

原创 POJ 2318 TOYS

这题计算几何的部分还是比较简单的,重点是那个二分有点麻烦(大牛忽略),每次写二分自己都得用笔模拟一番,然后才能确定。因为y1,y2是公共的,所以存储的时候线段的时候只要存储x的坐标就可以了。然后就是判断是在右边还是在左边。#include#include#include#includeusing namespace std;const int N=5005;struct Lin

2015-03-02 22:21:15 574

原创 POJ 1861 Network

这题就是用最小生成树中的kruskal算法的模板题。#include #include #include #include #include using namespace std;const int N=1002;const int M=15002;const int inf=1<<28;struct edge{ int u,v,cost;}es[M];int

2015-02-21 19:49:58 376

原创 HDU 1009 今年暑假不AC

本题算是贪心中的基础题。#include #include #include #include using namespace std;const int N=102;struct time{ int s,e;}data[N];int n;bool cmp(time a,time b){ if(a.e==b.e) return a.s<b.

2015-02-21 10:50:48 636

原创 POJ 2485 Highways

只要把prim算法稍微改一下就可以了。#include #include #include #include using namespace std;const int N=505;const int inf=1<<28;int cost[N][N],mincost[N];bool used[N];int n;int prim(){ int _max=0;

2015-02-15 16:30:03 482

原创 ZOJ 1586 QS Network

这题还是用最小生成树的模板就可以解决,不过在边的值上面要稍微处理一下。#include #include #include #include using namespace std;const int N=1000;const int inf=1<<28;int cost[N][N],mincost[N],brand[N];bool used[N];int n;int pr

2015-02-15 15:13:04 513

原创 HDU 1087 Super Jumping! Jumping! Jumping!

动态规划题目做的真的很少,自己也不太熟练,这题也是连蒙带猜才弄出来。dp[i]表示以data[i]结尾的最大分数,那么状态转移方程为:dp[i]=max(dp[j]+data[i],data[i])(0#include#include#include#include#include#include#includeusing namespace std;const int N

2015-02-04 22:17:11 424

原创 HDU 1097 A hard puzzle

这道题其实挺简单的,因为只看最后一位,所以就讨论最后一位的情况就可以了。而最后一位显然是有周期性的。#include#include#include#include#includeusing namespace std;int main(){ int a,b,mode[12]; while(scanf("%d%d",&a,&b)!=EOF) {

2015-02-04 17:48:34 500

原创 HDU 1098 Ignatius's puzzle

这题刚开始看的时候,的确被吓了一跳,13次方,这也太大了,而且还是任意的x,有点麻烦,但是仔细分析之后,发现有点窍门:65|f(x),不妨设5*x^13+13*x^5+k*a*x=m*65,于是可以得到:x*(5*x^12+13*x^4+k*a)=m*65,继续得到:x*(5*x^12+13*x^4+k*a)/65=m,因为是对于任意的x均成立,所以(5*x^12+13*x^4+k*a

2015-02-04 16:35:57 442

原创 ZOJ 1409 Communication System

这题用的是贪心算法,不过在贪心之前还是要进行部分处理的。首先就是题目要求B/P尽可能的大,所以P应该尽可能的小,B应该尽可能的大。但是B和P的处理方式是不一样的,B是所有带宽中最小的那一个,P是所有设备的总价钱,所以我能想到一个方法就是一个一个的枚举B,本来我是不敢这样想的,可是题目给的时间比较长,我觉得应该问题不大,当我运行之后,竟然只是0ms,让我吃了一惊。然后再选择设备,这时候就要用到贪

2015-02-03 22:43:41 540

原创 HDU 1338 Game Prediction

这题我用的是贪心算法,我的理解是这样的:要求我最少能赢的次数,就是求别人最多能赢的次数。首先把我的牌先升序排序,然后我从小开始出,对于我出的牌,别人应该尽可能的压,而且用他们比我大的最小的那张牌;如果他们不压,那么他们后面这张牌就很有可能用不上,就少赢一次。#include#include#include#include#include#includeusing namespa

2015-02-03 21:25:52 582

原创 HDU 1102 Constructing Roads

这题很显然用最小生成树来做。不过要稍微变化一下,一开始我打算用一个布尔数组来标记哪些村庄之间已经用道路连接,可是我发现写起来有点费劲,于是突然想到如果把已经修建的道路想象成0是不是就可以呢,仔细想了一下,貌似真的可以,提交之后果然过了。#include#include#include#include#include#includeusing namespace std;const

2015-02-03 20:50:31 492

原创 POJ 2231 Moo Volume

这题用的是贪心算法来算的,贪心策略如下:dist数组表示各个牛的位置距第一个牛的距离,当然之前要对牛的位置进行升序排序。设a为第一头牛距各头牛的距离的总和,然后从第二头牛开始遍历,假设遍历到第i头牛时,那么标准为:t=t-(n-i)*d+i*d,各变量的含义为:t一开始为a,然后每次就是该表达式运算之后的值;n为牛的总数;d为第i头牛和第i-1头牛之间的距离。这个公式画图其

2015-02-02 22:01:29 665

原创 HDU 1051 Wooden Sticks

这题就是贪心算法,先对length升序排列,如果length相等,再按weight升序排列;反之亦可。然后根据题目要求进行选择即可。不过我在写排序函数的时候出了一点问题,害得我还一度以为我的贪心策略是错的。#include#include#include#include#include#includeusing namespace std;const int N=5005;

2015-02-02 21:14:28 476

原创 HDU 1031 Jungle Roads

这题就是最小生成树的模板题,可是这题的数据给的有点坑。首先我不清楚给出的村庄是否就是按照从A开始的字母顺序排列,所以我就用一个exist布尔数组来标记这个村庄是否存在;在者就是两个村庄之间可能有多条路,所以存储的时候应该存储最小的,可是题目没有这样的例子,哎!#include#include#include#include#include#includeusing name

2015-02-01 23:41:48 578

原创 POJ 3080 Blue Jeans

这题绝对是被坑的滴血,我真想对网上某某人说,去你大爷的。这题的思路挺简单,本来我以为要用的什么高深的算法,可是听别人说,直接暴力就可以解决,于是就做了。本来很快写好代码,可是语句代码坑了我好长好长时间。#include#include#include#include#include#includeusing namespace std;char dna[11][65];ch

2015-02-01 20:03:59 534

原创 POJ 3463 Sightseeing

最短路和次短路的结合,之前没有碰到过次短路。为此自己特地把最短路知识又复习了一遍,然后看了其他人的想法,最后才写了出来,具体来说,其实不太难,重点是理解思想。存储的时候采用邻接表。解法:用到的数组:dist[i][0]:i到起点的最短路,dist[i][1]:i到起点的严格次短路visited[i][0],visited[i][1]:同一维的visited数组,标记距离

2015-02-01 15:33:47 416

原创 UVa 10285 Longest Run on a Snowboard

这题我的第一感觉就是用DFS。自己写的貌似不够完美,因为我看见别人的时间都特别的短,而我的有点长。#include#include#include#include#include#includeusing namespace std;const int N=102;int height[N][N];bool visited[N][N];int dx[]={1,0,-1,0}

2015-01-31 21:44:23 460

原创 UVa 127 "Accordian" Patience

这题其实挺简单的,可是自己一开始题目没看懂,或者说题目理解不清,导致结果总是不对,花了不少时间。后来细细地读题,认认真真地读题,终于理解了,自己的英语能力真的不行啊。题目意思是每次都是移动最上面的那个,我一开始认为是把一堆一起移动。中途调试的时候,写了几条测试语句,最后交的时候忘记注释掉了,结果老是WA,光查找这个就花了不少时间#include#include#include#inc

2015-01-31 21:35:04 339

原创 Matlab学习笔记(五)

Array Dimensions这里主要介绍有关的函数:1、length语法为:numberOfElements = length(array),它的返回值是数组中最大维的元素的数目。这里的数组是MATLAB所允许的任意数据类型以及任意维。对于一个非空的数组而言,numberOfElements和max(size(array))是等价的。对于空的数组而言,其值为0.例子:

2015-01-30 23:31:27 540

原创 POJ 1017 Packets

这题可能是用贪心思想来写的,具体是不是我也不知道,自己对贪心也不是太清楚。之前好像写过,当时似乎没有写出来,不过,这次一下就有了思路。本来是想先装小的包裹,可是试了一下不行,有问题;于是改为先装大的包裹,如果有多余,再装小的,每次都这样,直到所有的包裹被装完为止。试了试,感觉没有什么问题。代码写的可能有的乱,不过思路还是清楚的。#include#include#include#inc

2015-01-30 15:57:06 469

原创 HDU 3262 Seat taking up is tough

这题其实挺简单,可是自己就是被坑了很长时间,究其原因,脑袋短路了。本来排完序之后,应该把结果按照未排序之前的顺序输出,结果我就直接输出了,而题目给的例子正好是按顺序给的,输出没有问题,哎,果然够坑。以后再也不能相信题目给的例子了。#include#include#include#include#include#includeusing namespace std;int seat

2015-01-30 15:01:23 446

原创 Matlab学习笔记(四)

IndexingMatrix IndexingAccessing Single Elements可以使用如下语法来调用一个矩阵(Matrix)中的一个特定的元素:A(row,column):A是变量名,行在前,列在后。例如:A = magic(4)A = 16 2 3 13 5 11 10 8 9

2015-01-28 19:07:58 480

原创 Matlab学习笔记(三)

Array Creation and ConcatenationCreate Numeric Arrays在MATLAB中,所有的变量都是arrays,并且,默认所有的数值变量都是double类型。例如:>> A=100A =   100>> whos A  Name      Size            Bytes  Class     Attribute

2015-01-28 13:58:50 697

原创 Matlab学习笔记(二)

1、Variable Names(1)一个有效的变量名字是以字母开头,后面接上字母、数字或者下划线。在MATLAB中是区分大小写的,所以A和a是不同的变量。变量名字的最大长度是命令:namelengthmax所返回的值,其返回值为63。所定义的变量不能和MATLAB中的关键字相同,例如if和else。可以使用iskeyword得到一份完整的关键字列表:>> iskeywordans =

2015-01-28 13:08:38 794

原创 POJ 3767 I Wanna Go Home

这题是很明显的最短路,我用的是SPFA算法。题目中有一个要求就是只能走一次从1到2,所以我用了一个belong数组来记录,在求最短路的时候,先判断是从1到2,还是从2到1,如果是后者,那么就忽略。最后判断是否存在,只要看dist[2]是否有值就可以了。#include#include#include#include#include#includeusing namespace st

2015-01-27 20:23:51 440

原创 HDU 1022 Train Problem I

这题我的想法使用栈的思想去解决的,就是根据进站的序列加入栈中,若和出站最开始的序号相同,则出栈;然后继续进行此操作,和下一个出站的火车序号相比较。这样操作完后看看栈是否为空,就可以判断了。#include#include#include#include#include#includeusing namespace std;int main(){ char s1[10],

2015-01-26 14:27:29 411

原创 Matlab学习笔记(一)

我所有的学习笔记都是基于Matlab2012b的Help文档,因为是英文,所以自己可能理解的有问题,如发现错误,还望指正。1.Enter Statements in Command Window我们可以在命令窗口下输入独立的语句(individual statements),例如创建一个变量a,可以这样输入:a=1这样之后就会把a加入到workspace中,并且在命令窗口中显示:

2015-01-25 20:43:51 526

原创 HDU 1027 Ignatius and the Princess II

这题我使用DFS来解决的,但是每次我写DFS的时候总是坑在递归结束的条件上,每次都要纠结,这次也不例外。不过总算解决了。#include#include#include#include#include#includeusing namespace std;const int N=1005;int ans[N];bool visited[N];int n,m;bool df

2015-01-25 16:49:44 523

原创 HDU 1026 Ignatius and the Princess I

这个题目一开始没想到用优先队列,或许说没学过优先队列,结果卡死了。然后看了别人的题解,原来如此,基本方法就是BFS。优先队列的基本用法:http://blog.csdn.net/baochunzhi/article/details/7664422,讲解还是比较详细。这题还有一个注意点就是如何输出,这里就要注意前后的关系,我是用next数组来表示前后两点的相对关系,具体可以见代码。输出的时候

2015-01-25 16:01:44 547

原创 HDU 1003 Max Sum

这题一看就想到用dp来做,至于为什么我也不知道。其dp的思想也比较简单,不过自己写的有点复杂了,看了网上的题解才知道自己是那么的弱。这个是我的代码:#include#include#include#includeusing namespace std;const int N=100005;int dp[N],s[N],e[N],data[N];int main(){

2015-01-23 18:02:11 494

原创 HDU 1016 Prime Ring Problem

这题我用的是DFS。不多说,看代码和注释。#include#include#include#include#includeusing namespace std;//因为n<20,所以最大的素数也就是40左右,因此用一个数组来记录45以内的素数,用于之后的判定。bool isprime[45]={0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0

2015-01-13 22:19:52 404

原创 HDU 1015 Safecracker

终于做对DFS了。这题就是简单的DFS吧,不过对我而言,我是费了不少力气。#include#include#include#include#includeusing namespace std;char s[15];bool isok,visited[15];int len;void dfs(int target,char *ans,int cnt,int id)//cnt用

2015-01-13 21:29:13 390

原创 HDU 2080 夹角有多大II

简单题,不解释,不过,貌似我现在也就能做做简单的数学题了。#include#include#include#includeconst double pi=acos(-1.0);using namespace std;void f(double &angle,double x,double y){ if(x<0&&y<0) angle+=180.0;

2015-01-12 21:23:36 518

原创 HDU 2056 Rectangles

这题就是简单的几何题,刚接触ACM做这题时,不会写,当时想的太复杂了,把矩形的各种情况组合都考虑到了,结果发现这样太复杂就放弃了。今天做这道题时,我突然发现既然题目给的是对角线的坐标,为什么不用对角线之间的关系来判别矩形之间的位置关系呢?于是思路就很简单的涌现出来了。只要画个图,就能明白两者之间对角线的关系。#include#include#includedouble _max(doub

2015-01-12 18:55:16 1434

原创 POJ 2777 Count Color

这题其实之前写过,应该算是线段树中比较简单的,不过自己还是被坑了很长时间,就是因为一个小小的错误,怎么找都找不到,哎,急哭了。这题在找颜色种类的时候,因为最多只有30种颜色,所以可以用一个整型变量来存储,一个位代表一种颜色。这里就要考虑对位的处理了,具体见代码。#include#includeconst int N=100005;int L,T,O;struct board{

2015-01-09 22:18:36 373

原创 POJ 2264 Advanced Fruits(最长公共子序列)

这题要用到最长公共子序列,又是DP,可是不会,于是就去学这个,看了一会儿,终于有点心得了。主体思想就是先求出最长公共子序列,然后把公共字符之前的所有字符都合并起来。具体请看下面的注释。#include#includeconst int N=105;char s1[N],s2[N],s[N*2];int lcs[N][N],index1[N],index2[N];//index和in

2015-01-08 22:54:57 563

原创 poj 3370 Halloween treats

这题用抽屉原理写起来真的很简单,从中也明白数学的重要性。几个抽屉原理如下:原理1 把多于n个的物体放到n个抽屉里,则至少有一个抽屉里的东西不少于两件;原理2 把多于mn(m乘以n)个的物体放到n个抽屉里,则至少有一个抽屉里有不少于m+1的物体。原理3 把无穷多件物体放入n个抽屉,则至少有一个抽屉里 有无穷个物体。.原理 4 把(mn-1)个物体放入n个抽屉中,其

2015-01-08 19:52:25 283

空空如也

空空如也

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

TA关注的人

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