自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ACM_hades的梦想之路

剑锋所指,所向披靡!

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

原创 Codeforces Beta Round #5——C. Longest Regular Bracket Sequence

这道题卡了很久没想出来方法,又看题解了= =题意:现在给你一个串,然后让你求出这个串中最长的匹配长度以及是同样是这个最大长度的子串的个数。思路:第一种方法:可以用栈来做,就像判断括号是否匹配那样,当遇到'('时,我们把当前点的坐标给压入栈中,然后遇到')'时,我们从栈中弹出,然后判断是否匹配。求距离的话就是像尺取法一样根据左右点的取值然后来算出长度。#include

2015-09-29 21:41:06 506

原创 Codeforces Beta Round #4 (Div. 2 Only)——D. Mysterious Present

题意:现在我们有n封信封,然后我们有一张卡片,并且我们知道它的长度和宽度。然后n行我们知道每个信封的长度和宽度。现在我们想形成一个链,这条链的长度就是这条链中所含有的信封的数量,但是必须同时保证在信封中含有那张卡片。然后问你我们最多可以形成多长的链,并且输出我们选取的链的编号(从最小的那个信封开始输出)。思路:就是一个求LIS以及保存下我们所选择的信封编号就好了,保存编号就

2015-09-28 21:46:49 508

原创 hdu(5477)——A Sweet Journey

题意:现在有一条长度为L的道路,在道路上有一些陷阱,然后他跨过每米陷阱所花费的体力为A,他在平地上每米所能获得体力为B,然后他必须保持在每米体力都保持大于等于0,然后为了保证这个条件,问你他一开始所需要保存的最少体力为多少。思路:很简单的一道想法题,但是一开始我想烦了,还分类讨论,后来队友思路清晰就把它A了。我们只需要对每一段计算在遇到沼泽之前所积累的体力以及在走过沼泽的那段路程时

2015-09-26 23:55:07 589

原创 Codeforces Beta Round #3——B. Lorry

题意:现在告诉你有n个物品,背包的体积为V。然后n行,有两种类型的物品,如果是1类型的物品,那么它的体积为1,如果是2类型的物品,那么它的体积为2。并同时告诉了我们每种物品的价值。问你在不超过背包的容量的情况下,所能获得的背包的最大价值。并同时输出被选在背包中的物品的序号。思路:因为V十分大,所以肯定不能是01背包。于是我们对每种物品的价值排序,然后优先选择价值高的。然

2015-09-25 20:09:09 769

原创 Codeforces Beta Round #3-C. Tic-tac-toe

题意:就是给你一个井字棋的棋面,然后让你判断当前属于哪种情况。思路:首先就是判断不合法的情况没有考虑清楚。最重要的一点是我们应该先判断X是否赢,因为它是先手,然后再判断0是否赢。其他的就没有什么了,一开始代码写的不好看,所以一直错。感觉还是应该写成函数的形式这样子比较清晰。#include#include#include#include#include#inc

2015-09-22 16:28:31 711

原创 hdu(1171)——Big Event in HDU

题意:给出N个数据,然后每N行有两个数据V(代表的是该物品的价值),M(代表的是该物品的数量)。然后要把这所有的物品尽可能的两等分,然后问你怎样分才能使在把物品分成两堆的情况下,使它们两堆所含有的价值尽可能的相近。并输出两堆的价值。思路:第一次做的时候,我对这个思路并不是很清晰,现在,我可以很快的想出这个思路了。首先我们把每个价值的物品按照数量全都存到一个数组中,然后dp[j]

2015-09-20 23:20:40 465

原创 hdu(2955)——Robberies

题意:现在一个人想去抢劫银行,如果他被抓的概率低于P的话,那么他就是安全的。然后给出N,代表他想抢劫的银行的个数,然后N行,有Mj,Pj,代表的是银行有Mj这么多钱,然后被抓的概率是Pj。然后问你当被抓的概率低于P的时候,叫你输出他能够抢到的最多的钱。思路:感觉和I need an offer 这道题相似。

2015-09-20 23:00:10 811

原创 hdu(2546)——饭卡(背包dp)

题意:中文题。。。也就是说,当卡内的余额大于等于5元时才可以买东西,即使消费完后是负的也是没有关系的。然后告诉你卡的余额,每种物品的价格,并且这里的每种物品我们都只能选择一次来买。问你卡上最小的余额是多少。思路:因为我们要使卡上的余额最少,所以我们要在余额大于等于5的时候花费的最多才行,然后我们再减去价格最大的那个物品的价格就是最小的余额了。这里我们把背包容量看成m-5

2015-09-20 09:42:59 611

原创 hdu(1203)——I NEED A OFFER!

拖欠了好久的背包专题的题解呢。。。题意:中文题,也就是告诉你现在拥有n万元钱,然后每个学校有不同的申请费用a,并且有得到该学校的offer的可能性b。然后问你至少得到一份offer的最大概率是多少。思路:因为题目中说是至少得到一份offer,所以我们可以求它的反命题,求没有得到一份offer的最小概率是多少。定义:dp[i]为花费i元钱,没有得到一份offer的最小概率是多少。

2015-09-20 09:17:40 621

原创 Codeforces Round #319 (Div. 2)——B. Modulo Sum(01背包)

题意:现在你有一个长度为n的数组,然后问你能否在这个数组中找一个非空的子序列,然后使得它们的和%m==0.思路:一开始想了想dfs,但是明显不可行,因为数据范围太大。 但是又有什么可以找子序列呢?(非连续),于是类比到了01背包,用了dp。但是还是挺巧妙的方法。#include#include#include#includeusing namespace std;

2015-09-11 17:07:35 949 3

原创 Codeforces Round #319 (Div. 2) ——C. Vasya and Petya's Game(数学题)

题意:现在A选了一个数x,范围在1~n内,你每次可以询问一个数y,然后A会告诉你x%y是否等于0,然后问你以最少的步数猜出这个数的过程,并输出最小步数。思路:感觉像是推理题,数学问题果然还是不强。首先我们肯定要选取p^k(p是素因子),这里可以用反证法理解,如果不选p^k,那么就分辨不出p^k了。所以肯定要选p^k。或者说,质数的指数次都是要被查询的,这里一开始我不是很明白,但

2015-09-11 16:59:21 678

原创 hdu(5375)——Gray codet

= = 不小心又弄到这么晚了。。。昨天真的好累的说,写完这篇就去睡觉了。。。题意:现在有一个字符串表示的二进制串,然后它有三种标记:0,1,?;其中问号的作用是你可以在这个位置填上1或是0。如果是1,代表可以获得这个位置的价值,0则不能。然后有len个数字,分别代表的是每个位置上可以获得的价值a[i]。然后现在要你把这个二进制串转化为格雷码,并问你能够获得的最大价值是多少?二进制转

2015-09-11 00:19:15 498

原创 spoj(196)——Musketeerst

题意:现在有n个人,他们按照逆时针顺序围成一圈。他们要进行决斗n-1场,也就是被拉出来的那个人与紧靠其右的人决斗。第i个人与第i+1个决斗(如果i==n,那么则与第一个人决斗),输的人退出圈子,那么紧靠输的人右边的人成为与赢着直接相邻的人。任意两人的决斗的胜负会在矩阵中给出,a[i][j]=1,代表i与j决斗时,i赢,a[i][j]=0,i总是输。问你并输出所有可能赢得整场决斗的人的序号。

2015-09-10 22:54:54 705

原创 hdu(5428)——The Factor(质因数分解)

The Factor  Accepts: 101  Submissions: 811 Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others)问题描述有一个数列,FancyCoder沉迷于研究这个数列的乘积相关问题,但是它们的乘积往往非常大。

2015-09-08 22:25:44 1575

原创 hdu(5430)——Reflect(数学题)

问题描述从镜面材质的圆上一点发出一道光线反射NN次后首次回到起点。问本质不同的发射的方案数。输入描述第一行一个整数T,表示数据组数。T \leq 10T≤10对于每一个组,共一行,包含一个整数,表示正整数N(1 \leq N \leq 10^{6})N(1≤N≤10​6​​)。输出描述对于每一个组,输出共一行,包含一个整数,表示答案。输入样例14

2015-09-07 23:15:33 827

原创 hdu(2639)——Bone Collector II(01背包第K优决策)

题意:现在给你n个数,以及最大的体积容量V,还有我们需要求的第K大的数。并且告诉你每个骨头的价值和体积。然后叫你求出第K大的总价值。(并且,这些价值中不能产生重复,也就是要去重)

2015-09-06 23:18:45 526

原创 hdu(2844)——Coins(多重背包+优化)

题意:现在给你n个物品,然后m,代表的是最大的容量。然后A[i]代表的是每个硬币的价值,c[i]代表的是每个硬币的数量,然后问你用这些硬币最多可以支付多少价值的钱。思路:就是一个多重背包,但是直接做的话会T掉,所以要加上二进制和完全背包的优化。完全背包的优化就是当物品重量*数量>=m(也就是我们最大要支付的钱时),那么就直接进行完全背包就好了。因为此时物品相当于有无限多件,我们只需

2015-09-06 09:52:49 616

原创 hdu(5326)——Work

题意:现在有一个有n个人的公司,然后每个人除了boss外都有一个直接领导者,然后如果是直接或间接领导的话,那么都可以说是A管理了B。然后问你有多少个人管理着k个人。思路:我一开始就想到的是并查集,但是这里并不仅仅是简单的并查集。我们需要保存下来每个人与其他人的关系,要不然的话,我们无法直接合并(因为这里是有方向的)。所以我们记vis[x][y]为x是y的领导。然后三层for更新每个

2015-09-05 10:12:42 551

原创 hdu(5301)——Buildings

好吧,都说这是一道水题,但是我并不这么认为,我想了大概有1天多吧,还是在借助题解的力量才想通的。果然思维题还是有点弱。。题意:给你一个n*m的矩形,然后给你一个点的坐标(x,y),然后问你在不经过这个点的情况下,能够覆盖余下矩形中的最小的最大矩形面积是多少。这里每个矩形至少都有一条边与大矩形的四条边相互接触。然后叫你输出最小的最大面积。(如果还是不明白,就看一下第二个样例就能够大约的明

2015-09-04 20:39:20 651

原创 hdu(5305)——Friends(dfs)

题意:现在有n个人,m对朋友,然后对于每对朋友来说它们可以成为A或B类型的朋友。但是这n个人每个人都希望自己A类型的朋友个数与B类型的朋友个数相同。然后问你有多少种方式可以满足他们的要求。思路:看了一下数据范围,不是很大,所以首先想到的就是暴力,但是怎么递归呢?这个思路很巧妙:每条边可以选择是成为A或是成为B。于是我们对每个点进行判断,设成为A方案的边数为onl[i],成为B方

2015-09-03 21:01:35 538

原创 hdu(5289)——Assignment(muliset的使用)

题意:现在有n个人,然后每个人都有一个技能值a[i]。如果几个人是在同一组的话,那么他们之间的技能值的差值小于k并且标号连续。然后问你可以进行分组的方式有几种。思路:1)因为数据范围过大,所以不可能直接暴力,for两遍2)用STL中的multiset,我们每次往后找并与集合中的max和min值比较差值,若差值小于k,那么则是成立的。并且设置两个头尾指针l,r来表示。#inc

2015-09-03 10:52:06 618

原创 poj(1014)——Dividing(多重背包)

终于学到了用二进制的多重背包,:)其实也不是那么难嘛题意:现在有价值从1到6的物品,并且告诉每种价值的物品有多少种,然后问你能否把物品分成两堆,然后每堆的价值都是总价值的一半。思路:恩,就是一道多重背包题,但是这里要用到二进制优化,否则的话就会T掉。(二进制优化后的背包的价值和重量都是系数乘上原来的那个)其实多重背包的实质就是一个01背包,因为我们只要把每种价值的所有数量的

2015-09-02 14:28:50 758

原创 hdu(5422)——Rikka with Graph

这是一道想法题。但是我又没有自己想出来。题意:现在有n个点,然后有m条边,然后m行,告诉你u,v,然后说明u与v之间有一条无向边。每条边的权值是1。在最初你可以任意添加一条边,然后问你从点1到点n的最短距离是多少。并且在保证当前最短路的情况下,输出有几种加边方案。思路:因为每条边的权值最短是1,所以1到n的最短距离肯定是1。所以如果m条边中没有dp[1][n]==1的话,那么方案数

2015-09-01 20:41:41 574

空空如也

空空如也

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

TA关注的人

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