- 博客(65)
- 收藏
- 关注
原创 hdu 1839:Delay Constrained Maximum Capacity Path
1点是珍贵矿场,N点是矿物加工厂,xian'zai
2014-04-06 00:50:37
402
原创 hdu 3665:Seaside
XiaoY住在0城,要到在海边的城市去,求到海边城市的最短路径。最短路。小数据量floyd直接过。代码:#include #include #include using namespace std;const int inf=0x3f3f3f3f;int n;bool sea[15];int map[15][15];void init(){
2014-03-28 23:52:01
390
原创 hdu 1710:Binary Tree Traversals
给出几组二叉树的先序和中序遍历的节点序列,求出该二叉树的后序遍历序列。先序遍历中第一个一定是根节点,然后找先序遍历中下一个节点在中序遍历中是在根节点的左边还是右边,左边则该节点在根结点的左子树中,右边则在右子树中。根据该节点在根结点的哪一侧往那侧找,如果那一侧没有节点,就把这个节点添加上去,否则以那个节点为根节点继续查找,直到构建完整个二叉树。最后用后序遍历输出二叉树。代码
2014-03-28 23:22:29
462
原创 poj 1258:Agri-Net
大意是Farmer John有几块农场,他要把农场连接起来,问最短长度是多少。最小生成树问题,prim水过。。。然后WA了三次,错在一个很无聊的地方。。。代码:#include #include #include using namespace std;const int inf=0x3f3f3f3f;int n,ans;int mm[105][105];
2014-03-24 23:38:47
410
原创 poj 1062:酋长的聘礼
中文题。WA了不少次,其实spfa简单可以过,关键是错在建图上了。正向建图,设每个礼物为t,每个礼物的自身价值别放在(t,t)上,放在(t,0)上,把0当作一个结束点去算。然后枚举每一个可行的等级区间,把0的等级包括在枚举的区间内,然后spfa,取每一次枚举后dis[0]的最小值,即是答案。代码:#include #include #include #includ
2014-03-23 22:46:42
495
原创 poj 2253:Frogger
大意是一只青蛙要从一点到达另一点,要求中间跳的过程中每一次的最大跳跃距离最小。最短路spfa稍微改一下就行了。看网上大都是当连通图用floyd做的,没试过,不过感觉上是可以过得。代码:#include #include #include #include #include using namespace std;typedef struct node{
2014-03-22 01:22:20
398
原创 poj 1502:MPI Maelstrom
大意是有一条消息要从第一个处理器发送到其余各个处理器,求最长所需的时间。比较基础的最短路问题,spfa一次过。不过这道题目数据给出的方式比较奇特,它给出的是一个下三角矩阵,且没有给出主对角线上的数据。由题意知把对角线上的数据记为0,然后矩阵关于主对角线对称一下。数据中有字符x,表示无法连通。这种情况下用scanf("%s",ch)+atoi(ch)的方式可以解决。代码:
2014-03-21 22:04:32
522
原创 lightOJ 1002:Country Roads
大意是给定若干个城市,若干条道路,其中有一个城市是“我”的家,求从各个城市到达家的所有道路中的最短道路中的花费最大的一段路。用dijkstra算法做,只要把原来的判断条件改一改就行了。至于航神说的方法,判断条件dis[j]>当前边,我觉得是不能过的吧。不过航神嘛,总有办法的。最后的赋值语句参考了松神的代码,学到了好多。这道题一开始是用spfa做的,当时过样例的时候有点问题,后来就改为d
2014-03-10 01:22:37
656
原创 psdn 1112:最少操作数
给定一个数,两种操作方法:1、奇数时加1或减12、偶数时除以2求将这个数变成1所需的最小操作数考虑二进制。每个数都化成二进制数,如果这个数为偶数,直接右移一位;如果为奇数,判断二进制下最后三位是否是连续三个1,是就+1,不是就-1。其实当时拿到这道题一开始想到的也是bfs,不过大家都做bfs感觉没什么意思,突发奇想想出了这个方法。不过倒是没什么信心啊,虽然感觉是对的
2014-03-09 02:34:48
913
原创 hdu 3999:The order of a Tree
给定一串数字,以二叉排序树的形式储存,输出它的最小字典序序列。不管怎么看都是二叉排序树的先序遍历,简单的题。第一次尝试用类来做,一次就过,好高兴(^o^)丿#include #include using namespace std;class node{private: int k; bool head; node *l,*r;publi
2014-03-09 02:24:22
430
原创 poj 3233:Matrix Power Series
给定一个矩阵,求其前k次方的矩阵和。 二分+矩阵快速幂,S=(A1+A2+…+An)+(A1+A2+…+An)*k,然后递归求解A1+A2+…+An,递归结束条件k==1。很早以前看的这题,当时不会,拖啊拖的,今天灵光乍现,不过A的也不顺利,递归一直写错,最后才AC。#include #include #include using namespace std;ty
2014-03-08 15:59:56
423
原创 poj 2312:Battle City
坦克大战的最短路问题。E代表空地,B代表砖墙,一发炮弹可以解决,S代表铁墙,无法炸毁,R代表河流,无法通过,Y代表当前位置,T代表目标位置。每回合可以走一步,或者来一发,求最终到达目标位置的最少回合数。无法到达输出-1。 最短路嘛,spfa直接解决。bfs+优先队列也是可以做的,不过优先队列怎么用啊。。。各种头文件求指导。。。#include #include #inclu
2014-03-08 15:57:02
537
原创 poj 1847:Tram
一个铁路网络,每个站点有一个开关,每个站点指向>=0个站点,开关指向的那条路为通,司机若想走其他路线需要转换开关。现司机想要从A点走到B点,求最少的开关转换次数。 本来很简单的一道题,结果小错误一大堆,WA了不少次终于AC了。Floyd直接过。 #include #include #include using namespace std;const int inf = 1
2014-03-08 15:54:34
662
原创 hdu 2923:Einbahnstrasse
一个城市,有单向路和双向路,某些地点车辆发生故障,报告进行维修。按照报告顺序用拖车把车一辆一辆从事故地点运回修理站,问拖车总共行驶了多少路程。 题目是简单的,flody算法直接暴力。题目中要求按顺序,其实没关系的。不过理解到是一辆一辆运倒是花了不少时间。题目输出有特殊要求,要注意,同时还要注意有重边。#include #include #include #include
2014-03-08 15:53:37
413
原创 CF 394B:Very Beautiful Number
有一种漂亮数,将这个数乘以某个数x,等于这个数的个位数放到其最高位后形成的数。给定长度p与数x,求最小的漂亮数。若不存在输出“Impossible”。 记个位为零,从个位开始1~9进行枚举,递推算出各个位上的数直到算到第p位,用t保存计算某位时的进位,此时比较最高位与最低位数字是否相同,次高位是否为零与t是否等于0。将符合条件的数通通记录下来,最后比较得出最小的。 #include
2014-03-08 15:51:48
608
原创 CF 394A:Counting Sticks
给一个火柴棍加法算式,只从加数或和上移动一根火柴,使等式成立。 没难度的题。结果居然在最后被人hack了,分数瞬间降低不少,大亏。唉,只怪自己当时考虑不周。生平第一次被hack。 #include #include #include using namespace std;char ss[350];int main() { //freopen("in.txt"
2014-03-08 15:48:39
622
原创 hdu 2112:HDU Today
给定一波站点,求其中两个站点的最短路径。 Map映射,floyd求最短路。注意mapss这句话的存在使得要添加string的头文件。 #include #include #include #include #include using namespace std;const int inf = 1<<20 ;int way[155][155] ;char s[40
2014-03-08 15:46:33
450
原创 hdu 3790:最短路径问题
n个点,m条无向边,每条边都有长度d和花费p,起点s终点t,求起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。 Spfa。注意有重边,且当两边相等时取花费少的那条。#include #include #include #include using namespace std;const int inf = 1<<20 ;const int
2014-03-08 15:44:41
425
原创 CF 392A:Blocked Points
就是求距离原点整数n的圆周内距离圆周1单位距离的点的数量。 英语障碍还是硬伤,题目看了1小时,最后特判出错没来得及ac。。。#include #include #include using namespace std;int main() { //freopen("in.txt" , "r" , stdin) ; long long n ; c
2014-03-08 15:42:48
625
原创 CF 393B:Three matrices
给定矩阵W,求矩阵A、B,A、B满足Aij = Aji, for all i, j (1 ≤ i, j ≤ n);Bij = - Bji, for all i, j (1 ≤ i, j ≤ n);Wij = Aij + Bij, for all i, j (1 ≤ i, j ≤ n). 形象直观的题目。。。上面式子移项可得Aij = (Wij + Wji) / 2,Bij =
2014-03-08 15:41:11
474
原创 CF 393A:Nineteen
一个字符串,字符可以调换顺序,寻找其中最多有多少个“nineteen”。 英语障碍是硬伤。。。#include #include #include using namespace std ;int main() { //freopen("in.txt" , "r" , stdin) ; int n = 0 , i = 0 , e = 0 , t = 0
2014-03-08 15:39:28
545
原创 hdu 1548:A strange lift
一部电梯,能上能下。在第i层有一个k,电梯在i层只能上到第i + k或下到第i – k层,且不会超过第N层或低于第1层。问从A层到B层最少上升或下降几次。若无法到达则输出-1。 Spfa简单搞定。不过这题既视感好强。。。#include #include #include #include using namespace std;const int inf = 1
2014-03-07 01:42:13
388
原创 hdu 3339:In Action
T组数据。有足够坦克在0点,现有P个据点,Q条双向路,每条路有长度,坦克开单位长度的路需要油1升,每个据点提供一定电力。现需要占领一半以上的电力,坦克停留在一个据点即占领该据点并获得相应的电力。问最少需要多少油。 Spfa求0到各个据点的最短路,之后以长度为背包容量,以电力为物品价值,做01背包。注意有重边,这坑了几次。#include #include #include
2014-03-07 01:40:15
416
原创 hdu 1535:Invitation Cards
N组数据。给定P个站点,编号1 ~ P,Q条单向路线,每条花费一定金额,现要求从1出发,每个站点都有人,并且最后返回1,求最小金额。 数据很大,邻接矩阵存不下,要用到静态邻接表。静态邻接表存图,spfa正向扫一遍,重组图,让回来时的情况转为从1到各个点的最小金额,同样spfa扫一次。每次spfa后都把各个点的花费加起来,最后的就是答案。(debug了好长时间,( ╯□╰ ))#
2014-03-07 01:38:35
497
原创 hdu 1317:XYZZY
就是说给n个(n不超过100)房间,每个房间有一个能量数值(-100 ~ +100)以及若干扇门,每扇门通往另一个房间。玩家初始拥有100点能量,房间编号1 ~ n,玩家每到达一间房子就加上房间对应的能量数值。问玩家能否在能量用完之前从1到达n。 做法是先用floyd判断连通性,再用bellman-ford算法求路径。因为可能存在负权环路,所以spfa应该是没法做的。不过看到有人用spfa
2014-03-07 01:36:40
689
原创 hdu 2066:一个人的旅行
草儿决定要在最短的时间去一个自己想去的地方,因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车。多组输入数据,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=接着的第T+1行有S个数,表示和草儿家相连的城市;接着的第T+2行有D个
2014-03-07 01:34:46
459
原创 hdu 1874:畅通工程续
求最短路版的畅通工程。(这个省终于畅通了,可喜可贺,可喜可贺) 这次直接floyed算法。要注意S == T需要特判。#include #include #include using namespace std;const int inf = 1 << 25 ;int n , m ;int dis[205][205] = {0} ;void init() {
2014-03-07 01:32:35
431
原创 hdu 2544:最短路
给定n个点m条边,求从1到n的最短路径。 一开始用dijkstra算法,莫名其妙的WA,然后改成spfa做,还是WA,最后改成floyed算法,一次就过。这无语的。Spfa的代码保留着,若有大神看到,求指点。 #include #include #include #include using namespace std ;const int inf = 1 << 20
2014-03-07 01:30:28
418
原创 hdu 1879:继续畅通工程
使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),给出城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态,求全省畅通需要的最低成本。 最小生成树,和之前一样,kruskal。#include #include #include using namespace std ;typedef str
2014-03-07 01:28:39
474
原创 hdu 1233:还是畅通工程
给出任意两村庄间的距离,使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小,计算最小的公路总长度。 最小生成树,下列代码不知道能不能算kruskal算法。#include #include #include using namespace std ;typedef struct village{
2014-03-07 01:26:39
432
原创 poj 3070:Fibonacci
用矩阵乘法求斐波那契数列。应该算水题吧,纯粹用来联系矩阵快速幂的。#include #include #include using namespace std ;typedef struct fib{ int f[5][5] ;}fib ;fib init_0() { fib x ; memset(x.f , 0 , sizeof(x
2014-03-07 01:24:19
410
原创 CF 390D:Inna and Sweet Matrix
这题也不好解释。大意是一个n*m的矩阵,I有k枚糖果,每一枚糖果都会逐一放在(i , j)的格子上,且I从(1,1)到这个格子必须存在一条没有糖果覆盖的路径,否则无法放置。求I放完所有糖果后所需的最小步数,并打印出放每枚糖果的路径。 简单的bfs就行了。#include #include #include #include #include using namespa
2014-03-07 01:21:44
765
原创 hdu 2157:How many ways??
中文题,简而言之,一个矩阵从A 点恰好经过k个点到达B点的方案数模上1000的余数为多少。 矩阵乘法就行,优化就变成了矩阵快速幂。注意的是从A到A则k=1,题目中有重边,但考虑时当成一条就行,还有,图是有向图。#include #include #include using namespace std;int ans[25][25][25] ;bool had[25
2014-03-07 01:20:01
447
原创 poj 1252:Euro Efficiency
给予6种硬币值,求1~100块钱平均可以用多少个硬币得到与最多的需要多少硬币得到。可以加可以减。 网上看说是完全背包问题,不过做下来也没感觉是完全背包,反正按思路来看感觉不是。方法是先加上去,然后减下来。具体看代码。#include#include#includeint a[10005] , c[10] ;int main() { //freopen("in.txt
2014-03-07 01:18:03
576
原创 CF 390C:Inna and Candy Boxes
简而言之,有n个箱子,其中有若干个箱子放有糖果,用‘1’表示。输入一个不超过n的01串,提问w次,给出常数k,之后w行给出两个数l、r,其中l + k – 1、l + 2 * k – 1、……、r的盒子中要有糖果。D可以从盒子中拿走或放入糖果,求每次提问D需要几次操作才能满足要求。 前缀和,不多说。#include#include#includeusing namespa
2014-03-07 01:14:50
618
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人