自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UVa270

给你N个点(N求最多在一条直线上的点。枚举以每一个点为原点,求它与其他点的斜率,斜率相同则说明在同一条直线上。只要枚举然后排序,最后求连续最长斜率相同的点就可以了。AC代码:#include#include#includeusing namespace std;const int Arsize=701;struct Node{ float x,y;};Node

2012-08-29 21:39:05 1131 2

原创 UVa10132

一个字符串(有多个副本)被切成了两段,要你找原字符串。我的思想是既然都是原字符串切碎了,那么只要找到随便两个组合起来,这两个组合刚好是该字符串长度在验证其他串是由该串打碎的即可。所以我们只要找到最长串,然后肯定是和最短串组合起来,一一验证即可,我们可以选定一个最长串或一个最短串,然后照他的另一半。我的是选定一个最长串,从中找一个最短串和它匹配。匹配有两种方式,一种是最短在前最长在后,一

2012-08-29 20:27:44 1019

原创 POJ2251

坑爹的是竟然把这题目分类在了深搜里面。昨天做到POJ3009,也是把题目放在深搜里面。然后求最短路,自己就用BFS做,结果TLE了。就采用DFS做了。今天这题又放在DFS里面,以为用BFS会TLE。结果用DFS搜索所有路径找最短路才是TLE的。晕啊,看来还是不要轻易的相信题目的分类。先贴一下TLE的DFS代码,直接以步数深搜和当前坐标点下去就OK了。#include#includ

2012-08-26 16:40:27 1648

原创 POJ1321

一个n*n的棋盘里面放k个棋子。有点类似于8皇后问题。只不过是有些地方不能放棋子。并且放棋子数只需要k个就行了。想到了类似于8皇后问题就采用深搜的方式。由于只要放k个棋子,且有些行不能放棋子。所以可以先预处理一下,看哪些行需要放棋子。处理当前行的时候有两种状态,一是在当前航放棋子,二是不放棋子。放棋子就类似于8皇后判断是否有相同列,不放棋子则直接深搜下一行。再加一些剪枝。当前放了c

2012-08-25 22:33:27 1506

原创 POJ3009

冰块的滑行。看到此题目求最短路径,想到了广搜算法,开一个结构体记录每一个球所在的位置和墙的状态。采用广搜+Hash判重。试着写了一下。交上去,结果TLE了。本来也是看POJ上题目分类是深搜的,但给我直观印象求最短路还是采用BFS+Hash的方式。晒一下我的代码和思路:模拟每一次移动,上下左右#include#includeusing namespace std;const i

2012-08-25 20:41:23 1219

原创 UVa321

对每一个状态进行遍历,用door来表示当前所在的房间,state[10]表示各个房间的开关情况,每次进行一步移动总状态为10*2^10.用hash来判重。用一个状态数组flag来记录每一次是进行的什么操作。最终状态为所在房间为r,只有r房的灯开着的。每次只考虑一步就行了,从小到大的开。一开始考虑复杂了,考虑到可能开一盏灯,然后还要从控制中选一盏,或者两盏灯等等。其实每次只要一步,这些开多盏

2012-08-24 22:25:25 596

原创 UVa10422和UVa10085

两个题目都是类似的。八数码遍历的基本问题。自己早先前看过八数码问题,写了一遍,不过。后面对着解题报告,又按自己的思路写了一遍,还是不过。老是runtime error。不知道错在哪里,调试废了我一天。哪位有心研究下能指点出来感激不尽啊。打算放弃了。因为已经了解其中的算法了。就是....神啊,求指导。呜呜。就是模拟跳马和移动格子,然后进行广搜,用hash判重。关键是hash判重。

2012-08-23 23:55:20 918 1

原创 UVa10603

隐式图的遍历采用广度优先搜索的算法,从当前节点front扩展出所有可能的节点。扩展就是从一个杯子的水往另外一个杯子里面倒。首先需要判断一下可以倒多少水,从第i个杯子往第j个杯子里面倒,如果第i个杯子有L升,第j个杯子有K升,则第j个杯子还能容纳cap[j]-K升,cap为容量。倒完后用vis数组判重。只需要开两个状态即可,即第一个和第二个杯子的倒水量,重了就不扩展,不重的话就入队进行扩

2012-08-22 21:00:11 1361

转载 数学是一种思考方式

这几天有个读者来来去去给我写了几封 email ,问起我的观点:数学和编程是什么关系?学编程需要多深的数学基础?到底需要掌握哪些数学知识,对编程能力的提高有帮助。这个还真不好说。如果说起课堂上我们学到的知识。除了初等代数,在编程中我还真没碰到多少依赖数学技能来解决的问题。当年我学 C 语言的时候很小,甚至不知道数学中函数这个概念,还不一样把 C 语言学完了。虽然过了些年,我才把数学

2012-08-21 20:35:40 601

原创 ZOJ1004

压入栈的操作。递归的终止情况为push=pop=lenth坑爹的是每一个i和o后面都有空格,最后一个也有。交的时候老Presentation error...找了半天,才知道。能压入的就不断的压入,不能压了就开始弹。AC代码:#include#include#define Max 100char goal_str[Max];char source_str[Max];c

2012-08-20 21:43:35 3152 4

原创 UVa140

计算带宽,就是进行输入处理有一点的麻烦。枚举所有的排列,算出最大带宽最小的排列。看算法竞赛入门书上说有剪枝的方法。不知道怎么去写,哪位高人知道的可以指点一下。#include#include#define Arsize 28int maps[Arsize][Arsize];int arrays[Arsize];int order[10];int a[10];int ans

2012-08-20 17:55:31 791

原创 UVa216

纯粹枚举枚举所有排列,记录最小的距离。不过貌似有单源最短路径算法。#include#include#define Maxnode 9#define INF 100000int ans[Maxnode];int a[Maxnode];double distance[Maxnode],ansdistance[Maxnode];int nodes;double maxdist

2012-08-20 17:53:06 503

原创 UVa193

用二色染图,黑色不能相邻,求最多染多少个黑色的点。一开始没考虑剪枝,也一看100个点估计一个一个点找就直接TLE了,不知道怎么去优化,后来google下,别人都说可以直接暴搜,一个点一个点的染。写了一下,一个点一个点的染,一开始还是考虑相邻点染的,结果写完后也没什么剪枝就直接TLE了,参考下别人代码,发现所有点都要染,就可以从点1直接染到点n.这样就可以剪枝,因为如果还剩m个点没染,但

2012-08-19 22:43:50 683 1

原创 UVa208

越做题目越上瘾。最近在做搜索和DP,这个题目看就是直接深搜+回溯就行了。写完直接TLE了,因为没有剪枝,总共有21个节点,还是太大了,一般都在8个节点左右的话貌似不剪枝都能过。原来先要预处理一下,只考虑和目标站在一个连通块的点就行了。也就是求一个点的连通块。写完了AC0.004s。果然剪枝不剪枝的终于见识到巨大威力了。#include#include#define MAX

2012-08-19 16:42:05 1295 1

原创 UVa10344

由5个数算23点的问题。另外还引申了一个4个数算24点的加括号的问题。到底有多少种。有想清楚的同学可以交流下...自己才疏学浅。只考虑一种加括号的形式,一开始没弄懂这句话什么意思。写了一个所有加括号的情况。相当于暴搜,把所有情况,所有加括号的形式写出来。#includeconst int goal=23;int arrays[5];using namespace std;b

2012-08-18 23:31:13 633

原创 UVa391

简单的深搜题。果然题目做得越多越有感觉。。只要把每一个账单是否取搜一遍就行。取的时候看下满足不满足条件。#include#include#define MAX 23struct node{ int start,end; int people;}train[MAX];int station[8];int vis[MAX];int passengers,maxvalue,

2012-08-18 14:11:13 489

原创 hdu1176

http://acm.hdu.edu.cn/showproblem.php?pid=1176可将所有的时间段和馅饼看成是一个矩阵,时间就是行数,掉馅饼的就是列数,则就是数字三角形问题,从最底层找一条路径,使得路径上的和最大。状态转移方程为:dp[i][j]=max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j-1])+pie[i][j]。pie[i][j]为时间i时在

2012-08-17 10:48:39 3121

原创 hdu1087

http://acm.hdu.edu.cn/showproblem.php?pid=1087看了几天DP,自己第一次自己想出来,主要还是和LIS很类似。就直接想出来了,所以多做题目还是有帮助滴。想到LIS的DP方程,此题目类似:dp[i]表示以value[i]结尾的最大分数。则状态转移方程为dp[i]=max(dp[j]+value[i],value[i])   其中(value[j]

2012-08-15 21:44:45 3607

原创 hdu1466

http://acm.hdu.edu.cn/showproblem.php?pid=1466求n条直线有多少种交点数,,采用DP做法,自己一开始还老想第i条直线和前i-1条直线的关系,理不清楚,不知道怎样找方程。后面参考了别人代码,自己才AC过。采用数组dp[i][j]。若dp[i][j]==1,则说明放i条直线有j个交点,则只需要把dp[n][i]从i=0到i=190扫一遍,因为20

2012-08-14 22:11:29 1589

原创 POJ2533

题目:http://poj.org/problem?id=2533LIS最长上升子串问题。采用DP来解,一种是朴素的解法O(n^2)的。用dp[i]表示以a[i]结尾的最长上升子串的长度。则转移方程为dp[i]=max(1,dp[k])(0AC代码:注意n=0的时候最长子串为1.。。擦,这点老没想通,坑了N久。还是看Discuss里面的。#include#define Ars

2012-08-12 16:52:25 632

原创 POJ1157

题目:http://poj.org/problem?id=1157大意为F束花插入V个瓶子里面,花要按编号插,不同花插入不同的花瓶有不同的美观程度,要求最大的美观程度。采用DP做法。此题有两种解题,两种不同状态函数的表示。一种f[i][j]表示第i束花插入第[j]个瓶子里面所获得的最大的美观程度。则状态转移函数可以表示为f[i][j]=max(f[i-1][k]+a[i][j])其中i

2012-08-11 16:55:26 2846

原创 POJ1088

http://poj.org/problem?id=1088滑雪。意思就是找到一条最长的滑雪路径,想到应该用DP来做,因为找到最高点的最长路径需要先找到它周围四个 点的最长路径。(这四个点都是可滑下去的),就出现了最优子结构,而找某一个点的最长路径的时候找其周围点,周围该点有可能被找多次,就出现了重叠子问题情况,就开始考虑用DP。状态函数f[i][j]表示以(i,j)为终点的最长路径,所以状态

2012-08-11 14:45:40 523

原创 POJ1664

http://poj.org/problem?id=1664放苹果问题,m个苹果放n个盘子,盘子可以为空,1,1,5和5,1,1为同一种放法。f[m][n]表示m个苹果放n个盘子里面此问题可分为两个子问题:当m所以m当m>=n时,可分为两种放法,一种为至少有一个盘子为空,则有f[m][n-1]种放法。另外为n个盘子都不为空,则先将n个苹果一个一个放入n的盘子中,剩下的m-n个苹

2012-08-10 23:30:53 2328

原创 POJ1651

题目:http://poj.org/problem?id=1651是n个数相乘,每次从中抽取一个数出来与相邻两个数相乘,直到抽到只剩两个数字,第一个数和最后一个数不能抽。遇到这题又犯迷糊了,知道应该用DP做,就是不知道怎么方程,和矩阵链相似又不相似,后面又看了一下矩阵链,才发现其实题目原型就是一个矩阵链。序列就是相当于N个矩阵相乘,求乘法次数最少,直接按算法导论上写就行了。AC代码:

2012-08-10 17:00:48 3146

原创 UVa539

题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=480UVa539,求无向图的最长路径采用逐个点深搜的方式,找到一条路径,维护最大值#include#include#define MAX 26int map[MAX][MAX],v

2012-08-09 18:24:19 591

原创 uva 639

一道类似于8皇后的回溯题。一开始老想不通怎么回溯,准备直接暴力的,估计都会TLE。也没写。参考了下别人代码,八皇后为逐行填写,此问题因为有墙,所以同一行可以放置,应该从左到右依次放子题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=580AC

2012-08-07 21:23:11 902

原创 HDU1003

这个题目WR了N多次。。一开始看见100000的输入想采用O(n2)的算法。。直接TLE了。。今后估计这样太的数据应该采取O(n)或O(nlogn)的算法的。原题:http://acm.hdu.edu.cn/showproblem.php?pid=1003因为数据结构书上第一个算法分析实例就是这个题,也没怎么仔细看就直接写了,结果老WR,结果才发现书上的只针对Maxsum为正数的时候才

2012-08-05 20:21:54 8084

空空如也

空空如也

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

TA关注的人

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