题面照例十分暴力,我再次重写一下吧……

题目描述

有\(n\)个数构成的数列\(A\)元素为\(a_i\),你要构造一个数列\(B\),元素为\(b_i\),使得满足\(b_{i}>0,a_{i}-k\leq b_{i}\leq a_{i}\)使得去除\(f\)个元素后\(b_i\)有公约数\(g\)。一个测试点有多组测试数据,当一个测试点的所有测试数据都与标准答案相同时,该测试点得分。

输入格式

第一行一个整数\(T\),表示数据组数。

对于下面的每一组数据:

第一行,三个整数\(n,k,f\),n表示数列元素个数。

第二行,n个整数\(a_{i}\),表示一个数列。

数据范围

设\(A=max_{a_{i}}\)。

测试点编号 \(n,k,f,A\) \(T\)
\(1,2,3,4,5,6\) \(\leq 10\) \(\leq 3\)
\(7,8,9,10\) \(\leq 3\times 10^3,f=0\) \(\leq 3\)
\(11,12\) \(\leq 5\times 10^3\) \(\leq 3\)
\(13,14\) \(\leq 3\times 10^4\) \(\leq 3\)
\(15,16\) \(\leq 5\times 10^4\) \(\leq 3\)
\(17,18\) \(\leq 5\times 10^5\) \(\leq 3\)
\(19,20\) \(\leq 2\times 10^6\) \(\leq 2\)

题解

30分做法

纯暴力啊……其实我也不知道这30分暴力该怎么写……

60分做法

首先得把这个问题转化成一个可以处理的东西。如果对题意进行归纳后就不难发现,这道题中当\(g\)满足要求时,\(a_{i}<g\ 或\ a_{i}\ mod\ g>k\ 的个数\leq f\)。所以在1至\(A\)中枚举\(g\),根据上述要求判断\(g\)是否符合要求。

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e6+10,inf=0x7fffffff;
int a[maxn];
int t,n,k,f;
int main()
{
int i,j,l,r,g,num,flag;
cin>>t;
while(t--)
{
cin>>n>>k>>f;r=-inf;
for(i=1;i<=n;i++){scanf("%d",&a[i]);r=max(r,a[i]);}
//for(g=1;g<=k+1;g++){printf("%d ",g);}
for(g=1;g<=r;g++)
{
num=0;flag=1;
for(i=1;i<=n;i++){if(a[i]%g>k||a[i]/g==0){num++;if(num>f){flag=0;break;}}}
if(flag){printf("%d ",g);}
}
cout<<endl;
}
return 0;
}

100分做法

考虑优化上述查找过程。

注意发现\(A\)的范围较小,可以使用前缀和。这样就可以统计出满足\(a_{i}\in [l,r]\)的个数了。仍然暴力枚举\(g\),每次统计出满足\(a_{i}\in [k\cdot g+k+1,(k+1)\cdot g]\)的个数并相加,判断其是否大于f即可。

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=3e6+10,inf=0x7fffffff;
int a[maxn],s[maxn];
int t,n,k,f;
template<typename T>void read(T &x)
{
x=0;int f=1;char ch;ch=getchar();
while(!isdigit(ch)){if(ch=='-'){f=-1;}ch=getchar();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
if(f==-1){x=-x;}
}
int main()
{
int i,j,r,tmp,num,hd,rr,g;
cin>>t;
while(t--)
{
cin>>n>>k>>f;r=-inf;
memset(a,0,sizeof(a));
for(i=1;i<=n;i++){read(tmp);a[tmp]++;r=max(r,tmp);}
for(i=1;i<=r;i++){s[i]=s[i-1]+a[i];}
for(g=1;g<=r;g++)
{
num=s[g-1];
for(i=g;num<=f&&i+k+1<=r;i+=g)
{
hd=i+k+1;rr=min(r,i+g-1);
if(hd<=rr){num+=(s[rr]-s[hd-1]);}
}
if(num<=f){printf("%d ",g);}
}cout<<endl;
}
return 0;
}

SCZ 20170812 T2 MFS的更多相关文章

  1. SCZ 20170812 T1 HKJ

    因为题面实在是太过暴力,就不贴链接了--我自己重新写一下题面吧-- 题目描述 给定一张带权有向图,设起点为1,终点为n,每个点除编号外还有一个序号,要求输出从起点至终点的最短路经过的点的序号和最短距离 ...

  2. [Noip2016]蚯蚓 D2 T2 队列

    [Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...

  3. T2 Func<in T1,out T2>(T1 arg)

    委托调用方法的4种方式. using System; using System.Collections.Generic; namespace ConsoleApplication1 { delegat ...

  4. Hotelling T2检验和多元方差分析

    1.1 Hotelling T2检验 Hotelling T2检验是一种常用多变量检验方法,是单变量检验的自然推广,常用于两组均向量的比较. 设两个含量分析为n,m的样本来自具有公共协方差阵的q维正态 ...

  5. bzoj4034: [HAOI2015]T2

    4034: [HAOI2015]T2 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2684  Solved: 843 Description 有一 ...

  6. 【BZOJ 4517】【SDOI 2016 Round1 Day2 T2】排列计数

    本蒟蒻第一次没看题解A的题竟然是省选$Round1$ $Day2$ $T2$ 这道组合数学题. 考试时一开始以为是莫队,后来想到自己不会组合数的一些公式,便弃疗了去做第三题,,, 做完第三题后再回来看 ...

  7. MooseFs-分布式文件系统系列(四)之简单聊聊MFS的日常维护

    回顾 文件或目录的额外属性(noower,noattracache和noentrycache),可以通过MFS提供的命令(mfsgeteattr,mfsseteattr,mfsdeleattr等)检查 ...

  8. MFS文件系统

    一.MFS文件系统概论 MFS是linux下的开源存储系统,是由波兰人开发的.MFS文件系统能够实现RAID的功能,不但能够节约存储成本,而且不逊于专业的存储系统,能够实现在线扩展.MFS是一种半分布 ...

  9. NOIP欢乐模拟赛 T2 解题报告

    小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...

随机推荐

  1. 【C++】《C++ Primer 》第五章

    第五章 语句 一.简单语句 表达式语句:一个表达式末尾加上分号,就变成了表达式语句. 空语句:只有一个单独的分号,记得注释说明提高代码可读性. 复合语句(块):用花括号 {}包裹起来的语句和声明的序列 ...

  2. 手把手教你搭建一个跟vue官方同款文档(vuepress)

    前言 VuePress 由两部分组成:第一部分是一个极简静态网站生成器 (opens new window),它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档而优化的默认主题 ...

  3. 【Software Test】Basic Of ST

    文章目录 Learning Objective Introduction Software Applications Before Software Testing What is testing? ...

  4. ctfhub技能树—web前置技能—http协议—请求方式

    打开靶机环境(每次打开都要30金币,好心疼啊) 题目描述为"请求方式" HTTP的请求方式共有八种 1.OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向 ...

  5. Oracle Rac to Rac One Node

    =~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2020.01.14 20:05:12 =~=~=~=~=~=~=~=~=~=~=~= [oracle@rac01 ~]$ srvc ...

  6. 整理目前支持 Vue 3 的 UI 组件库 (2021 年)

    最近,让前端圈子振奋的消息莫过于 Vue 3.0 的发布,一个无论是性能还是 API 设计都有了重大升级的新版本.距离 Vue 3.0 正式版发布已经有一段时间了,相信相关生态周边库也正在适配新版本中 ...

  7. 远程部署项目,修改catalina.bat文件 完美解决在代理服务器上HttpURLConnection 调接口超时的问题

    远程给客户部署项目,运行时程序调外部接口时总是出不去,经过不懈努力,后来发现客户那边的网络走的是代理,于是在代码中加下面代码: //设置代理 System.setProperty("http ...

  8. Spring Boot(IDEA,Gradle)超详细用户管理项目(一)——Hello World

    1.构建工具的配置(Gradle):自定义-所有设置:构建.执行.部署-构建工具-Gradle: 设置Gradle用户主目录:(该目录相当于仓库,gradle将下载所需依赖到此目录下),此目录下可新建 ...

  9. JavaScript中eval的替代方法

    引自:https://www.cnblogs.com/lxg0/p/7805266.html 通常我们在使用ajax获取到后台返回的json数据时,需要使用 eval 这个方法将json字符串转换成对 ...

  10. CSS响应式布局学习笔记(多种方法解决响应式问题)

    在做web开发的工作中,会遇到需要我给页面根据设计的要求,进行响应式布局,这里跟大家分享下我对于响应式布局的解决方法: 我主要利用的是CSS3 媒体查询,即media queries,可以针对不同的媒 ...