自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hdu 3450 离散化+dp+线段树优化

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3450 题意: 给你一串长度为n的序列,给一个d,要求找出有几个子序列能够满足两个相邻的元素之间差值不超过d。 思路: dp。定义dp[i]表示以第i个为结束的满足条件的子序列的个数。 转移方程:dp[i]=(∑i−1j=1dp[j])+1(abs(num[i]−num[j])<=d)dp[i] =

2015-08-29 16:01:46 635

原创 zoj 3735 概率dp

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3735 题意: 你有一只三个角色的队伍,需要打败所有电脑的队伍才能获胜,打赢一个之后,可以将你的队伍成员全部换成是被你打败的那个,当然也可以不换。 给了M个角色,R = C(M,3)表示队伍数,给了个矩阵表示每种队伍之间对战的胜率。 思路: 概率dp着实还是没有

2015-08-29 13:36:40 423

原创 codeforces 309A Morning run 概率

http://codeforces.com/problemset/problem/309/A 题意: 给定n 个人,给定长度为 l 的环形跑道,同时开始跑 t 时间,求相撞次数的期望,注意相撞之后,两个人还是按照原来的方向跑下去。 分析: 如果两个人是同向的话肯定是不可能相撞的 1)如果时间无限的话,那么任意两个人相撞的时间的就是x/2x/2、x/2+l/2x/2 + l/2、x/2+lx

2015-08-25 16:22:50 711 2

原创 codeforces 343C Read Time 二分 + 贪心

http://codeforces.com/problemset/problem/343/C 题意: 有一些磁头,给出了起始的位置,给出了一些磁盘中需要访问的地点。求这些磁头移动的最小的次数。 思路: 二分找出满足要求的最小的时间,对于当前尝试的时间进行贪心判断是否可用。对于贪心,因为每一个磁头都需要读到还没有人读过的最左边的地方。如果这个都不能满足,那么这个时间是不可以的。 在这基础上,

2015-08-25 14:35:46 1015

原创 codeforces 479E Riding in a Lift dp+前缀数组优化

http://codeforces.com/contest/479/problem/E dp,我这dp弱狗都看出来了,这题dp不是很难想到,比较不容易的是如何优化,使得不会T。 题意: 给定一个启示的楼层a,有一个不能去的楼层b,对于你可以去的下一个楼层必须满足你当前楼层x与下一个要去的楼层y的距离小于x到b的距离。求出走k趟的方案数。 思路: 可以定义dp[i][j]表示第i趟的时候到第

2015-08-22 11:02:23 881

原创 CodeForces 402D Upgrading Array

http://codeforces.com/problemset/problem/402/D 题意: 给了一串序列,计算出这个序列最小的∑\sumf(a[i])f(a[i])。定义了f(s)f(s),给了个公式。可以进行一系列的操作,这个操作为从1~r 这些数都除以他们的gcd。让你最后算出最后最小∑\sumf(a[i])f(a[i])是多少。当然如果不需要进行操作就可以达到最小,也是可以的。

2015-08-21 15:36:54 946

原创 codeforces 567F mausoleum dp

http://codeforces.com/problemset/problem/567/F dp 没有想出来,感觉这题还是比较有意思。 题意: 有n个数,要求放置。每个数要放置两次。要求最后整个序列的顺序是先不减后不增。还给出了k个限制条件。求满足这些条件的序列的总数。 思路: 还是比较容易想到是用dp做的。就是不知道怎么转移状态。。。orz 因为小的数字总是要在大的数字的两边的,可

2015-08-21 14:18:14 1125

原创 codeforces 14D Two Paths dfs

http://codeforces.com/problemset/problem/14/D 题意: 找出两条路径的长度乘积最大,要保证这两条路径没有公共的点,如果找不到就输出0。 思路: 枚举每一条边,删掉这条边,对于这两个点进行dfs,从每个点开始走找出两条最长的路,path就是这两条路之和。两个点的path相乘判断能不能更新答案。 要小心的就是要从每个点找出两条路,不能直接找下去。这里

2015-08-17 14:07:00 715

原创 08/13 D -> codeforces Round #Pi div 2 E. President and Roads 最短路变形

链接:http://codeforces.com/contest/567/problem/E 题意: 总统只走最短路,给了一个有向图,对于每条边判断是否一定走这条路,如果一定输出 yes如果不一定,那么是否可以减少这个边的权值使得总统一定走这条路,如果可以输出最少减少多少 can ** ,如果不行 输出no。 分析: 对于每个图可能有不只一条的最短路,要找出每条边是否一定要走,如果这条边是在

2015-08-15 13:56:35 705

原创 集训 08/12题解

08/12: 前几题都是codeforces #Pi 的div2的题。不过那次打的太差,只看了两题。。 链接:http://codeforces.com/contest/567 A: 题意:找出一个公比为k长度为3的等比数列,由 bb,b∗kb*k, b∗k2b*k^2组成。 找出最多存在几个这样的数列,数都可以重复使用。但是保证这个数列一定是按照增的顺序出现的,出现的顺序不是增的也不行的。

2015-08-13 21:49:04 420

原创 课后习题 poj 2376 区间贪心

链接:http://poj.org/problem?id=2376 题意:每头牛给出对应打扫卫生的时间区间,要保证每个时间点都有牛打扫,并且求出这样所需要的最少的牛的数量。不能保证就输出-1. 典型的区间贪心,水水来找点信心orz 思路:每头牛的起点升序排列,如果第一头牛的起点不是1,直接不可能。对于每个确定要使用的牛,从下一头开始找,找出区间有重合(此处要小心),并且终点最远的那个,然后确定

2015-08-10 15:25:15 583

原创 挑战练习题 基础的动态规划算法

poj 3176 数塔 比较容易 每个数可以由他上面左边和正上面的数转化而来。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define M 400#define INF 0x3f3f3f3fint dp[M][M];int s[M][M];

2015-08-10 11:31:24 364

原创 bestcoder #50 div2

最近感觉做题水准好差劲啊,跟最近生活不规律有点关系?还是得加油,多思考多练习。dp还是要加强。 1001很水,就是找出那个出现次数多于一半的那个。 1001#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define M 100009int a

2015-08-09 21:14:31 471

原创 线段树 入门总结 hdu 1754 1161

单点更新的线段树。包括区间最值问题,区间之和问题。 线段树擅长处理一个区间之内的查询与更新。 线段树学习: 线段树上的每一个节点都维护一段区间,根节点维护的是整个区间,一个父节点的左节点维护的是将父亲的区间二等分之后的左边那个区间,右节点同理。 下面都以区间最值问题为例。可以在O(log n)的复杂度下完成查询某一个区间的最值,或者修改某一个值。 主要有三个操作 1)建树。2)查询。3)更

2015-08-07 22:37:30 545

原创 poj 3320 尺取法

链接:http://poj.org/problem?id=3320 还是运用尺取法的思路。 思路: 将头往前走,如果这个知识点没有出现过,将已有的知识点数量+1。如果覆盖了所有知识点,更新当前的最少页数。此时在判断尾巴出现的知识点是否出现超过一次,如果超过一次,那么就将尾巴往前移。因为如果没有超过一次也往前移的话,那么知识点就会少一个,导致之后头要往前移才有可能再次覆盖所有知识点,才可能再次更

2015-08-06 21:19:22 449

原创 poj 3061 尺取法

链接:http://poj.org/problem?id=3061 尺取法学习: 将头一直往前去,知道满足条件为止,然后将尾巴往前移动一位。循环这个操作,直到不能再满足条件了。 思路: 记录头和尾的下标,再记录总和。 1)将头的下标一直往前移动,直到满足总和>=S,或者超出序列,如果满足总和>=S,更新连续的最短长度。否则结束操作 2)总和减掉末尾元素,同时将尾往前移动。 循环1) 2

2015-08-06 20:42:08 416

原创 poj 3111 最大化平均值

链接:http://poj.org/problem?id=3111 题意:给一堆物品,给出价值和重量,要求从中选出k个物品使得单位重量的价值最大。∑上标下标\sum_{下标}^{上标} 思路:一开始想是不是贪心,按单位价值从大到小排序,后来发现不是。还是要采用二分法枚举单位价值,从而进行判断当前的假定值是否能用所给的这些物品满足。假定当前单位价值是x,也就是判断∑vi\sum vi / ∑wi\

2015-08-05 16:48:49 425

原创 poj 2456 最大化最小值

链接:http://poj.org/problem?id=2456 最大化最小值问题,类似的还有最小化最大值,最大化平均值。比较经典的问题。 思路:二分枚举这个最小值,构造一个贪心法,判断将当前这个假定的最小值是否可以作为最小值,也就是判断是否能够使任意两头牛之间的距离都不小于这个最小值。如果是,意味着可以作为最小值,将其变大再判断,不可以将其变小。 感觉这种题的关键在于怎么构造那个判断函数,

2015-08-05 16:30:59 987

原创 poj 1064 二分

挑战p140 链接:http://poj.org/problem?id=1064 这题不难,二分很容易想到,就是精度感觉好难受··· 一直WA 思路:二分枚举最长的长度,判断当前的这个假定的长度是否可以切割出k条绳子。如果可以说明可以将这个长度在变长点,如果不行,将其变小再试。 要小心的就是最后区间左右端的选择。个人觉得如果可行将mid付给low,low 应该是表示可以割出的,最后应该输出l

2015-08-05 15:53:55 482

原创 hdu 1690 floyd

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1690 出现了两个傻逼错误··· 找了十年。 将数组大小M开成了4。。hdu 好像不能用lld。得用I64d。 教训: 再简单的题也要小心,防止傻逼错误。。努力1Y。#include <iostream>#include <cstdio>#include <cstring>#include <al

2015-08-05 15:41:09 376

原创 hdu 1596 floyd

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1596 同一张图多次询问,使用floyd最好. O(n3n^3)的复杂度,看一下数据范围 1000 还是可以。 较水 但是还是WA了一发。。 0表示两点之间没有通路,所以如果不能到的话应该是0。 由于是double 小心精度总是好的。#include <iostream>#include <cst

2015-08-04 17:20:23 446

原创 hdu 4548 素数打表

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4548 方法:筛法打表,再将是素数的中判断是不是美素数。比较裸。但是就是一开始这样做会超时。重新用一个数组来保存到当前数字时已经出现了几个美素数,最后将区间两端所对应的相互减一下就可以了。#include <iostream>#include <cstdio>#include <cstring>usi

2015-08-03 15:04:09 681

原创 codejam 2008 APAC local onsites C 概率dp

链接:https://code.google.com/codejam/contest/32005/dashboard#s=p2 概率dp着实不懂。。只能学习。 解法: 首先发现这个问题是一个连续的问题,因为你的赌注是任意的,还可以是小数。但是可以从最简单的情况入手来分析。 从只有一轮的时候分析,1)如果手上直接有100w的钱就有1的概率可以带回家,2)如果手上小于50w的钱,那么怎么样都不可

2015-08-03 14:54:01 961

原创 google code jam 2009 round1 c

链接:https://code.google.com/codejam/contest/189252/dashboard#s=p2 题意:释放一个犯人就需要给他身边的犯人各一个金币,一直扩展到空牢房或者是墙。给了你几个需要释放的犯人的序号,问采用什么样的顺序释放能够使得所花的金币数量最少。 分析: 可以将问题进行分解,释放一个所需的金币就是1)释放这个人所需的,2)释放左边全部犯人所需的,3)释

2015-08-01 15:13:37 594

原创 floyd + 记录路径 hdu 1385

floyd算法: 用于求解全源最短路径问题,也就是任意两点间的最短路径。 定义d[k][i][j]为只使用0~k的情况下以i为起点到j的最短路径。 将0~k的情况归约到0~k-1的情况。当0~k时,分为两种情况一种是只经过k一次,另一种是不经过k。若不经过k,那么d[k][i][j] = d[k-1][i][j]。如果经过k,那么d[k][i][j] = d[k-1][i][k]+d[k-1]

2015-08-01 14:04:38 1197 1

空空如也

空空如也

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

TA关注的人

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