自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Aszxqw

新博客地址 http://yanyiwu.com

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

原创 POJ1493 Machined Surfaces

题意:就是将中间的空格合并,问最后剩下几个空格。直接看范例就懂了,看题目描述还比较蛋疼。思路:其实本质就是统计一下每行空格数字,找出最小值。然后剩的值即是sum[每行空格数-最小值]。#include#include#include#include#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))

2012-02-02 13:24:29 1238

原创 POJ1450 Gridland [找规律]

题意:本质就是要你用一根线将给定的点连起来,这根线最短是多少。思路:我在纸上画了[2 2][2 3][3 3][3 4][4 4][4 5][5 5][3 5]这几个例子。从这几个例子就够找出规律了其实。然后写代码。一次AC。#include#include#include#include#define max(a,b) (a>b?a:b)#define ab

2012-02-01 22:40:16 994

原创 POJ1350 Cabric Number Problem [模拟]

思路:对这种整数的各个位上的数字之间的操作还是习惯用类似左移右移的方法,即/=10,*=10的方法写。感觉这样写思路清晰。AC后找了网上别人的代码想对比,这样写代码也精简得多,而且不需要什么字符串的处理。#include#include#include#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#defin

2012-02-01 19:41:21 862

原创 POJ1338 Ugly Numbers 丑数 [数论]

题意:质因子只有2,3,5的树为丑数。求出从小到大的1500个丑数。思路:数论一般都是从数规律找起,从范例中可以看出。2=23=34=2x25=56=2x38=2x2x29=3x3...很容易可以看出其实就是将2,3,5进行排列组合树1到1500之间的各个数(y=(2^a)*(3^b)*(5^c))。从小到大存入一个数组。但是在模拟这个递推过

2012-01-31 15:02:34 1702

原创 POJ1316 Self Numbers

思路:对数的递推过程其实就是数的十进制右移。特简单,看代码即可。#include#include#include#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#define min(a,b) (a<b?a:b)using namespace std;const int N=10000;int n

2012-01-29 15:42:38 1215

原创 POJ1298 The Hardest Problem Ever

无比简单的水题。但是输入一行字符的操作还不是很熟练,基础真不扎实。#include#include#include#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#define min(a,b) (a<b?a:b)using namespace std;const int N=105;int n,m;cha

2012-01-29 15:10:17 895

原创 POJ1318 Word Amalgamation 简单模拟

题意:其实就是找匹配,先给定n个字符串形成一个字典库,然后再给你任意一个字符串,问你这个字符串经过字符随意组合能形成多少个字典库里面匹配的字符串。思路:因为字符串最长长度为6,库的大小最大为100,所以时间复杂度上要求很松。不需要什么算法处理,简单的匹配模拟即可。一次AC。#include#include#include#include#define max

2012-01-29 14:36:22 1178

原创 POJ1250 Tanning Salon 简单模拟

题意:给定几个床位,规定每次客人进来的时候,如果有床位即开始服务,如果没床位就走人。问走了多少个客人。思路:其实这道题非常简单,wa的原因往往是自己想复杂了,比如题意有一点要明确就是上面所说的如果没床位就走人,即使从序列中看他还没走,看上去好像是在排队,其实即使排队的过程中前面有占着床位的人走了,排队的人也不会补上去。这里不知道就坑了多少英雄好汉。所以,ans只和当n=0,

2012-01-29 01:14:26 840

原创 POJ1975 Median Weight Bead [Floyd]

题意:给定一个奇数n,和m组两数之间的关系。问可以排除多少个可以确定非中位数的数。思路:floyd传递闭包。一次AC。有点太水了这题。#include#include#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#define min(a,b) (a<b?a:b)using namespace std;

2012-01-28 12:35:04 842

原创 POJ1962 Corporative Network 并查集

题意:给定原来孤立的n个点。然后进行两种操作:E i:查询第i个点到它的根节点的距离(mod1000),孤立点的根节点是它自己。I i j:将节点i接到节点j上。思路:并查集。但是要申请一个数组来代表每个点的权值,优化一下时间,否则TLE。其实优化的本质按标准范例说明如下:如果是没有权值的并查集构成的链为3->1->2->4这样。查询3的时候都从3到4要运算3次加法

2012-01-27 02:00:40 1072

原创 POJ1959 Darts 暴力

其实就是很简答的枚举题,O(63*63*63)的复杂度。#include#include#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)using namespace std;int n;int data[64];void init(){ for(int i=1;i<=20;i++) { data[i]=i

2012-01-25 23:04:14 955

原创 POJ1952 BUY LOW, BUY LOWER DP

题意:给一串数字,求最大的严格下降子序列,且还有求出这种序列的个数。但是同时要注意重复序列只算一个。比如 5 5 4 4 3,只有一种5 4 3.答案是3 1. 思路:对于严格单调子序列。算是很简单了吧。直接O(N^2)的复杂度实现即可。至于找次数,其实本质也是DP,具体见代码。#include#include#define max(a,b) (a>b?a:

2012-01-25 19:34:09 744

原创 POJ1742 Coins DP

题意:给n种硬币,每种ci个。问在1到m的范围内,有多少种面值的硬币组合。思路:取一个bool dp[m]的数组。true代表可以取到,false代表不能取到。当取到val[i]时,假设1到i-1可以构成最大值为mx,最小值显然为0.所以当取now=val[i],对dp的影响区间为[now,mx+now].枚举nowif(dp[j-now])dp[j]=true;代

2012-01-25 02:08:20 913

原创 POJ1740 A New Stone Game 博弈

题意:给定n堆石子,比如n=3,pile=(4,5,7),表示第1,2,3堆分别有石子4,5,7个。Alice和Bob进行取石子游戏。总是A先move。每次move:1.必须选中某堆:2.在该堆中移除至少1个石子。(必选操作)3.将该堆中的石子任意个数移到任何其他非空石子堆里去。(可选操作)最当AB都有最优策略进行游戏时,最后胜者是谁。思路:1.

2012-01-23 17:23:02 851

原创 POJ1699 Best Sequence DP DFS

题意:给定几个长度为L的基因序列,问同时包含这几个基因序列的最小序列长度。思路:注意到拼装的过程中,基因序列i和基因序列j的关系无非是谁在前,谁在后。所以DP一下:取一个dp[i][j]代表:基因i直接接在基因j前面时,叠加后的长度-4的值。比如i=ATGC;j=GCTA;则dp[i][j]=2.然后对dp[i][j]进行枚举即可,因为我们要的是一个连贯的序列,

2012-01-23 14:27:57 1231

原创 POJ1664 放苹果 递归

题意:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?思路:我用的是很纯朴的递归法。分别在纸上自己枚举7 3和7 4的各种情况。就发现其实是有规律的。你枚举的过程就会发现其实是一棵树,深度为n。所以可以直接用dfs解。#include#include#define max(a,b) (a>b?a:b)#define

2012-01-23 00:22:19 613

原创 POJ1456 Supermarket 贪心 DP

题意:给定一批product,每个product有相应的profit和deadline,销售出一个product需要1单位的时间。问如何销售这些商品可以使获得的利润最大。思路:贪心算法。但是首先有一个误区需要注意:每个商品的deadline,比如d=5,这个参数表明的是从1到5这个时间内都可以销售这个商品。比如有:d=2,p=20;d=2,p=30;

2012-01-22 14:44:24 748

原创 POJ1322 Chocolate DP

题意:c种巧克力,每种数量无穷大,取出n个放桌上,如果出现同种巧克力的就必须吃掉,即桌面上同种巧克力只能有0个或者1个。问取出n个后剩余m种巧克力的概率。思路:显然不可以直接枚举,需要用dp。用每次取之后桌面上的巧克力种类数量做状态,容易写出状态转移方程如下:dp[i][j]=dp[i-1][j-1]*(c-j+1.0)/c+dp[i-1][j+1]*(j+1.0)/c;因

2012-01-21 23:53:03 1631

原创 飞思卡尔智能车HCS12芯片学习笔记

编译器:Freescale CodeWarrior,其中的上横线都未标出。如IRQ字母上面本来应该有一个横线。一:I/O普通IO口一般就用porta和portb,主要就下面两句:DDRB=0xff;//设置为输出PORTB=0x00;//置为低电平二:InterruptS12系列配备一个标记为IRQ的外部中断,该引脚出现低电平或者电平下降沿时,则会产生中断请求。

2012-01-20 14:27:01 4415

原创 POJ1163 The Triangle DP简单题

相当简单了吧这道题。随便写了一下就submit,以为还会有什么陷阱,然后居然直接就ac。#include#include#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)using namespace std;const int N=105;int mat[N][N];int dp[N][N];int n;int ma

2012-01-18 23:50:34 598

原创 POJ1157 LITTLE SHOP OF FLOWERS DP

题意:题目说得很文艺,其实很简短的几句话就可以说清楚了。给你一个二维矩阵,每行取一个数,满足取的数的位置从上到下的同时是从左到右。即在第i行取第j个数的话,在i+1行则不能取第1到第j个数。问取的这些数的和最大值是多少。思路:看到这种二维矩阵找数字本能反应就是DP了。很容易就可以写出状态转移方程:dp[i][j]=max(dp[i-1][j-1]+mat[i][j]

2012-01-18 23:14:40 459

原创 POJ1083 Moving Tables

一个过道,两边是要移动桌子的房间,过道很窄,每次只能移动一张桌子。问最快的移动时间是多少。思路:其实就是占用的问题,每次移动都占用固定的几个格子。只要统计一下占用次数最多的格子数量,再乘以10即可。#include#include#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)using namespace std;

2012-01-17 20:02:57 461

原创 POJ1248 Safecracker 暴力

题意:给一个密码值,给一串字符,挑出六个字符经过运算之后刚好为密码值。思路:很水很暴力。#include#include#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)using namespace std;int n;int ans;char data[15];char prt[10];bool cmp(char

2012-01-12 13:41:05 1296

原创 2011年终

每次到年终的时候我都有不少话想说。但是每年我都希望说得让关心我的人知道我过得很好,让讨厌我的人以为我过得不好。因为我的无耻和善良,我希望上面两者皆大欢喜,没有人因此不开心,但是往往琢磨到最后是一句话都说不利落。今年敞开说。今年承蒙各路大神看得起,在上个学期参加了两个校内项目。从暑假开始,顶着几个在家哥们麻将求虐的诱惑那么晚才回去。说起来我就老泪纵横。

2011-12-31 14:06:18 597

原创 POJ1207 水题

思路:其实很道路很水,显然如果增大的话是3的指数增大,所以即使n=10000,但是其实回归到1的时间也只是log的时间而已。所以可以直接暴力打表。写递归只是练习一下记忆化搜索。感觉DFS的基础真是不扎实。菜啊。最恶心的是给的数据范围有可能是坐边数字大于右边。因此wa了好多次。。#include#define max(a,b) (a>b?a:b)using names

2011-12-17 11:51:54 478

原创 BOJ262 Channel Coding DP

题意:给一串数字,里面只包含0 -1 1三种数字。问和为0的最长连续子串。思路:遍历一遍,求每个i的sum[i],代表从第一个数字到这个数字的和。显然如果sum[i]=sum[j],则从i+1到j这j-i个数字的和=0。即次数所求的D=j-i-1。#include#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:

2011-12-15 19:18:42 459

原创 POJ1118 Lining Up 计算几何

题意:给你一个二维坐标上的几个点,问在同一条直线上最多几个点。思路:N=700,刚开始我枚举两个点i,j。(两个点一条线),然后用k枚举一遍各个点。这样算出每条线上最多的点。用了O(N^3)的超时了。我真是太天真了。其实在枚举每个k的时候就可以想到。k明显有一些可以优化的地方。优化:之前是枚举每条线,现在是枚举每个点,对于每个点i,求i和其它所有点的斜率。找出斜

2011-12-06 21:33:23 536

原创 POJ2828 Buy Tickets 线段树

思路:查看了网上不少博客,感觉都写得很朦胧,都说从后往前插。这个倒好理解。但是很多都没说清楚为什么用线段树,用的思路。搞得我一头雾水。毕竟是刚接触线段树,对线段树理解也不够。今天晚上硬着头皮推敲。终于有点思路了。我的理解:就例子 0 201 191 380 31从后往前插。首先是0 31.位置是精确的就是在第0位。然后是1 38.38想插在第1位

2011-12-04 13:20:18 454

原创 POJ1007 DNA Sorting 水题

题意:给你一个DNA的序列,给定逆序数的定义,叫你按逆序数从小到大排序输出。其实很简单。只不过为了排序,弄个结构体出来比较方便。#include#include#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)#includeusing namespace std;const int N=55,M=105;in

2011-12-03 16:59:51 835 3

原创 POJ2777 Count Color 线段树

题意:给一个固定长度为L的画板有两个操作:C A B C:区间AB内涂上颜色C。P A B:查询区间AB内颜色种类数。思路:首先显然是要线段树。每个节点有如下参数:l,r 表示区间。int color表示颜色,对于颜色要用位运算。刚开始我的做法是对于每个C操作,就更新区间为AB的节点及其所有子节点。然后TLE了。其实本质原因是

2011-12-01 23:17:21 2907 1

原创 BOJ1923 Hector的面试 I 贪心

题意:水晶数g,农民数目p,每个农民的造价c,起始状态金钱数m,游戏结束的秒数d。每秒每个农民可以制造g个水晶。制造农民不需要时间,任何时刻都行。思路:刚开始以为是dp。其实不然。每一秒内都有固定的p[i]、m[i]。i=0,1,2,3......d;任何时刻都可以生产农民。讨论对于第i秒内,可以生产农民数目为:x=0,1,2,3.....xmax.;(xmax=m[i

2011-12-01 20:13:33 1131

原创 BOJ1131 Crazy tea party 冒泡排序变形

题意:给一行数字,只能相邻的两个交换位置。为交换多少次之后能使得这行数字里的每个数的左右数字交换。(reverse)。注意!这行数是不是在一行里,是around the table ,即是一个环。思路:如果这个不是环的话,很显然,就是冒泡排序。1 2 3 4 5冒泡排序成5 4 3 2 1 交换次数是n*(n-1)/2。但是关键点也是蛋疼点就是这个是环:当时做的时候是写了不少数组都算看

2011-12-01 17:10:24 1169

原创 BOJ1293 小马过河 dp

题意:给一个矩阵。从上到下一样,(题目里说的是从下到上,但是其实一样)代码里面就是从上到下考虑。每一行到下一行都只有三个选择,左下,下,右下。所以转移方程为:dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1])+w[i][j];因为dp还很不熟练。刚看到题目的时候其实第一反应是类似广搜的去模拟一下差不多,反正每一格只会影响下一行的

2011-12-01 16:34:47 1264

原创 BOJ1499 合法食物链 floyd

题意:很好懂。其实就是大小关系,如果a>b ,b>c 如果再出现个c>a即不合法。思路:floyd传递闭包。floyd的典型应用了。floyd处理之后,如果mat[a][a]=true,即可说明出现了闭环。即不合法。#includeusing namespace std;const int N=105;int n,m;bool mat[N][N];void flo

2011-12-01 16:21:26 1083

原创 BOJ1509 海边 dijstra 最短路

题意:这题题目写得够坑的。前面一大串都是无关信息。其实很简单,就是在二维坐标里面给出若干个圆(阴影),给出起始点和终止点。问从起始点到终止点,怎么走可以使暴露在非阴影下的路径最短。输出最短路的值。思路:其实很简单,刚一看,设计到圆面积感觉比较有点蒙,其实圆可以当成点来处理,如果要进去某个圆。则朝着这个圆的圆心的直线方向走肯定是最短。所以就可以抽象成一个图。每个圆也是一个点。

2011-12-01 16:16:38 999

原创 POJ3264 Balanced Lineup 线段树基础

第一次接触线段树。题意:又见farmer john。有N只牛,每只牛都有它的身高。给出任意一个区间[i ,j],叫你求出这个第i只牛到第j只牛这些牛中身高最高的和最低的差值。思路:线段树。每个树节点有参数:L=区间左值R=区间右值MAX=区间内身高最大值MIN=区间内身高最小值#include#define max(a,b) (a>b?a:

2011-11-29 09:07:30 649

原创 POJ1887 Testing the CATCHER 最大下降子序列 DP

思路:裸的最大下降子序列#include#define max(a,b) (a>b?a:b)using namespace std;const int N=10010;const int inf=32770;int num[N],dp[N];int n;int solve(){ int ans=0; memset(dp,0,sizeof(dp)); num[0]=inf;

2011-11-27 21:58:33 1376

原创 POJ3096 Surprising Strings 水题

题意:给定一个字符换,给定surprising的定义。要求判断是否。思路:水题。因为很久没用map了,特地用下map。#include#include#includeusing namespace std;string str;int main(){ while(cin>>str,str!="*") { bool flag=true; for(int i=

2011-11-27 10:58:01 798

原创 POJ3670 Eating Together LIS DP

LIS的简化版。#includeusing namespace std;const int N=30005;int n;int data[N];int stack[N];int sp;inline void insert(int dat){ int head=1,tail=sp-1; int mid; while(head<tail) { mid=(head+tai

2011-11-26 23:33:42 490

原创 POJ1036 Gangsters DP

题意:一群匪徒要进入一个酒店。酒店的门有k+1个状态,每个匪徒的参数是:进入时间,符合的状态,携带的钱。酒店的门刚开始状态0,问最多这个酒店能得到的钱数。思路:dp数组为DP[T][K].转移方程dp[i][j]=max(dp[i-1][j],dp[i-1][j-1],dp[i-1][j+1])因为转移i只跟i-1有关,所以可以用滚动数组dp[2][k].其实这道题的转移方

2011-11-26 19:42:23 774

空空如也

空空如也

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

TA关注的人

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