POJ 2405 Beavergnaw C++版
题目链接:http://poj.org/problem?id=2405
纯数学问题,给出D和咬去的V求d,先开始一直再查圆台的体积公式,是这样的:
V=πh(R2+Rr+r2)/3
r-上底半径
R-下底半径
h-高
然而解方程真不方便,后来看到大神用定积分来解题,一下觉得自己高数没学好,真实损失大,直接d的三次方-6v除派再开三次方
代码如下:
1 | /*Problem: 2405 User: awq123 |
题目链接:http://poj.org/problem?id=2405
纯数学问题,给出D和咬去的V求d,先开始一直再查圆台的体积公式,是这样的:
V=πh(R2+Rr+r2)/3
r-上底半径
R-下底半径
h-高
然而解方程真不方便,后来看到大神用定积分来解题,一下觉得自己高数没学好,真实损失大,直接d的三次方-6v除派再开三次方
代码如下:
1 | /*Problem: 2405 User: awq123 |
题目链接:http://poj.org/problem?id=2381
解释下题意,依次用(a×c+r)%m取随机数,直到循环,然后求在这些随机数里哪个区间最大,是多少!
这个题我很是郁闷了一晚上,做到完全想不出有什么问题了,还是WA,后来百度直到问的别人,我原来的代码是
1 | temp=0;flag=0;max=0; |
1 | if(d[i]==0&&flag;==1) |
1 | if(d[i]==1&&flag;==1) |
代码如下:
1 | /*Problem: 2381 User: awq123 |
题目链接:http://poj.org/problem?id=1183
中文题目,不错,哈哈,不多说,拿笔画!
PS:用int会超时哦!
代码如下:
1 | #include <iostream> |
题目链接:http://poj.org/problem?id=1050
题目要求我们求出和最大的子矩阵。
我输入数据的时候,做了个小处理,就是用这个坐标表示到原点的矩阵和,这样后面只要计算对角线点的值就行了,不过这题for语句真的好多,这样的矩阵题还是比较熟的。
不多解释,不难!
代码如下:
1 | /*Problem: 1050 User: awq123 |
题目链接:http://poj.org/problem?id=1005
水题,文字还一大串,题意就是那个半圆每年增加50平米,问多少年到(x,y)这个点
代码如下:
1 | /*Problem: 1005 User: awq123 |
题目链接:http://poj.org/problem?id=2350
水题,让我们求成绩高于平均成绩的百分比,然而这题没有给我们巨大的数据量,普通硬做就是了,不解释了!
代码如下:
1 | /*Problem: 2350 User: awq123 |
题目链接:http://poj.org/problem?id=2346
介绍下题意,给定一个偶数 n,求 n 位 lucky tickets 的个数,lucky tickets就是 n 位数可含前导 0,前 n/2 项上数字和等于后 n/2 项上数字和。
先上一种最简单的算法,我们管它叫流氓算法,再算法分类上算穷举把!
玩笑而已。之所以这样是因为我都知道答案了,而且数据不多。
代码如下:
1 | /*Problem: 2346 User: awq123 |
题目链接:http://poj.org/problem?id=2334
这个题,有人说是水题,其实不然,很有难度的。
介绍下题目,一组字符串,可以压缩,比如
abc
atest
atext
可以写为
abc
1test
3xt
这样说就容易理解了,就是把与上个字符串相同的部分直接用数字表示,来节约位置,问压缩后用多少字符数(尽管多位数不是一个数,但是储存算一个单位)
现开始理解错了题意,以为所有字符串公用同一个j,后来WA了好多次,才知道每一个j只与上一个字符串有关!
介绍下我的算法,定义b和c两个字符串,每次c为上一个,b为新输入的字符串,然后依次扫描。有一点我觉得比较有意思的,我原来代码是
1 | for(j=0;j<strlen(b);j++) |
代码中很明显可以看出,每一行使用的字符数,为字符串长-相同的长度+1.
代码如下:
1 | /*Problem: 2334 User: awq123 |
题目链接:http://poj.org/problem?id=2313
V = (|A(1) – B(1)| + |A(2) – B(2)| + … + |A(N) – B(N)|) + (|B(1) – B(2)| + |B(2) – B(3)| + … +|B(N-1) – B(N)|)
将公式简单变形就可以推出b[0]=a[0]和b[n-1]为区间[a[n-1],bn-2内的任意一个数或者b[n-1]=a[n-1]和b[0]为区间[a[0],b[1]]区间内的任意一个数,而考虑b[i],即要使 |b[i]-a[i]|+|b[i]-b[i+1]|+|b[i-1]-b[i]|的值最小,即在数轴上找一点满足到点a[i],b[i+1],b[i-1]的距离之和最小,显然该点(即b[i])为这在数轴上三个点中间的一个点(即三个数的中位数),由上面的叙述b[0]已知,现在求b[1],我们可以将a[2]后面的数字暂时去掉,可知这时b[2]=a[2],由b[0],b[2],a[1]这时可以求出b[1],同理求b[2]时采用同样的方法处理。*
代码如下:
1 | /*Problem: 2313 User: awq123 |