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

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

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

题目描述

输入

输出

样例输入

样例输出

数据范围限制

朴素算法

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

 #pragma GCC optimize(2)
#include<bits/stdc++.h>
#define IL inline
using namespace std;
int a[];
bool vis[];
int n,k,maxans;
bool cmp(int a,int b)
{
return a>b;
}
int gcd(int a,int b)
{
if(b==) return a;
if(b==) return ;
if(a%==&&b%==) return *gcd(a/,b/);
if(a%==&&b%==) return gcd(a,b/);
if(a%==&&b%==) return gcd(a/,b);
if(a%==&&b%==) return gcd(b,a%b);
// return (b==0)?a:gcd(b,a%b);
//这里还用到了二进制gcd(会更快一点)
}
void search(int depth/*k*/,int now)
{
if(depth==k) {
maxans=max(maxans,now);
return;
}
int maxgcd=,maxnum=;
for(int i=;i<=n;i++)
{
if(vis[i]) continue;
if(gcd(now,a[i])>maxgcd){
maxnum=i;
maxgcd=gcd(now,a[i]);
if(depth+<k){
vis[i]=;
search(depth+,maxgcd);
vis[i]=;
}
}
if(depth+==k)
{
vis[i]=;
search(depth+,maxgcd);
vis[i]=;
}
}
}
int main()
{
freopen("template.in","r",stdin);
freopen("template.out","w",stdout);
cin>>n;
for(int i=;i<=n;i++)
scanf("%d",a+i);
sort(a+,a+n+,cmp);
for(k=;k<=n;k++)
{
if(a[k]==){
printf("1\n");
continue;
}
maxans=;
for(int s=;s<=n;s++)
{
vis[s]=;
search(,a[s]);
vis[s]=;
}
printf("%d\n",maxans);
}
return ;
}

我再也不想看到了

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

O(n2)算法

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

Solution

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

for(int j=;j<a;j++)
if(a%j==)
array[j]++;

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

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

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

哈哈

还是把这种讲完吧

然后再外层循环k++

内层循环i--

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

就把这时的i输出即可

Code(TLE70分)

 //#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
int array[];
int a,n,k,maxa;
int main()
{
freopen("template.in","r",stdin);
freopen("template.out","w",stdout);
cin>>n;
for(int i=;i<=n;i++){
scanf("%d",&a);
for(int j=;j<a;j++)
if(a%j==)
array[j]++;
maxa=max(maxa,a);
}
int b=maxa;
for(k=;k<=n;k++)
{
for(int i=b;i>;i--)
{
if(array[i]>=k){
cout<<i<<endl;
b=i;
break;
}
}
}
return ;
}

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. Mysql百万数据量级数据快速导入Redis

    前言 随着系统的运行,数据量变得越来越大,单纯的将数据存储在mysql中,已然不能满足查询要求了,此时我们引入Redis作为查询的缓存层,将业务中的热数据保存到Redis,扩展传统关系型数据库的服务能 ...

  2. 2、TCP/IP

    TCP/IP协议栈:物理层.数据接口层.网络层.传输层.应用层或网络接口层.网络层.传输层.应用层 TCP/IP协议栈的核心协议:1.TCP2.UDP3.ICMP4.IGMP5.ARP:映射IP→Et ...

  3. 解决Eclipse无法安装STS

    使用Eclipse Neon安装Spring Tool Suite报错: Cannot complete the install because one or more required items  ...

  4. Servlet乱码问题解决

    对于请求参数的编码处理基本上分为get和post两种情况. 1.POST index.html <!DOCTYPE html> <head> <meta http-equ ...

  5. POJ_2479_DP

    http://poj.org/problem?id=2479 从前向后保存起点到每一点的最长串,从后向前保存尾点到每一点的最长串. 然后枚举中断点,找前后和最大值就行了. #include<io ...

  6. 对权值线段树剪枝的误解--以HDU6703为例

    引子 对hdu6703,首先将问题转化为"询问一个排列中大于等于k的值里,下标超过r的最小权值是多少" 我们采用官方题解中的做法:权值线段树+剪枝 对(a[i],i)建线段树,查询 ...

  7. go net包简记

    TCP服务端 go语言中可以每次建立一次链接就创建一个goroutine去处理,使用goroutine实现并发非常方便和高效. TCP服务端程序的一般处理流程1.建立并绑定 Socket:首先服务端使 ...

  8. 安装symfony3.4的坑,也是PHP7.3的经典坑之解决办法

    对于刚入手symfony3.4的同学,肯定会发现,安装symfony后部署后看到的往往不是hello world,也不是symfony的欢迎页面,而是给你一个下马威,唉,给你来个bug开开胃. 当然这 ...

  9. pinpoint安装(docker)

    安装docker docker-compose yum update -y yum install docker epel-release python-pip -y pip install --up ...

  10. 7个有用的JS技巧

    就如其他的编程语言一样,JavaScript也具有许多技巧来完成简单和困难的任务. 一些技巧已广为人知,而有一些技巧也会让你耳目一新. 让我们来看看今天可以开始使用的七个JavaScript技巧吧! ...