A题

子序列和啊,就要想到前缀和的差。这个转换一定要!记着!那么i到j的一段子序列和Sij%m ==  0就等价于(Sj-Si-1)%m == 0 了,那么什么意思呢?就是如果有两段前缀和%m的模是一样的,那么是不是就存在着一段子序列满足条件了,然后注意一下边边角角应该就没问题了。
因为ZOJ坏掉了,所以我尚未验证以下答案的ans是否就是满足条件的序列总数!移步ZOJ1569自行验证。

 #include <cstdio>
 #include <set>
 #include <map>
 #include <queue>
 #include <cmath>
 #include <algorithm>
 #include <cstring>
 using namespace std;
 typedef long long LL;
 const int INF = 0x3f3f3f3f;

  + ];
 int main()
 {
     int t;
     scanf("%d",&t);
     while(t--)
     {
         ,sum = ;
         memset(num,,sizeof(num));
         scanf("%d%d",&n,&m);
          ; i < n; i++)
         {
             scanf("%d",&x);
             sum = (sum + x) % m;
             ) ans++;
             num[ sum ]++;
         }

         ; i< m; i++)
         {
             ans += (num[i] - ) * num[i] / ;
         }
         )
             printf("YES\n");
         else
             printf("NO\n");
     }

     ;
 }

B题(思路)

这个应该算是个贪心。真尼玛= =,脑洞题。

我也不知道怎么讲比较好,自己拿个笔和纸琢磨一下,应该就搞懂了,网上那些题解说的感觉也不好。还是要拿笔,照这个程序,手动模拟一下,应该就能搞懂了。

 #include <cstdio>
 #include <set>
 #include <map>
 #include <queue>
 #include <cmath>
 #include <algorithm>
 #include <cstring>
 using namespace std;
 typedef long long LL;
 typedef long long LL;
 const int INF = 0x3f3f3f3f;
 ;
 int a[maxn];
 int main()
 {
     int t,n,m;
     scanf("%d", &t);
     while(t--)
     {
         scanf("%d%d", &n, &m);
         ; i < n - ; i++)
             scanf("%d", &a[i]);
         sort(a, a + n - );
         LL ans = n;
         ; i< n - m; i++)
             ans += a[i];
         printf("%I64d\n", ans);
     }
     ;
 }

C题

这题竟然是交一暴力就能A了。。我也是醉了啊。

学个小姿势:素数定理

也就是说1到n以内的素数个数大概是O(sqrt(x) * ln x)个

那么就可以看出这道题,枚举暴力的时间复杂度,其实就是对n=sqrt(x),的前后的一些素数进行枚举嘛,所以最多和1到sqrt(x)范围内的素数个数差不多?所以暴力的时间复杂度O(n4logn2\sqrt[4]{n}log\sqrt[2]{n},所以能直接枚举。

素数,总是要注意一些比2小的数的情况。这道题里面还有什么,是不是正数啊,有没有加LL啊,巴拉巴拉啦。打高亮了。

 #include <iostream>
 #include <cmath>
 #include <cstdio>
 #include <algorithm>
 using namespace std;
 typedef long long LL;
 const LL INF = 0x3f3f3f3f3f3f3f3fll;
 LL x,z,ans;
 bool judge(LL t)
 {
     ) return false;
     LL temp = t;
     ; i * i <= temp; i++)
     {
         )
         {
             )
                 return false;
             temp /= i;
         }
     }
     ans = min(ans,abs(t * t - x));
     return true;
 }
 void solve()
 {
     ;
     LL z = sqrt(x);
     if(z * z < x) z++;
     for(LL i = max(z,2LL);;i++)
     {
         if(judge(i))
             break;
     }
     ;i>;i--)
     {
         if(judge(i))
             break;
     }

 }
 int main()
 {
     int T;
     scanf("%d",&T);
     while(T--)
     {
         scanf("%I64d", &x);
         ans = INF;
         solve();
         printf("%I64d\n",ans);
     }
     ;
 }

​4​​√​n​​​log​2​​√​n​​​)

BestCoder Round #85(ZOJ1569尚未验证)的更多相关文章

  1. BestCoder Round #85 hdu5778 abs(素数筛+暴力)

    abs 题意: 问题描述 给定一个数x,求正整数y,使得满足以下条件: 1.y-x的绝对值最小 2.y的质因数分解式中每个质因数均恰好出现2次. 输入描述 第一行输入一个整数T 每组数据有一行,一个整 ...

  2. BestCoder Round #85 hdu5777 domino

    domino 题意: 问题描述 小白在玩一个游戏.桌子上有n张多米诺骨牌排成一列.它有k次机会,每次可以选一个还没有倒的骨牌,向左或者向右推倒.每个骨 牌倒下的时候,若碰到了未倒下的骨牌,可以把它推倒 ...

  3. BestCoder Round #85 hdu5776 sum

    sum 题意: 问题描述 给定一个数列,求是否存在连续子列和为m的倍数,存在输出YES,否则输出NO 输入描述 输入文件的第一行有一个正整数T,表示数据组数. 接下去有T组数据,每组数据的第一行有两个 ...

  4. HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化

    分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...

  5. HDU5779 Tower Defence (BestCoder Round #85 D) 计数dp

    分析(官方题解): 一点感想:(这个题是看题解并不是特别会转移,当然写完之后看起来题解说得很清晰,主要是人太弱 这个题是参考faebdc神的代码写的,说句题外话,很荣幸高中和faebdc巨一个省,虽然 ...

  6. HDU 5778 abs (BestCoder Round #85 C)素数筛+暴力

    分析:y是一个无平方因子数的平方,所以可以从sqrt(x)向上向下枚举找到第一个无平方因子比较大小 大家可能觉得这样找过去暴力,但实际上无平方因子的分布式非常密集的,相关题目,可以参考 CDOJ:无平 ...

  7. HDU5777 domino (BestCoder Round #85 B) 思路题+排序

    分析:最终的结果肯定会分成若干个区间独立,这些若干个区间肯定是独立的(而且肯定是一边倒,左右都一样) 这样想的话,就是如何把这n-1个值分成 k份,使得和最小,那么就是简单的排序,去掉前k大的(注意l ...

  8. HDU 5776 sum (BestCoder Round #85 A) 简单前缀判断+水题

    分析:就是判断简单的前缀有没有相同,注意下自身是m的倍数,以及vis[0]=true; #include <cstdio> #include <cstdlib> #includ ...

  9. BestCoder Round #85

    sum Accepts: 640 Submissions: 1744 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/13107 ...

随机推荐

  1. 国内优秀npm镜像推荐及使用

    npm全称Node Package Manager,是node.js的模块依赖管理工具.由于npm的源在国外,所以国内用户使用起来各种不方便.下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选 ...

  2. APP开发+发布流程

    ios开发(证书+应用发布) 证书获取:http://newdocx.appcan.cn/newdocx/docx?type=1297_1291ios应用发布:http://newdocx.appca ...

  3. RDS MySQL 空间问题的原因和解决

    来源:https://help.aliyun.com/knowledge_detail/41739.html RDS MySQL 空间问题的原因和解决 更新时间:2016-07-22 17:20:14 ...

  4. java源码分析:Arrays.sort

    仔细分析java的Arrays.sort(version 1.71, 04/21/06)后发现,java对primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用 ...

  5. NodeJs框架

    Node.js非常适用于Web开发,但是现在无论是一个网站,还是Web App都已经成为包括很多不同部分,如前端.数据库.业务模块.功能模块等等的大型项目,使用Node.js从零开始进行Web开发,也 ...

  6. javascript操作referer

    Referrer的重要性 HTTP请求中有一个referer的报文头,用来指明当前流量的来源参考页.例如在www.sina.com.cn/sports/上点击一个链接到达cctv.com首页,那么就r ...

  7. Linux/CentOS 搭建 SVN 项目

    1.安装svn yum  -y  install   subversion 2.创建svn仓库路径 mkdir  -p   /opt/svn/project1 mkdir  -p   /opt/svn ...

  8. 一些PHP性能优化汇总

    PHP优化对于PHP的优化主要是对php.ini中的相关主要参数进行合理调整和设置,以下我们就来看看php.ini中的一些对性能影响较大的参数应该如何设置. # vi /etc/php.ini (1) ...

  9. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  10. 如何查看、修改Linux的系统时间

    如题: 如何修改Linux的系统时间? date -s 05/27/2011 date -s 10:24:00 clock -w 就这三条命令就OK了! 查看/修改Linux时区和时间 一.时区 1. ...