码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2015 (水)

时间:2018-07-27 01:21:11      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:targe   记录   方法   math   hive   判断   效果   https   开心   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2015

题目大意:给你个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,让你按顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值

解题思路:

 记录 n = 100 的数列的 100 个 前 n(n为1 ~ 100) 项和,一个长度为 n 的 “滑动窗口”, 从头滑动到尾,过程中每次停滞都做一次除以 n 的操作并输出,注意格式,最后判断有没有剩下的了,有就输出来

 

PS:感觉自己代码写的好丑,思路好挫,因为既然是偶数应该有办法不去计算,直接输出某个数,或者某两个数的平均数,先上AC代码吧,其他的学会了一会来更新

(代码和题目 m, n的意思反了,代码 m 表示长度为 m 的数列,n 表示每 n 个求平均值)

代码:

 1 #include<iostream>
 2 #include<cmath>
 3 #include<iomanip>
 4 #include<algorithm>
 5 using namespace std;
 6 int num;
 7 int s[105];
 8 int main()
 9 {
10     for(int i = 1; i <= 100; i ++)
11         s[i] = s[i - 1] + 2 * i;
12     int m, n;
13     while(cin >> m >> n)
14     {
15         for(int i = 1; i <= m / n; i ++)
16         {
17             if(i == 1)
18                 cout << (s[n * i] - s[n * i - n]) / n;
19             else
20                 cout << " " << (s[n * i] - s[n * i - n]) / n;
21         }
22 
23         if(m % n != 0)
24             cout << " " << (s[m] - s[m / n * n]) / (m - m / n * n);
25         cout << endl;
26     }
27 }
28 
29 //2 4 6 8 10//更好的办法

                          

 

                      **********更新*********

 

学会了方法二:http://www.cnblogs.com/ibosong/archive/2012/02/16/2353499.html

思路挺好的,不需开数组,一次遍历,途中有能整除 n 的,就输出一次,数列结束了就判断是否有剩下的数

发现规律 hdoj  P11 这前几道题就是可以优化,少去开数组,只用一个变量就可以解决的

 

                      **********第二次更新*********

超级开心,网上没找到这种方法技术分享图片

思路就是我发现所有输出的数字都是 n + 1,(n + 1) + n * 2,((n + 1) + n * 2)+ n * 2 ,(((n + 1) + n * 2)+ n * 2)+ n * 2....,所以用一下前 n 项和公式再搞搞就出来了啦

但感觉挺开心挺好的思路,拿到现场塞上去写好疼啊,又耗时间(思考时间),又不好搞,还是方法一正常一些吧,感觉思路好但显现效果不大

1A代码:

 

 1 #include<iostream>
 2 #include<cmath>
 3 #include<iomanip>
 4 #include<algorithm>
 5 using namespace std;
 6 int num;
 7 int s[105];
 8 int main()
 9 {
10     int m, n;
11     while(cin >> m >> n)
12     {
13         for(int i = 1; i <= m / n; i ++)
14         {
15             if(i == 1)
16                 cout << n + 1;
17             else
18                 cout << " " << n + 1 + 2 * n * (i - 1);
19         }
20         if(m % n != 0)
21             cout << " " << (m + m * m - (m / n * n + pow(m / n * n, 2))) / (m - m / n * n);
22 
23         cout << endl;
24     }
25 }

 附上自己的CSDN:https://blog.csdn.net/zxc13936130136

 

唉,静下心来想想,我都大三了,打算考研,却都没脸说自己打过acm,一无是处穷途末路,什么都没有...

还想考去bupt,前阵子在被知乎大佬们教会了认清现实 https://www.zhihu.com/question/268311128/answers/created ,还有每天看到acm群他们的日常生活啊,讨论的东西啊,这就是我渴望到窒息都想要的生活啊,可是感觉自己差的好远好远菜的没话说,还有考研,保研群里真觉得自己好菜好菜啊,给他们提鞋的提鞋都不配,每天看不到希望的灯塔,感觉离梦想渐行渐远......

可是,这条路只有自己才能克服,别人不能代劳。努力吧,欲得早成,戒心自律!

 

因果,代价,弥补。

自强不息!

HDU 2015 (水)

标签:targe   记录   方法   math   hive   判断   效果   https   开心   

原文地址:https://www.cnblogs.com/mimangdewo-a1/p/9374839.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!