2300. 【noip普及组第一题】模板题

(File IO): input:template.in output:template.out

时间限制: 1000 ms  空间限制: 262144 KB  具体限制

题目描述

输入

输出

样例输入

样例输出

数据范围限制

朴素算法

考试开始的前一个小时我一直在折腾朴素算法 -> 对拍

  1. #pragma GCC optimize(2)
  2. #include<bits/stdc++.h>
  3. #define IL inline
  4. using namespace std;
  5. int a[];
  6. bool vis[];
  7. int n,k,maxans;
  8. bool cmp(int a,int b)
  9. {
  10. return a>b;
  11. }
  12. int gcd(int a,int b)
  13. {
  14. if(b==) return a;
  15. if(b==) return ;
  16. if(a%==&&b%==) return *gcd(a/,b/);
  17. if(a%==&&b%==) return gcd(a,b/);
  18. if(a%==&&b%==) return gcd(a/,b);
  19. if(a%==&&b%==) return gcd(b,a%b);
  20. // return (b==0)?a:gcd(b,a%b);
  21. //这里还用到了二进制gcd(会更快一点)
  22. }
  23. void search(int depth/*k*/,int now)
  24. {
  25. if(depth==k) {
  26. maxans=max(maxans,now);
  27. return;
  28. }
  29. int maxgcd=,maxnum=;
  30. for(int i=;i<=n;i++)
  31. {
  32. if(vis[i]) continue;
  33. if(gcd(now,a[i])>maxgcd){
  34. maxnum=i;
  35. maxgcd=gcd(now,a[i]);
  36. if(depth+<k){
  37. vis[i]=;
  38. search(depth+,maxgcd);
  39. vis[i]=;
  40. }
  41. }
  42. if(depth+==k)
  43. {
  44. vis[i]=;
  45. search(depth+,maxgcd);
  46. vis[i]=;
  47. }
  48. }
  49. }
  50. int main()
  51. {
  52. freopen("template.in","r",stdin);
  53. freopen("template.out","w",stdout);
  54. cin>>n;
  55. for(int i=;i<=n;i++)
  56. scanf("%d",a+i);
  57. sort(a+,a+n+,cmp);
  58. for(k=;k<=n;k++)
  59. {
  60. if(a[k]==){
  61. printf("1\n");
  62. continue;
  63. }
  64. maxans=;
  65. for(int s=;s<=n;s++)
  66. {
  67. vis[s]=;
  68. search(,a[s]);
  69. vis[s]=;
  70. }
  71. printf("%d\n",maxans);
  72. }
  73. return ;
  74. }

我再也不想看到了

这个算法就是模拟,谁都会写吧?

O(n2)算法

我会写出这个算法来,完全是因为下面的那一种在考试时我写出来有问题

Solution

先在输入的同时预处理出每个数的所有因数(可以是质数,合数,也可以是1)

  1. for(int j=;j<a;j++)
  2. if(a%j==)
  3. array[j]++;

这样子的好处是,我没有保存每一个数,而是统计了所有的因子

这里的array[i]就表示因子有i的数有多少个

于是我们要计算 10,000个数 * 10,000个可能的因子 次询问

哈哈

还是把这种讲完吧

然后再外层循环k++

内层循环i--

一旦有一个array[i]>=k

就把这时的i输出即可

Code(TLE70分)

  1. //#pragma GCC optimize(2)
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. int array[];
  5. int a,n,k,maxa;
  6. int main()
  7. {
  8. freopen("template.in","r",stdin);
  9. freopen("template.out","w",stdout);
  10. cin>>n;
  11. for(int i=;i<=n;i++){
  12. scanf("%d",&a);
  13. for(int j=;j<a;j++)
  14. if(a%j==)
  15. array[j]++;
  16. maxa=max(maxa,a);
  17. }
  18. int b=maxa;
  19. for(k=;k<=n;k++)
  20. {
  21. for(int i=b;i>;i--)
  22. {
  23. if(array[i]>=k){
  24. cout<<i<<endl;
  25. b=i;
  26. break;
  27. }
  28. }
  29. }
  30. return ;
  31. }

Code(TLE70分)

O(n sqrt(n))算法

Solution

纪中10日T1 2300. 【noip普及组第一题】模板题的更多相关文章

  1. 纪中10日T1 2313. 动态仙人掌

    纪中10日 2313. 动态仙人掌 (File IO): input:dinosaur.in output:dinosaur.out 时间限制: 1500 ms  空间限制: 524288 KB  具 ...

  2. 纪中17日T1 2321. 方程

    纪中17日T1 2321. 方程 (File IO): input:cti.in output:cti.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   Goto ...

  3. 2016.9.10初中部上午NOIP普及组比赛总结

    2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...

  4. noip普及组考纲+样题合集——初级篇(OIer必看)

    很明显我是想发提高组合集的.普及组考纲……用发么. 当然如果你想看的话也可以,就一点点: 递归.排序…… 很明显上面那都不是重点.普及组只要掌握搜索.二分.单调队列.数学.随机化等等,一等奖没问题的, ...

  5. 纪中5日T1 1564. 旅游

    1564. 旅游 题目描述 输入N个数,从中选择一些出来计算出总和,问有多少种选法使得和为质数. 输入 第一行一个整数N. 第二行N个整数,表示这N个数的值. 输出 一个整数,表示方案数. 样例输入 ...

  6. 纪中12日T1 2307. 选择

    2307. 选择 (File IO): input:choose.in output:choose.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   Goto Pr ...

  7. 纪中10日T3 2296. 神殿 bfs

    2296. 神殿 (File IO): input:temple.in output:temple.out 时间限制: 1500 ms  空间限制: 524288 KB  具体限制 Goto Prob ...

  8. 2016.8.15上午纪中初中部NOIP普及组比赛

    2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...

  9. 2016.8.17上午纪中初中部NOIP普及组比赛

    2016.8.17上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1335 本来觉得自己能考高分,但只得160分,并列第九.至少又挤 ...

随机推荐

  1. vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点, ...

  2. SSH(一)

    系统程序架构:    整合思路        1.逆依赖方向而行,由Spring提供对象管理和服务        2.依次实现Spring与Hibernate.Spring与Struts2的集成 配置 ...

  3. LinearLayout中组件右对齐

    在LinearLayout中,如果将其定位方向设为横向排列:android:orientation="horizontal",那么这个布局中的控件将自左向右排列. 但有时会有这样的 ...

  4. Asp.net core下利用EF core实现从数据实现多租户(1)

    前言 随着互联网的的高速发展,大多数的公司由于一开始使用的传统的硬件/软件架构,导致在业务不断发展的同时,系统也逐渐地逼近传统结构的极限. 于是,系统也急需进行结构上的升级换代. 在服务端,系统的I/ ...

  5. HDU_1495_模拟

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1495 自己用模拟写的,先除以三个数的最大公约数,弱可乐为奇数,则无解,然后开始模拟. 利用大杯子和小 ...

  6. JVM垃圾回收详解

    通常,我们在写java程序的时候,似乎很少关注内存分配和垃圾回收的问题.因为,这部分工作,JVM已经帮我们自动实现了. 这样看起来,好像很美好,但是任何事情都有两面性.虽然JVM会自动的进行垃圾回收, ...

  7. 虚拟机 .NAT模式下 配置静态ip后无法ping域名,但可以ping公网ip 问题处理

    在之前的文章 https://www.cnblogs.com/dxxdsw/p/10643540.html 中,在虚拟机中给linux配置了静态ip.[.NAT模式] centos系统: 今天连接发现 ...

  8. 11--Java--JDBC知识梳理

    JDBC 一.概述:JDBC(java database connection),使用java语言连接数据库,是java提供一套操作数据库的接口(标准),实现对数据库的统一访问,是一个java引用应用 ...

  9. 本地linux搭建的WordPress升级时需要输入FTP信息

    转自:https://blog.csdn.net/weixin_43837883/article/details/88751871 这是因为目录权限不正确所致 解决方法: 1.使用命令chown -R ...

  10. ELF文件之六——使用链接脚本-2个函数-data-bss-temp

    main.c int enable; ; int main() { int temp; ; } int add() { ; } elf反汇编结果如下,可以看出main函数中的栈多开了8字节,虽然局部变 ...