zoukankan      html  css  js  c++  java
  • HDU 2015 (水)

    题目链接: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群他们的日常生活啊,讨论的东西啊,这就是我渴望到窒息都想要的生活啊,可是感觉自己差的好远好远菜的没话说,还有考研,保研群里真觉得自己好菜好菜啊,给他们提鞋的提鞋都不配,每天看不到希望的灯塔,感觉离梦想渐行渐远......

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

    因果,代价,弥补。

    自强不息!

  • 相关阅读:
    js元素remove
    sql里将重复行数据合并为一行,数据用逗号分隔
    treegrid 折叠全部节点
    T-sql 遍历结果集
    批量插入实体类转化DataTable
    easyui 自己写的一些小东西
    lua 笔记
    为eclipse添加tomcat插件(eclipse tomcat plugin)
    netstat指令
    转 vim常用命令总结
  • 原文地址:https://www.cnblogs.com/gerjcs/p/9374839.html
Copyright © 2011-2022 走看看