自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

关于学习本身

很久不在

  • 博客(18)
  • 问答 (1)
  • 收藏
  • 关注

原创 CodeForces 527A--卡时间

题意:把 a*b 的一张矩形的纸不断地折,直到最后得到都是正方形。求得到的正方形的个数。分析:如果直接模拟的话会超时。所以画图找规律。代码:#include#includeusing namespace std;long long t,a,b,tmp;int main(){ while(cin>>a>>b){ t=0; if(a<b) swap(a,b); wh

2015-05-31 20:24:30 938

原创 HDU 4143--卡时间

题意:给定n,求能找到y使  y^2 = n + x^2 成立的最小的x分析:把n拆成两个数的乘积 n = a*b,则 y = (b+a)/2 ,x = (b-a)/2。暴力枚举a,b找到满足(b+a)%2==0,(b-a)%2==0,且(b-a)>0的最小值即可。不过会超时,所以适当处理一下:由于x必须大于零,所以枚举的b必须大于a,而且要满足 | b-a | 最小(因为求最小值),所以从s

2015-05-31 19:36:33 654

原创 HDU 1331--DP--(递归保存中间结果)

题意:题目给出了递归计算式,让你编程用这个计算式求出结果。分析:递归会超时,用DP保留中间结果。DP不光是只有状态转移方程还可以用于递归保存中间结果以节约时间。代码:#include#includeusing namespace std;int dp[100][100][100];int DP(int a,int b,int c){ if(a<=0||b<=0||c<

2015-05-31 12:18:36 1687

原创 hdu 1355--似乎并不是dp

题意:一个二维数组上有些值为0,有些值不为零,一个人从数组外进入数组取这些值,但是必须从大到小拿,每走一步要一单位的时间,取数也要一单位的时间,进入数组和出数组分别要一单位的时间。求在规定的时间内能取到的最大的值(开始在数组外,需在规定的时间内返回数组外)。分析:我并不知道这题跟dp有多大的关系。做法是把数组从大到小排序,然后遍历这些值,每次计算若取走这个值还剩下的时间,如果剩下的时间不足以返

2015-05-30 01:22:32 986 1

原创 hdu 1257--dp/贪心

题意:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。请帮助计算一下最少需要多少套拦截系统。分析:贪心或者dp都可以。dp[i]表示拦截第i个导弹需要的最少的系统个数,dp状态

2015-05-29 21:02:19 469

原创 !hdu 1203--dp--(加深理解)

题意:小明有n元钱,他想申请国外的学校,申请第i所学校要用si的费用,申请成功的概率是pi,求小明至少能申请成功一所学校的概率。分析:概率当然是从反面求最小值。状态转移方程:dp[i]=min(dp[j]*p[i],dp[i]),我想错了,我就按照以前的dp的套路依照数组来遍历,还先排了序,dp[i]代表申请第i所学校时的最优解;正确的应该是从费用出发,dp[i]表示用了i元钱时的最优解,这才

2015-05-29 00:18:55 1191 2

原创 !hdu 4091--贪心、枚举--(思维)

题意:有一个容量为n的箱子,有两种珠宝,占的体积和价值分别是s1,v1,s2,v2,求能装下的最大的价值总量。分析:刚开始以为是背包问题,但其实没那么简单;后来分情况讨论还是不行;后来又暴力枚举,当然是超时了。正确做法是有一部分是用背包的贪心,另一部分用枚举!现在就是看哪一部分用贪心。看别人的题解是:L = LCM(s1,s2),可是知道大于L的部分就用价值比高的,所以n%L的部分枚举,其

2015-05-28 23:01:09 967 1

原创 HDU 1087--DP--(水)

题意:有一数轴,中间有n个具有不用权值的点可以走,每一步只能从权值低的跳到权值高的点,求从起点走到终点能收集到的最大的权值。分析:基础的dp.  dp[i]代表走到i点时收集到的最大权值。状态转移方程:dp[i]=max(dp[j]+a[i],dp[i])  其中 j代码:#includeusing namespace std;int n,a[1001];long long dp

2015-05-27 23:21:56 1213

原创 !HDU 1176--DP--(矩阵动规)

题意:有一个数轴,从0到10,小明开始在5这个位置。现在天上开始掉馅饼,小明每次只能移动单位一的长度,求小明最多能接到多少馅饼。分析:刚开始接触动态规划,还没有真正理解动规的思维,所以刚开始的dp做法不知道对不对但是TLE了。正确的方法是建立一个以时间为行位置为列的矩阵,最初map[i][j]代表的是第i时刻j位置掉的馅饼的数量,状态转移方程:map[i][j]=map[i][j]+max(m

2015-05-27 19:31:16 1099

原创 !HDU 4145--思维(yy题)--(细节)

题意:有两个中心点A,B,有其他n个点,每个点到中心点都有以它们的距离为半径的圆的辐射范围,求最小的辐射范围半径能覆盖所有的点。分析:这题纯靠想解题方法。一开始方向走错了一直WA。开始的想法:每输入一个点就计算它到A,B的距离,只取较小值,不断更新结果。WA的过程中才慢慢发现这样做会有很多特殊情况,但当时都没想过要换思路,只是不断地增加代码讨论情况,下次一定记得发现方法有很多不足就转换思路。正

2015-05-27 00:42:09 903

原创 HDU 1069--DP--(摞箱子问题)

题意:有n中箱子,可以任意选择它的面作为底面,只有当底面的长和宽严格小于下面的箱子时才能放在下面的箱子上。求用这n种箱子能摞的最高的高度(每种箱子的个数不限)。分析:dp 转移方程:dp[i]=max(dp[j]+a[i],dp[i]),j 从 0 到 i-1,在计算状态转移方程之前先判断箱子的长宽是否满足条件。预先要按照能摞的条件把箱子排序,然后dp;注意每种箱子有三种放置方式,相当于有三种

2015-05-26 23:25:56 1282

原创 HDU 1003--DP(最大子序列和)

题意:一组数列,求子序列和的最大值以及首末位置。分析:dp,转移方程是:dp[i]=max(dp[i-1]+a[i],dp[i])         这里要求记录序列的位置所以dp设为二维数组,dp[0]用来记录首位置,末位值就是i,首位置用dp应该是这样的:如果发生了上面的状态转移则dp[i][0]=dp[i-1][0]         注意:如果有多种答案,输出第一种。所以最好i从1

2015-05-26 20:32:57 888

原创 !CodeForces 287B--(贪心、二分)

题意:有2到k个出水管的k-1个水管,有n个房子,求用最少的水管把水送到每一家分析:贪心思想从最大的开始用,只要求出等差数列的和大于等于n的最小的即为所求。(注意:不用管实际结果是不是真的用等差数列,因为只要)          二分法找每次计算的等差数列和的最左值。

2015-05-21 17:01:43 917

原创 CodeForces 66D--思维(yy)

题意:求n个两两不互质,但是整体互质的整数,如果不存在输出-1.分析:yy题,找规律。整体互质只要满足其中三个互质就行了,用a,b,c这三个质数构造a*b,b*c,a*c这三个数,之后的n-3个数只要形如a*c*i这样的形式就行了代码:#includeusing namespace std;int main(){ int n; cin>>n; if(n==2) cout<<

2015-05-20 20:08:18 1159

原创 CodeForces 11B--(YY题)

题意:从零点出发,第i步的步长为i,求走到x的最少的步数。分析:我一直以为这是道广搜题,

2015-05-19 18:30:18 907

原创 Codeforces 71C--剪枝

题意:圆上均匀的分布n个点,每个点的值为1或者0,求是否存在以1(不需要用完所有值1的点)为顶点的正多边形分析:由于n个点已经是均匀分布的所以如果存在正多边形那么边数一定是n的约束(仔细思考),所以约束条件又多了一些           初步分析数据范围是10的5次方,枚举会超时,但是其实加上正多边形的条件剪枝不会超时代码:#includeusing namespace std;

2015-05-19 17:40:16 1430 1

原创 HDU 4001--Dp--(第一道dp)

因为是偏序关系所以很明显dp,先排序再dp就得到结果了。     1.注意理解dp的思想      2.注意这里的排序。从低到高按最容易满足条件的并且要求最高的开始排      3.用int直接算面积会溢出,要么设为long long 要么不直接算面积代码:#include#include#includeusing namespace std;int n;long lon

2015-05-08 12:45:19 843

原创 缓冲区溢出笔记(2.0)

首先得会内存、寄存器还有程序运行的规则。存储知识:     文件地址(File Offset):数据在PE文件中的地址,文件在磁盘上存放时相对于文件开头的偏移;     虚拟内存地址:每个进程都有的4G虚拟空间;     物理内存地址;这三个地址要层层映射内存:    代码区:存放二进制代码    数据区:存储全局变量    堆区:动态内存空间(还没太明

2015-05-07 22:56:35 911

空空如也

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

TA关注的人

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