随笔分类 -  acm 搜索

上一页 1 2
hdu 2199 Can you solve this equation? (二分)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2199 简单二分查找,应该属于水题了吧...纠结的是样例没过,一试竟然AC。 这两天状态太差了,发生这么多事,有点不知所措的感觉。现在都过去了,感觉还是挺烦燥...只能从头加深下搜索了。code:#include<iostream>#include<cstdio>#include<cmath>#include<iomanip>usingnamespacestd;doubley;doublel,r,m;doubleslove(doublex){return8*po 阅读全文
posted @ 2012-02-14 22:42 追逐. 阅读(187) 评论(0) 推荐(0)
hdu 1242(bfs)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1242 读完题第一个想法就是以每个friend的位置为起点依次bfs出step,取最小值。提交后WA,修改再提交TLE。这题是多对一的搜索,反过来就是一对多,第一个搜到的friend所需的step即为最小值。改完后再提交依旧WA...看了下别人的解题报告,基本都是用的优先队列,无奈看了下优先队列的内容,发现也不是想象中那么复杂。在struct中加上了自定义优先级operator<稍微一改便AC了。猛然发现优先队列这么好用... C++提交 Exe.Time31 MS Exe.Memory 288k G+ 阅读全文
posted @ 2011-11-30 17:40 追逐. 阅读(309) 评论(0) 推荐(0)
hdu 1728(bfs)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1728 这题主要是解决一个多次访问取最优(转向次数最少)的问题,用vis数组记录每次访问的转向次数,当出现跟优解时此点再次入队。#include<cstdio>#include<queue>#include<iostream>usingnamespacestd;intm,n,lim,si,sj,ei,ej;inttur[5][2]={0,0,0,1,0,-1,-1,0,1,0,};charmap[101][101];intvis[101][101];structnode{i 阅读全文
posted @ 2011-11-29 21:18 追逐. 阅读(314) 评论(0) 推荐(1)
hdu 1253(bfs)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目不难,简单的BFS加一点剪枝,不过让人郁闷的是用G++提交一直CE,用C++一次AC。最后还是XSY发现的问题,将我保存时间的变量time改成了T然后就A掉了... 这下是记住了,以后再也不用time这名了!#include<cstdio>#include<queue>usingnamespacestd;inta,b,c,T;intmap[51][51][51];inttur[6][3]={-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,1,0,0,-1};st 阅读全文
posted @ 2011-11-29 19:09 追逐. 阅读(245) 评论(0) 推荐(0)
hdu 1072(bfs)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1072 一开始看着题目太长,不想读了,就问了下XSY题意。可惜交流了半天也没弄清楚具体细节问题...无奈又回过去重新读了遍题。看来读题还是得自己做啊... 做的BFS题不多,队列的性质还没用熟练。#include<cstdio>#include<queue>#include<cstring>usingnamespacestd;inttur[4][2]={{1,0},{-1,0},{0,1},{0,-1}};structPoint{intx,y,time,step;};int 阅读全文
posted @ 2011-11-26 22:00 追逐. 阅读(285) 评论(0) 推荐(0)
hdu 1010(dfs)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1010做的非常恶心的一题,一个脑残错找了N久,剪枝后还是那么慢...#include<iostream>#include<cstdio>usingnamespacestd;charstr[10][10];inttur[4][2]={{-1,0},{1,0},{0,-1},{0,1}};inte,n,m,t,di,dj;intabs(inta){returna<0?-a:a;}voiddfs(inti,intj,intct){if(i==di&&j==dj& 阅读全文
posted @ 2011-11-26 19:29 追逐. 阅读(182) 评论(0) 推荐(0)
hdu 1372 & poj 2243(bfs)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1372http://poj.org/problem?id=2243 擦了个擦的,N久前在杭电上做的这题0ms,到poj上一交直接超时!poj根本不让用stl啊。。 没办法,只能模拟队列又乱敲了遍。code1:#include<cstdio>#include<queue>usingnamespacestd;charbstr[3],estr[3];intb[2],e[2];inttur[8][2]={-1,-2,1,-2,-2,-1,2,-1,-1,2,1,2,-2,1,2,1};stru 阅读全文
posted @ 2011-11-26 17:51 追逐. 阅读(209) 评论(0) 推荐(0)
poj 3628(01_page, dfs)
摘要:http://poj.org/problem?id=3628 读完题感觉就是一01背包,仔细想想确又没什么好的思路,感觉只能暴力水水... 看了下discuss里讨论的,写了第一个代码#include<cstdio>#include<cstring>usingnamespacestd;intheg[21];boolf[20000001];intmain(){intn,h,i,j;while(~scanf("%d%d",&n,&h)){intsum=0;intmin=200000000;for(i=0;i<n;i++){scanf 阅读全文
posted @ 2011-11-20 22:03 追逐. 阅读(264) 评论(0) 推荐(0)
poj 3302 Subsequence
摘要:题目链接:http://poj.org/problem?id=3302 题意: 给定两个字符串,求第二个字符串是否为第一个字符串正向或反向的子串。 直接按s2中的字符在s1中搜索,有两个地方要剪枝,一是当s2的长度大于s1时,还有当s1剩余字符无s2的当前字符时。#include<cstdio>#include<fstream>#include<iostream>#include<cstring>usingnamespacestd;intn,i,j;chars1[101],s2[101];boolis_sub(){ints1_len=strlen 阅读全文
posted @ 2011-09-11 23:13 追逐. 阅读(281) 评论(0) 推荐(0)
poj 1321 棋盘问题(dfs)
摘要:题目链接:http://poj.org/problem?id=1321 按行搜索,当前棋格所在列无棋子且当前位置可放棋子时搜索下一位置(k-1)。若当前行无法放置,搜索下一行(k)。代码:#include<iostream>#include<cstring>usingnamespacestd;chara[8][8];boolb[8];//记录第i列是否放了棋子intcount,n;intdfs(intr,intk){if(k==0){//所有棋子放完则产生一个新方案count++;returncount;}if(r>=n)returncount;//搜索完毕for 阅读全文
posted @ 2011-09-01 22:39 追逐. 阅读(191) 评论(0) 推荐(0)
poj 2488 A Knight's Journey (dfs)
摘要:题目链接: http://poj.org/problem?id=2488题意: 棋子按象棋中马的方式在棋盘中跳,给定棋盘的大小,求能使棋子走遍每个棋格且每个棋格只走一次的方案,要求是字典顺序最小的方案。 看到要求字典顺序最小,便单纯的想dfs出所有解然后字典排序。看了解体报告才知道自己多么幼稚......可以先定义好棋子跳动的顺序,使其为字典最小序列。代码:#include<iostream>#include<cstring>usingnamespacestd;intc,r;boolb[30][30],bl;charstr[100];intmove[8][2]={{-2 阅读全文
posted @ 2011-08-31 23:14 追逐. 阅读(226) 评论(0) 推荐(0)
数组实现队列
摘要:数组、链表实现队列、栈-->http://acm.sdut.edu.cn/BBS/read.php?tid=3461粘一个看得懂,感觉比较实用的(其实别的都看不懂...)1#include<stdio.h>2#include<string.h>3intmain()4{5inta[1000],i,top,end1,b[1000],end2;6intm,n;7charstr[8];8top=end1=end2=0;9scanf("%d%d",&n,&m);10for(i=0;i<n;i++)11scanf("%d&q 阅读全文
posted @ 2011-08-20 20:27 追逐. 阅读(207) 评论(0) 推荐(0)
bfs 街道赛跑
摘要:题意: 给定一个由箭头组成的赛道,箭头起始点有标号,运动员从0点出发,只能沿箭头方向跑,到下一点后,可选择任意箭头继续跑。路线有以下特点: 1,每一点都能从出发点到达 2,每一点都可到达终点 3,终点无向外的箭头运动员要到达终点,不要求经过路线上所有点。但路线上有些点为必经点。若比赛分两天进行,要把赛道分成完全分离的两部分,这两部分只有一个分裂点有重合。 一. 找到所有必经点 二. 找到所有分裂点输入: 前n行,每行输入的数字为i点出发的箭头可到达的点,以-2结束 最后一行为-1,表示输入结束输出: 第一行输出必经点个数和所有的必经点 第二行输出分裂点个数和所有的分裂点先从路线中删除i点,用d 阅读全文
posted @ 2011-08-20 15:59 追逐. 阅读(289) 评论(0) 推荐(0)
优化枚举法
摘要:题意: 有N座环形分布的城市,相邻城市编号相邻,现要建一座酒厂,每个城市对酒的需求不同,每桶酒每千米运费为1元。给定n各城市,所需酒的桶数以及城市间的距离,求酒厂建在哪个城市可使得运费最小。输入: 第一行为n,代表城市个数。以下n行分别有两个整数,代表第i个城市每日需酒量和与下一座城市的距离。输出: 输出最小运费。 可以使用枚举法,枚举酒厂在各个城市的情况,计算出相应运费得出最小值。也可简化计算,得出建在某一个城市的运费后可以依次推出其他可能的运费。将环形分布的城市根据距离当前酒厂的位置划分为两个区域,ld代表逆时针区域需求量,rd代表顺时针区域需求量,当酒厂从i移动到i+1后,逆时针区域城市 阅读全文
posted @ 2011-08-20 11:11 追逐. 阅读(536) 评论(0) 推荐(0)
枚举法
摘要:题意: 长为L的月台上有M个人,每人与月台左端距离为Pi,有一列N个门的火车,每个门与最左端的距离为Di。已知每个人会选择离自己最近的车门上车,求火车停靠什么位置能使得所有人的移动距离和最大。输入: 第一行位L,M,N,第二行为Pi,第三行为Di。输出: 火车停靠的位置和所有人移动的最长距离和。 要使乘客移动距离最大,则应尽量使更多的乘客正对两个车门中央。初始时,最少可保证一个乘客正对车门中央,然后枚举所有满足此条件火车停靠的位置,计算最大移动距离。当火车停靠最左或最右端时,无法保证上述条件,所以要单独计算,最后与answer比较大小。#include<iostream>#incl 阅读全文
posted @ 2011-08-20 10:33 追逐. 阅读(935) 评论(0) 推荐(0)

上一页 1 2