自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

luciozhang的博客

你好,我是一个兴趣使然的打码员

  • 博客(42)
  • 问答 (5)
  • 收藏
  • 关注

原创 POJ - 3320 Jessica's Reading Problem(尺取法)

题意:为了准备考试,Jessica开始读一本书,书总共有P页,第i页有一个知识点ai,同一个知识点可能会出现多次,她希望读书中一段连续的页数来掌握所有的知识点,请求出需要读的最少的页数。 分析:我们用尺取法来求解。 (1).初始化s=t=num=0。 (2).如果t小于P,且num小于n(所有知识点个数),就一直增加t,如果出现新的知识点,则num++。 (3).如果num小于n,退出。否则更新res。 (4).count[s]--,如果这个知识点不再有出现,则num--,s++。回到(2)。

2015-09-29 16:24:43 1193

原创 POJ - 3061 Subsequence(前缀和+二分和尺取法)

题意:给定长度为n的整数数列a0,a1,…,an-1以及整数S。求出总和不小于S的连续子序列的长度的最小值。如果解不存在,输出0。 思路: 1. 可以用O(n)的时间算好前缀和,之后就能在O(1)的时间计算区间上的总和。在确定起点s后,二分快速找出使得序列和不小于S的最近的终点就好了。算法复杂度是O(nlogn). 2. 第二种方法是利用尺取法求解: (1).以s=t=sum=0初始化。 (2).只要依然有sum<S,就将sum增加ai,并将t增加1。 (3).如果(2)中无法满足sum>=S则终止。否则的

2015-09-29 11:25:58 1170

原创 POJ - 2976 Dropping tests(二分查找,最大化平均值)

题意:有N个考试,每个考试有ai和bi两个值,最后成绩由上面的公式求得。幸运的是,可以放弃K个科目,求最大化最后的成绩。 思路:由题意可知当,当n-k个科目组成最优解时,再增加别的科目,解一定不如原来的解,放弃掉k个科目是最好的方案。 于是,题目就变成了最小化平均值的问题,另外在注意下取整时的四舍五入就好了。 最小化平均值: 有n个物品的重量和价值分别为wi和vi,从中选择k个物品使得单位重量的价值最大。 对于这个问题,我们可以用二分搜索解决,先来看看判断条件: 设最大值为先,则需要满足 ∑vi / ∑w

2015-09-29 00:48:30 747

原创 POJ - 2456 Aggressive cows(二分查找)

题意:有N间牛舍,排在一条线上,第i号牛舍在xi的位置。有M头牛,希望将每头牛放在离其他牛尽量远的位置。求最大化最近两头牛的距离。 思路:二分搜索求解,判断条件是可以安排使得任意牛的距离不小于d。只要扫一遍n个牛舍就可以得到答案,O(n)的判断。

2015-09-29 00:03:40 573

原创 POJ - 1064 Cable master(二分搜索)

题意:有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留到小数点后两位。 思路:用二分可以很容易得到答案,判断条件是C(x)即可以得到K条长度为x的绳子,即floor(Li/x)的总和是否大于等于K。判断可以在O(n)内完成。

2015-09-28 23:44:29 549

原创 POJ - 3468 A Simple Problem with Integers(线段树成段更新,查询区间和)

线段树成段更新,感觉还是不理解,这题还需要注意下数据范围。

2015-09-24 03:13:01 632

原创 POJ - 4047 Garden(线段树成段更新,查询最值)

题意:含n个元素的序列 ,有q个操作。 操作( p x y)有三种: 0 x y :把第x个的值改为y 1 x y:交换第x个和第y个的值 2 x y:问区间[x,y]里面连续k个的子序列的最大和 思路:先处理序列,SumK[i]表示从i开始的k个数的和,然后线段树建树,成段更新,查询。更新只要处理成对区间最值得加减就可以了。 成段更新还是不熟悉,于是顺便做了 POJ - 3468 A Simple Problem with Integers,也是成段更新,查询为区间元素和,有些不同。

2015-09-24 03:05:36 610

原创 Codeforces#321 (Div. 2) D. Kefa and Dishes(DP,掩码)

题意:Kefa 去吃东西,菜单上有n中菜可以选,每种菜分别会带给kefa ai的满足感,此外有k条规则,给出u,v,c,先吃u再吃v会得到c的满足感。kefa要吃m种菜,求得到满足感的最大值。 思路:用一个二维的dp数组,第一个元素用掩码表示已经拿的菜,注意大小是2^18,第二个元素表示拿的最后一种菜,先置dp数组为-1,以此来消除掩码没有意义的空元素,可以知道,初始状态是第i种菜先拿的时候,值为ai,状态转移,后面的状态有原来dp[][j] ,或者是先拿一个i再拿j得到,为dp[]+c[j]+g[i][j

2015-09-23 22:57:11 1344 2

原创 Codeforces#321 (Div. 2) C. Kefa and Park(dfs)

题意:地图是一棵树,从根(点1)出发,要到叶子去,路上连续有m个点有猫的路不走,求有多少路可以走。 思路:很水的dfs,构造边的时候记录下度数,用于判断是否为叶子就好了。

2015-09-23 22:39:12 1431

原创 Codeforces#321 (Div. 2) B. Kefa and Company(前缀和,二分查找)

题意:kefa有n个朋友,Kefa 想邀请他的一些朋友去餐厅,每个朋友带两个值mi和si,分别为钱数和友情值,邀请的朋友要求最大的m和最小的m相差不大于d,求能得到的最大的友情值。 思路:按m值递增排序,枚举起点,找到符合要求的终点,计算这个区间的友情值总和,更新答案就好了,为了省时间用前缀和求区间和。注意下数据范围,答案用LL。

2015-09-23 22:30:45 1334

原创 HDU-5461 Largest Point(沈阳网赛,最值)

题意:给出n,a,b和 t1到tn,n个数的数列。求i !=j 使得a*ti*ti+b*tj最大。输出最大值。 思路:可以看到最大值只与数列的最大、次大、最小、次小和绝对值的最小,次小有关,输入时记录下这六个数,暴力解出就好了,注意i!=j 和 数据范围。

2015-09-22 13:06:45 498

原创 HDU-5459 Jesus Is Here(2015沈阳网赛,递推,思路)

题意:有一个斐波那契串,s1=c,s2=ff,之后s(i)=s(i-2)+s(i-1),要求第k个字符串中两个cff之间的距离。 思路:就是递推,想的时候,记录的是字符串中第一个c距最左边的距离,和第二个c距最右边的距离,没做成。看别人的题解,比较多都开了一个s[k]记录第k个字符串所有c的位置和。再有len[k],numc[k],sum[k]分别记录第k个字符串的长度,c的数量,距离和。递推维护这几个值就好了,比较难想的是sum的更新,可以看看这篇博客的思路:http://www.cnblogs.co

2015-09-22 12:39:53 671

原创 HDU-5455 Fang Fang(2015沈阳网赛,带坑点水题)

坑点在,输入有其他字母,还严格按行输入(空行要输出0),但是没说。

2015-09-22 11:51:00 1222

原创 POJ - 3009 Curling 2.0(DFS,模拟)

稍有点难度的DFS,要注意几个点,比如相邻一格为障碍的时候不能走向相邻那一格,撞到障碍后障碍消失,回溯时要恢复障碍物的状态。

2015-09-19 09:34:57 443

原创 UVA - 10006 Carmichael Numbers(素数筛+快速幂)

Carmichael Number:对任意1<x<n,都有x^n==x(mod n)的合数。判断给定数n是否为合数。2<n<65000 素数筛,先判断是否为合数,在快速幂判断是否符合条件。 不过符合的数就十几个,打表就……

2015-09-19 01:34:28 497

原创 POJ - 3723 Conscription(最小生成树Kruskal,思路)

题意:需要征募女兵N名,男兵M人。每征募一个人需要花费10000美元。但如果已经招募的人中有一些关系亲密的人,那么花费可以少一些。给出若干男女之间1~9999之间的亲密度关系,征募某个人的费用是1000-(已经招募的人中和自己亲密度的最大值)。求征募需要的最小费用。 分析:可以想象,将男兵处理为N+1到N+M的节点后,要求的关系图(征募用到的关系)会是一个无环图,且对可以选择的边,需要尽可能选择边权大的边。于是就想到用kruskal求最大生成树。

2015-09-19 01:16:41 575

原创 POJ - 3255 Roadblocks(最短路Dijkstra算法求次最短路)

题意: 某街道共有R条道路、N个路口。道路可以双向通行。问1号路口到N号路口的次短路长度是多少?同一条边可以经过多次。 分析: Dijkstra 算法的思路是依次确定尚未确定的顶点中距离最小的顶点,利用这个思路,可以看到:到某个顶点v的次短路要么是其他某个顶点u的最短路再加上u->v这条边(且加上后要求比最短路长),要么就是u的次短路再加上u->v的边。于是我们用Dijkstra的思路可以求出所有顶点的最短路和次短路。 由于边是可以重复经过的,对下面的样例,输出是140,与常识不同。

2015-09-19 00:57:45 1049

原创 HDU - 2444 The Accomodation of Students(二分图判断+最大匹配)

题意:有n个学生,有m对人是认识的,每一对认识的人能分到一间房间,问能否把n个学生分成两部分,每部分的学生互不认识,而两部分之间的学生认识。如果可以分成两部分,就算出房间最多需要多少间,否则输出No。

2015-09-16 20:41:19 606

原创 POJ - 2431 Expedition(优先队列)

题意:一辆卡车距离城镇L单位长度,初始有P油,每行驶一个单位长度消耗一单位油。有n个加油站可以加油,给出n个加油站与城镇的距离Ai,和在加油站可以加的有的量Bi,问最少加油几次才能行驶L长度,如果不能输出-1。 我们稍微变换一下思路:每次经过加油站,都把油装到瓶子里面带走,Bi加入优先队列,到需要加油的时候才加,因为需要使加油的次数最少,每次都是选油量最大的加。如果优先队列为空而没有到达下一加油站或是终点。则不能够到达。

2015-09-16 20:32:30 1036

原创 POJ - 3069 Saruman's Army(贪心)

给出整数n和r,列出n个点的位置,从这些点中选择若干个,给它们加上标记,要求每个点距离r的范围内必须有带标记的点,在满足这个条件的情况下,问至少需要标记多少点。 贪心原则:从最左边的点开始,找到范围r内最右边的点,做标记,该点左边r范围内的点都满足条件,在选择范围外最左边的点,开始第二次贪心。以此类推。

2015-09-16 20:16:28 502

原创 HDU - 2141 Can you find it?(二分查找)

Can you find it? Time Limit: 3000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description Give you three sequences of numbers A, B, C, then w

2015-09-16 20:04:33 666

原创 POJ - 1962 Corporative Network(带权并查集)

对n个节点,有两种操作: E a:询问a节点到根节点的距离。 I a b:链接a点和b点且由a点指向b点,之间的距离为|a-b|%1000。 find查找压缩路径的时候要更新距离。 注意输出前调用一次find函数,处理出a到根节的的距离。

2015-09-13 01:45:50 508

原创 POJ - 1988 Cube Stacking(带权并查集)

题意:N个立方体放在N个堆里。有两种操作: M a b:把a所在的堆移到b所在的堆上,堆本身的顺序不变。 C a:询问a下面有多少个立方体。 开两个数组deep[i]记录i点到根节点的距离,son[i]表示i节点下有多少儿子(包括自己),于是对询问可以得出答案为: son[root]-deep[i]-1 压缩路径的时候要更新deep的值,合并吧b并到a节点的下面,更新deep和son。

2015-09-13 00:57:23 563

原创 POJ - 2492 A Bug's Life(种类并查集)

和 POJ - 1703 Find them, Catch them 相似,当寻找到在同一个集合中,且标记相同时答案为“Suspicious bugs found!”。

2015-09-12 19:56:29 545

原创 POJ - 1703 Find them, Catch them(种类并查集)

题意:输入n和m,代表有n个人和m个询问,n个人分别属于两个帮派,每个询问遵循下面的规则: A a b要求输出a与b是否在同一个帮派。D a b告诉信息a和b是不同帮派的成员。 这题与种类并查集的经典题目POJ-1182 食物链相似,更简单一些,关系域更新的时候考虑偏移量和向量的加减,可以得出公式。

2015-09-12 18:57:33 2199 1

原创 POJ - 1182 食物链(种类并查集经典题)

给出大致的思路。 (1)符合条件的2、3句的,不影响并查集,首先答案加一再跳出。 (2)结构方面多了一个数组记录父节点到子节点的关系:0:同类,1:父吃子,2:子吃父。 (3)查找和合并的操作都与普通的并查集相同,要注意的是压缩路径和合并过程。 (4)这时候要更新关系域,我们把这些关系看成向量,关系的转化量视为偏移量。 (5)关系域的求取可以转化为向量的加减。 (6)对每次询问,如果两个数不在同一个集合中,我们来进行合并,更新关系域。 (7)如果两个数已经在同一个集合中,判断其在集合中的原关系与询问所给的关

2015-09-12 15:57:43 1629

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

题意:A给出一个数x,B每次猜一个y,A回答B,x是否可以被y整除,求出要猜的最小次数和需要猜的数。 素数筛处理出所有素数,枚举每个素数p,可以知道如果p^k<n,则p^k一定需要选,根据这个原则求出所有要猜的数。

2015-09-12 11:11:45 1255

原创 Codeforces #319(Div.2) B. Modulo Sum (动态规划)

题意:两个数n和m,还有a1-an的n个数,判断是否存在该数列的一个子序列,使得子序列元素的和可以被m整除。 看了下官方题解: 分两种情况:n>m 和 n<=m。 如果n>m, 可以判断输出一定为“Yes”。求出前 i 个数的和 S1-Sn,有鸽巢原理,可以知道至少有两个数列和对m取模的结果相等,假设为Sl%m=Sr%m,则可以知道(Sl-Sr)%m==0,于是 [ l+1,r ]就是所求的子序列。 如果n<=m, 用动态规划解决,O(m^2)。dp[i][r]表示到了第i个数,前面子序列的和对m取模是否能

2015-09-12 10:55:08 878

原创 Codeforces #319(Div.2) A. Multiplication Table

可以看到x在每行最多出现一次,在x/i的地方,枚举i判断x%i==0和x/i<=n,更新答案。O(n)

2015-09-12 10:26:49 533

原创 UVA - 10307 Killing Aliens in Borg Maze(最小生成树kruskal+bfs)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20846 先BFS处理出图,再用kruskal求最小生成树。 poj上一样的题不知为什么死活过不了,就没去做了。#include #include #include #include #include using namespace std; const int

2015-09-10 17:17:07 777

原创 POJ - 2031 Building a Space Station(最小生成树简单题)

Building a Space Station Time Limit: 1000MS   Memory Limit: 30000KB   64bit IO Format: %I64d & %I64u Submit Status Description You are a member of the space station eng

2015-09-10 17:11:31 505

原创 POJ - 1258 Agri-Net(最小生成树简单题)

Agri-Net Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description Farmer John has been elected mayor of his town! One of hi

2015-09-10 17:04:01 635

原创 POJ - 1797 Heavy Transportation(求“最大生成树”)

Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000KB   64bit IO Format: %I64d & %I64u Submit Status Description Background  Hugo Heavy is happy. After the b

2015-09-10 17:01:55 547

原创 POJ - 2421 Constructing Roads(最小生成树简单题)

Constructing Roads Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit Status Description There are N villages, which are numbered from 1

2015-09-10 16:58:25 633

原创 POJ - 1789 Truck History(最小生成树简单题)

Truck History Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit Status Description Advanced Cargo Movement, Ltd. uses trucks of differe

2015-09-10 16:56:30 599

原创 POJ - 1251 Jungle Roads(最小生成树简单题)

Jungle Roads Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description The Head Elder of the tropical island of Lagrisha

2015-09-10 16:50:35 520

原创 UVA - 1395 Slim Span(最小生成树最大边权和最小边权之差最小)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=41567 求使得生成树的最大边权与最小边权之差最小,枚举最小边生成最小生成树,求得答案。 这么做的正确性看这个链接 http://blog.csdn.net/sdj222555/article/details/7698978 #include #include

2015-09-10 16:48:09 1340

原创 POJ - 1679 The Unique MST(最小生成树是否唯一)

The Unique MST Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description Given a connected undirected graph, tell if its min

2015-09-10 16:38:52 847

原创 POJ - 1751 Highways(最小生成树)

Highways Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description The island nation of Flatopia is perfectly flat. Unfortun

2015-09-09 20:55:17 675

原创 POJ - 1287 Networking(最小生成树)

Networking Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit Status Description You are assigned to design network connections between

2015-09-09 20:51:17 608

空空如也

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

TA关注的人

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