自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

便纵有千种风情

更与何人说

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

原创 uva 11572 唯一的雪花 Unique Snowflakes

输入一个长度为n(n核心是:对数据处理类似与一个队列的结构,队头front,队尾rear,两个都可以不断增加,比如rear增加1,那么为了保证同一个元素不在队列里出现两次,可能会出队一些元素。或者可以这么解释,对于每一个值x,记录前一个值x出现的位置last[x],所以考虑x进入序列时,last[x]及以前的元素不得考虑。具体实现:数据结构的选择有很多种

2016-02-29 15:17:55 1270

原创 uva 11054 Gergovia的酒交易 等价转化/贪心

直线上有n个等距的村庄,每个村庄要么买酒,要么卖酒。把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力。所有村庄供需平衡,问最少需要多少劳动力才能满足所有村庄的需求?(2我的解法(贪心):维护两个队列,提供队列和需求队列,从左往右扫描村庄,如果a[i]>0,则加入需求队列,如果没加入一个a[i]之后,两个队列开始进行交易,各自取队头。

2016-02-28 19:03:03 603

原创 uva 11134 传说中的车 从简单情形入手

从简单情形入手:考虑只有一列,有n行,现在每个棋子的区域就是一个[le,ri],那么问题就是在n个线段区域内的每个区域选一个点,使得1,2,3,...,n每个格子都被选中恰好一次。不拿发现解法就是贪心,再作进一步考虑:现在有n个区间,n行,n列,所有列都被选中了,现在考虑怎样使每一行都被选中且仅选中一次,无论n个区间是怎样选择使得每一列都被选中,每一区间都必须选

2016-02-28 15:13:55 1043

原创 uva 1152 4 Values whose Sum is 0 map会超时

用容器可能会超时,需要手写解法:容器1={a+b|a属于A,b属于B}容器2={c+d|c属于C,d属于D}遍历容器1的元素x,查找容器2中是否存在-x。时间复杂度根据不同的写法会有略微不同。如果时间复杂度记为O(n^2*log(n)),n的大小为4000,题目限时9000MS,可以过,但不能用STL。/**=========

2016-02-27 16:56:22 417

原创 uva 1605 Building for UN 构造?随意

书上指出有一种很经典的构造方法,对于所有n,设计出两层楼,每层楼n行,n列,第一层楼第i行的办公室(i>=1)均为国家i所有,第二层第j列的办公室均为国家j所有。/**========================================== * This is a solution for ACM/ICPC problem * * @source£º uv

2016-02-27 11:41:45 413

原创 uva 120 Stacks of Flapjacks 煎饼

先放好第K大的煎饼,然后放好k-1大的煎饼。因为如果要放对第k-1大的煎饼的位置,所有被变更位置的煎饼一定在区间[1,k-1]内,不会影响到刚才放好的第k大煎饼。/**========================================== * This is a solution for ACM/ICPC problem * * @source£

2016-02-23 21:54:30 651

原创 uva 10559 方块消除

dp[le][ri][k]表示区间[le,ri]并且右边还有k个和   ri位置相同颜色的方块   的最优解。转移时间O(n),状态O(n^3),时间复杂度O(n^4)(一般来说n为200,这样可能会超时),用记忆化搜索很多状态不会达到,可过。/**========================================== * This is a solut

2016-02-20 16:25:26 686

原创 uva 1628 送披萨

题目:点我解法:送披萨,开一个dp[maxn+3][maxn+3][2][maxn+3]大小的数组,用dp[le][ri][k][need]表示区间[le,ri]内的顾客已经不用送了(送到了或者决定不送了),如果k=0,表示现在正在le点处,如果k=1,表示在ri点处,还需要送need个顾客。/**==============================

2016-02-20 14:58:42 810

原创 UVA - 1228 Integer Transmission 整数传输 递推

题目约制1:同是1或者同是0的数字其相对位置不变。       求最大最小可用贪心求解。    简化题目:若延迟为d,从左往右数第i个数字到达的时间范围可以记为[i,i+d],题目说是[i+1,i+d+1],不影响结果。约制2(书上说的,实际解题我的代码没有用到,但这是对的):假若有n位数字,到达的时间是[1,n+d],我们可以修改为[1,n]不

2016-02-18 15:26:49 908 1

原创 UVA - 1439 Exclusive Access 2 独占访问2

问题转化:给出1个最多结点数为15的图,然后给出一些无向边,现在需要给这些边/**========================================== * This is a solution for ACM/ICPC problem * * @source:uva 1439 Exclusive Access 2 * @type: dp *

2016-02-17 18:50:42 944

原创 UVA - 12170 Easy Climb 轻松爬山 单调队列优化DP

题意:输入正整数d和n个正整数h1,h2,...,hn。可以修改除了h1和hn的其他数,要求修改后相邻两个数之差的绝对值不超过d,且修改费用最小。设h1修改后的值为hi',则修改费用为|h1-h1'|+|h2-h2'|+...+|hn-hn'|;无解输出impossible,有解输出最小费用。(2 ≤ n ≤ 100)(0 ≤ d ≤ 10^9)(0 ≤ hi ≤ 109)

2016-02-16 22:10:39 811

原创 UVA - 12099 The Bookcase 书架

背包思想,书有宽度,书也有高度,这里宽度是典型的体积。因为分三层,为了方便考虑,给与约制:第一层的高度>第二层>第三层。(将书按从大到小的顺序排列)接下来进行分阶段的动态规划,每本书有三种选择:放在第一层,放在第二层,放在第三层。dp[2][v2][v3],滚动数组,v2表示第二层的数宽度和,v3表示第三层的书宽度和。因为所有书的宽度和一定,我们可以方便的计算出第一层的宽度和。

2016-02-15 21:38:17 710

原创 uva 1204 Fun Game 有趣的游戏 字符串集合的动态规划

不得不说,此题很难,不得不说,我很渣,看了题解,自己写代码,不但写了一大堆,后来WRONG ANSWER还找不到错了。只好看紫书的代码。。。发现好多实用的函数的写法reverse(tmps[i].rev.begin(),tmps[i].rev.end());if(tmps[j].s.find(tmps[i].s)!=string::npos || tmps

2016-02-15 14:14:37 1194

原创 poj 1789 最小生成树

题意:给出n个长度为7的字符串,每两个字符串间的距离= 有多少个位置上的字母不同。求最小生成树。Truck HistoryTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 23234 Accepted: 8995Des

2016-02-14 11:29:45 384

原创 hdu 3047 Zjnu Stadium 带权并查集

最近的几道并查集把我折磨死了,因为对这方面的只是没有把握,虽然觉得题目很简单,但是wa过之后,就开始否定自己,找不到错误的关键。之后看了看别人的代码,就瞟了一眼就知道自己某个地方写错。并查集一定要注意是以树根为单位进行操作的,我发现很多时候错误都在这里,考虑不周全。Zjnu StadiumTime Limit: 2000/1000 MS (Java/Others

2016-02-12 15:55:03 398

原创 hdu 3635 Dragon Balls 龙珠 带权并查集

每次移动都是一个群龙珠移动到另一群龙珠所在的城市里面。所以这两个城市之间都不会空。用并查集表示,每一个祖先节点的序号和他们所在城市的序号相同。无论路径如何压缩,子结点的移动次数=父节点的移动次数+1;Dragon BallsTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768

2016-02-12 13:03:09 554

原创 hdu 3172 Virtual Friends 带权并查集

我说这题也是坑的不要不要的输入的格式竟然是这样的:while(~scanf("%d",&T)){   while(T--)  {  }}Virtual FriendsTime Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm

2016-02-11 20:39:37 425

原创 hdu 3367 Pseudoforest 最大权值和伪森林

这个题目读懂意思是关键:对当前的一个图,求一个最大的伪森林,即边权值最大,每一个连通分量至多含有一个圈的森林。是排序发挥神奇作用的时候了。。。(对kruskal稍稍改进即可)首先要确定要连n条边。先按权值从大到小排序,对于一条边的两个结点,代表两个集合(可能相同),如果两个集合都含有圈则不可相连,否则相连。Pseudoforest

2016-02-10 23:22:13 484

原创 hdu 4081 Qin Shi Huang's National Road System 秦始皇的国家公路系统

最小生成树的一个性质:假若去掉最小生成树中的一条边,那么其他点,就组成两个连通分量,最小生成树中其他边的权值和就是让这两个连通分量中的点分别连通的最小花费。很好证明。Qin Shi Huang's National Road SystemTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 3

2016-02-10 14:39:04 676

原创 uva 1380 - A Scheduling Problem 一个调度问题 好难的动态规划

想不出来啊!!!,紫书上写的很清楚。1.利用题目给出的图论定理,先不考虑无向边,假如图中有向链的最大长度为K,那么答案为K+1或K+2(注意是K链的长度,答案是链包含点的个数)。2.考虑答案是否能为K+1,否则为K+2,即考虑给无向边定向,定向之后能否使最长链不超过K?进行动态规划来考虑:对于每一个结点in[x] 表示: 在定向后最长链不超过K的前提下,

2016-02-09 22:07:41 1267

原创 hdu 2489 Minimal Ratio Tree 最小生成树

枚举组合情况,再用最小生成树算法,我一开始半天都想不出来,最后没想到解法这么简单。这都是因为之前对时间复杂度没有认真、正确的估计,往往简单的题目想复杂了。因为n很小/**========================================== * This is a solution for ACM/ICPC problem * * @

2016-02-09 18:40:41 444

原创 hdu 3938 Portal

对于新增加的每一条边,ab,假如a点和b点原来不连通,那么新增加路径的条数(包含ab的路径)=原来和a点连通的点数(包括自身)*原来和b点连通的点数(包括自身)。假如a和b已经连通,那么不增加。(为什么不知道,凑数据,我当时题目一直觉得没看懂,因为题目说的非常含糊)这份题解:写的很清楚http://blog.csdn.net/sdj222555/article/deta

2016-02-09 00:43:53 471

原创 hdu 1811 Rank of Tetris 拓扑排序+并查集

拓扑排序的过程中,根据队列中是否出现多个入度为0的点,可以判断出信息是否完全。根据拓扑排序访问过的点数,可以判断出是否存在环,也就是信息之间是否存在矛盾。Rank of TetrisTime Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm

2016-02-08 12:32:30 363

原创 hdu 1598 find the most comfortable road 枚举+并查集

并查集:可用于判断两点是否连通,此题点的数量级为百,边的数量级为千,每组数据查询的次数11次,而且只需输出最终答案,不用输出路径,所以给我的第一可行感觉就是二分,然而二分是可行的,但我没想出来,然后就想到去枚举,巧妙的用并查集来判断枚举的边集是否可以将给出的两点x、y连通。解法:将边从小到大排序,枚举一个区间的起点和终点,然后求最优值。 for(int i=1;i{

2016-02-07 13:35:40 413

原创 uva 10859 树形dp

题目:点我又学到了一种得到最优解新的方法,设函数y=kx+b,如果要得到一个x最小时,b也最小的解,不妨设一个k,让k至少要> (bMax-xMin),然后令dp[]=kx+b;这样求得最优解ans后,最小x=ans/k,最小b=ans%k;关于树形dp的这种问题,懒得多说。。。不过我看题目时,无向无环图,始终没弄明白就是森林,唉,然后就想不出来了,可悲

2016-02-05 22:10:08 339

原创 uva 11825 黑客的攻击 Hackers' Crackdown 集合dp+我的优化 非常好的好题

题目:点我题目大意:(黑客的攻击)假设你是一个黑客,侵入了了一个有着n台计算机(编号为0,1,…,n-1)的网络。一共有n种服务,每台计算机都运行着所有的服务。对于每台计算机,你都可以选择一项服务,终止这台计算机和所有与它相邻计算机的该项服务(如果其中一些服务已经停止,则这些服务继续处于停止状态)。你的目标是让尽量多的服务器完全瘫痪(即:没有任何计算机运行该项服务)  输入

2016-02-05 16:25:26 830

原创 hdu 1325 Is It A Tree? 判断是否是树 巨坑

每组数据,给出,一些有向边,从父亲只想儿子结点,每组数据以0 0 结尾,整个输入以小于0的两个数结尾,判断每组数据是否是一棵树。这个题目最坑的在于结尾的样例给的是-1 -1 ,结果习惯性的认为是-1 -1结尾,最后莫名其妙的wrong answer。判定是否是一棵树:0.空树可以是树。就是输入0 0 的一组也是数。1.存在一个且仅有一个入度为0的

2016-02-05 12:51:21 481

原创 hdu 1829 种类并查集

题目:(HDU1829)有n各小动物,它们只有异性之间才配对,同性之间不会配对。给定m对配对关系,问你是否能通过分配性别给n各小动物,使这m各配对关系成立,即不会出现同性之间配对。A Bug's LifeTime Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

2016-02-05 00:51:23 497

原创 uva 1627 Team them up! 团队分组

题目:点我感觉自己好像做麻烦了,这个题目的思考方式是,对于不能在一组的连线,这样所有点就被分为一些连通块。假如可以分组,每一个连通块就是一个泛化物品,价值可正可负。这是因为,能在一组的点,可以在一组,也可以不在一组,不能在一组的点一定不能在一组,这样保证了不能的情况,简化了问题。/**=============================

2016-02-04 20:32:15 781

原创 hdu 2516 取石子游戏 Fibonacci Nim

1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".取石子游戏Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To

2016-02-04 12:45:40 439

原创 hdu 1564 Play a game 巴什博弈/棋盘博弈问题

以巴什博弈为原型进行的棋盘博弈问题

2016-02-04 11:26:30 1103

原创 hdu 1525 Euclid's Game 博弈

打表找真理

2016-02-04 00:08:55 314

原创 hdu 1079 Calendar Game

博弈入门题

2016-02-03 18:41:12 457

原创 hdu 1847 Good Luck in CET-4 Everybody! 动态规划/巴什博弈

动态规划/巴什博弈Good Luck in CET-4 Everybody!Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7430    Accepted Submission(s): 4780Prob

2016-02-03 11:01:46 600

原创 hdu 1846 Brave Game 勇敢者的游戏 DP/巴什博弈

简单动态规划/博弈

2016-02-03 10:11:36 519

原创 hdu 1850 Being a Good Boy in Spring Festival

Being a Good Boy in Spring FestivalTime Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6060    Accepted Submission(s): 3622Problem Descr

2016-02-03 10:03:27 313

原创 hdu 2147 kiki's game 博弈

有一个双人回合游戏,两个人在一个n*m的矩阵中控制同一个棋子,从起始位置(1,m),走到终止位置(n,1);每轮只能向左,向下,左下方向走,先走到终点的为获胜者(即不能再走者为败)。问给定起点,先手能否赢。

2016-02-02 23:35:17 388

原创 hdu 2509 Be the Winner 尼姆博奕

博弈简单题

2016-02-02 21:24:30 522

原创 hdu 1907 John 尼姆博奕

博奕入门题

2016-02-02 21:17:03 427

原创 uva 12105 Bigger is Better

dp[cost][x]表示用了cost根火柴,取模后余x的最大数import java.math.BigInteger;import java.util.Scanner;public class Main { static int n,mod; static int a[]={ 6,2,5,5,4,5,6,3,7,6 }; static BigIn

2016-02-02 10:13:38 497

空空如也

空空如也

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

TA关注的人

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