自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ZOJ - 3814 Sawtooth Puzzle

这道题最恶心的地方就是预处理了。辣鸡xcode都没法完整读入整张图(可能是没配置好),必须文件输入。 预处理的时候将每一块拼图旋转4次,和结果对比,获取哪几个旋转的情况满足条件,这样就将问题抽象化。 旋转的时候要用dfs或者bfs看那几块会跟着一起转。一开始写的时候犯二了先改变了当前块的状态再去找其他块,连样例都过不去(也还好连样例都过不去,不然debug起来真的恶心)。 总的可能性总数为4^

2017-05-05 23:23:35 259

原创 UVA - 1601 The Morning after Halloween

由于条件中有一条“每2*2的区间内至少有一个#”,所以空地的个数比较有限。于是就想到将空地离散成点,这样就可以比较高效地进行bfs了(主要还是储存,如果不离散的话储存和判重会很恶心)。 本题也可以使用双向bfs进行优化,不过既然给了12s的限时,那就没有这个必要了。 还有题目给的人数是1~3不等,如果要分开算的话会比较麻烦,将不存在的人放在一个起点和终点相同的地方一起参与bfs,就可以省很多事情

2017-05-05 23:18:04 298

原创 UVA - 1599 Ideal Path

bfs两次。第一次处理路径长,第二次选边#include<iostream>#include<string>#include<cstdio>#include<set>#include<stack>#include<list>#include<vector>#include<queue>#include<algorithm>#include<cstring>#include<cma

2017-05-05 23:12:17 264

原创 UVA - 11882 Biggest Number

主要还是剪枝。这里的剪枝就是对下一个搜索的数字进行预处理,如果往这个方向能搜到的数字长度大于ans或者可能的最大数字大于ans就继续,不然就剪枝。 这里的预处理精度不需要很高,就很普通的bfs就行了,即便最大情况可能取不到(或者说,基本上不可能取到)。因为总的数字并不是太多,简单的剪枝足够了。#include<iostream>#include<string>#include<cstdio>

2017-05-05 23:11:05 251

原创 UVA - 1504 Genghis Khan the Conqueror

如果修改边权的边如果不是组成最小生成树的边,那么肯定不会有影响。 那么对于其他的边来说,就把它删了然后找到最短的替代边,和原树+修改的边权中选小的那个即可。 其实就是次小生成树的变种,只是保存每一条边删除以后的最小值罢了。#include<iostream>#include<string>#include<cstdio>#include<set>#include<stack>#incl

2017-05-05 23:05:07 355

原创 UVA - 12275 Sensor network

和UVA - 1395有点相似,都是求最大边权和最小边权的差值。不过这里的边数要多得多,枚举边权会超时。 所以这里用的方法是最小生成树建完之后开始添边,添一条边就会形成一个环,找到环中最小的边删除。#include<iostream>#include<string>#include<cstdio>#include<set>#include<stack>#include<list>#in

2017-05-05 23:01:55 263

原创 UVA - 1265 Tour Belt

最小生成树。每次加一条边之后判断一下集合是否符合条件即可。#include<iostream>#include<string>#include<cstdio>#include<set>#include<stack>#include<list>#include<vector>#include<queue>#include<algorithm>#include<cstring>#in

2017-05-05 22:49:35 240

原创 UVA - 10369 Arctic Network

一棵只需要n-m条边的最小生成树#include<iostream>#include<string>#include<cstdio>#include<set>#include<stack>#include<list>#include<vector>#include<queue>#include<algorithm>#include<cstring>#include<cmath>

2017-05-05 22:48:08 199

原创 UVA - 10816 Travel in Desert

由于要同时满足两个条件,优先满足温度最低,其次是距离最短。 于是按照温度建最小生成树,然后把低于最高温度的边都加进来,spfa找距离最短的路线就可以了。#include<iostream>#include<string>#include<cstdio>#include<set>#include<stack>#include<list>#include<vector>#include<

2017-05-05 22:46:33 235

原创 UVA - 11183 Teen Girl Squad

最小树形图,朱刘算法 可以看一下这个: http://blog.csdn.net/wsniyufang/article/details/6747392#include<iostream>#include<string>#include<cstdio>#include<set>#include<stack>#include<list>#include<vector>#include<

2017-05-05 22:44:40 290

原创 UVA - 10600 ACM Contest and Blackout

单纯的次小生成树 这里是先建最小生成树,然后依次不用最小生成树的某一条边再建最小生成树,得到的最小值就是次小生成树。 这个写法比较简单易懂,但是时间会消耗的比较多。还有一种方式是建完最小生成树之后删一条边,这样就会得到两棵子树,然后找一条能够连接两棵树的边加进来就可以了。我在UVA - 1504里运用到了这种做法的变种,不过这道题用的是上面那个写法。#include<iostream>#inc

2017-05-05 22:42:06 209

原创 UVA - 1395 Slim Span

枚举最小的边权,用剩下来的边建最小生成树即可#include<iostream>#include<string>#include<cstdio>#include<set>#include<map>#include<stack>#include<list>#include<vector>#include<queue>#include<algorithm>#include<cstri

2017-05-05 22:37:54 198

原创 UVA - 11865 Stream My Contest

二分找最小的带宽,然后最小树形图求cost#include<iostream>#include<string>#include<cstdio>#include<set>#include<map>#include<stack>#include<list>#include<vector>#include<queue>#include<algorithm>#include<cstrin

2017-05-05 22:34:37 217

原创 UVA - 11354 Bond

由于点数比较多,没法用邻接矩阵,所以不能用prim了 这里使用kruskal+LCA来找最大值#include<iostream>#include<string>#include<cstdio>#include<set>#include<map>#include<stack>#include<list>#include<vector>#include<queue>#include

2017-05-05 22:32:28 159

原创 UVALive - 5713 Qin Shi Huang's National Road System

prim + 邻接矩阵储存两点间最大距离,然后枚举即可。#include<iostream>#include<string>#include<cstdio>#include<set>#include<map>#include<stack>#include<list>#include<vector>#include<queue>#include<algorithm>#include

2017-05-05 22:30:38 189

原创 卡牌游戏II - bfs

题目描述有N张卡片,上面印着整数a1,a2,a3……an, 可以选取其中任意数量张卡片,求出一个和S,共有2^N-1个和 要求出最小的前N个和分别是多少输入格式题目包含多组数据。 输入的每一行有一个整数T(1<=T<=5)代表有T组数据 对于每组数据分为两行: 第一行有两个整数N,K(其中1<=N<=200000,1<=K<=min(2^N-1,200000)) 第二行有N个整数,分别是

2017-04-17 17:46:12 473

原创 蓝桥杯练习 ALGO-132 算法训练 Maze

原题链接 问题描述 一个含有n个点的迷宫是一棵树(一个任意两点之间都恰好有一条路径的无向图)。每个点都有一定的概率成为这个迷宫的入口和出口。 从这个迷宫走出去的方法是从入口开始进行深度优先搜索。如果当前有多个移动方案,那么等概率的选择移动方案中的一个。DFS的过程为以下的伪代码: DFS(x) if x == exit vertex then finish se

2017-04-03 21:00:41 732 1

空空如也

空空如也

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

TA关注的人

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