
acm解题报告
文章平均质量分 55
qr_blog
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
acm解题报告 HDU 1969 Pie
因为题目要求分给每个人的派都是来自一个派的而不是拼接的,所以没人得到的派大小一定小于最的大派,先从大到小排序。然后对第一个(最大的派)进行二分操作,low=0,high=最大派的大小。mid=(high+low)/2。判断如果以这个大小能否得到指定块数的派。源代码:#include#include#define pi 3.14159265358979323846using na原创 2015-07-23 10:12:01 · 515 阅读 · 0 评论 -
acm解题报告 HDU 1061 Rightmost Digit
要得到最右边那一位数字只需将N^Nmod10即可,但是当N很大时,N^N算不出来,所以需要用上同余的性质,即(a^b)mod c=(a^(b mod c))mod c。所以求N^Nmod10的快速方法是对幂数N进行二分,如果N为偶数则N^N=N^(N/2)*N^(N/2),如果为奇数N^N=N^(N/2)*N^(N/2)*N。源代码:#includelong long rightm原创 2015-07-23 10:24:22 · 347 阅读 · 0 评论 -
acm解题报告 POJ 2366 Sacrament of the sum
使用二分加暴力的方法可以解决这题,对第一个序列遍历,第二个序列进行二分查找。时间复杂度:n*log(2)n源代码:#includeint a[50010], b[50010];int main(){ int n1, n2; scanf("%d", &n1); for (int i = 0; i scanf("%d", &n2); for (int i = 0;原创 2015-07-23 10:39:08 · 440 阅读 · 0 评论 -
acm解题报告 HDU 2899 Strange fuction
首先将方程求导,发现从0到导数为零的范围,原方程递减,之后方程递增,所以求出导数为0的点即为最小值点,与HDU 2199 类似,通过二分的方法找到精确的最小值点,然后带到原方程中即得到最小值。源代码:#includedouble cal1(double x, double y){ double a = 6 * x*x*x*x*x*x*x + 8 * x*x*x*x*x*原创 2015-07-23 09:53:02 · 349 阅读 · 0 评论 -
acm解题报告 HDU 2199 Can you solve this equation?
由于方程式单调递增的,所以直接使用二分,找到误差不超过0.00005的解就可以了。源代码:#includedouble cal(double a){ double y = 8 * a*a*a*a + 7 * a*a*a + 2 * a*a + 3 * a + 6; return y;}double decimal(double a){ double b=0; r原创 2015-07-23 09:46:43 · 295 阅读 · 0 评论 -
acm解题报告 HDU 2141 Can you find it?
如果使用最暴力的方法,那么时间复杂度是500*500*500*1000=1.25e11>>3*3*10e8.所以肯定超时了,如果使用二分的方法,时间复杂度为500*500*log(2)500*1000≈1.3e9>9*10e8。还是会超时,但是如果现将前两个数组两两相加的结果存在一个新数组并排好序后使用二分,时间复杂度为500*500+2*log(2)500+1000*500*2*log(2)50原创 2015-07-23 09:30:08 · 417 阅读 · 0 评论