SCZ 20170812 T2 MFS
题面照例十分暴力,我再次重写一下吧……
题目描述
有\(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的更多相关文章
- SCZ 20170812 T1 HKJ
因为题面实在是太过暴力,就不贴链接了--我自己重新写一下题面吧-- 题目描述 给定一张带权有向图,设起点为1,终点为n,每个点除编号外还有一个序号,要求输出从起点至终点的最短路经过的点的序号和最短距离 ...
- [Noip2016]蚯蚓 D2 T2 队列
[Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...
- T2 Func<in T1,out T2>(T1 arg)
委托调用方法的4种方式. using System; using System.Collections.Generic; namespace ConsoleApplication1 { delegat ...
- Hotelling T2检验和多元方差分析
1.1 Hotelling T2检验 Hotelling T2检验是一种常用多变量检验方法,是单变量检验的自然推广,常用于两组均向量的比较. 设两个含量分析为n,m的样本来自具有公共协方差阵的q维正态 ...
- bzoj4034: [HAOI2015]T2
4034: [HAOI2015]T2 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 2684 Solved: 843 Description 有一 ...
- 【BZOJ 4517】【SDOI 2016 Round1 Day2 T2】排列计数
本蒟蒻第一次没看题解A的题竟然是省选$Round1$ $Day2$ $T2$ 这道组合数学题. 考试时一开始以为是莫队,后来想到自己不会组合数的一些公式,便弃疗了去做第三题,,, 做完第三题后再回来看 ...
- MooseFs-分布式文件系统系列(四)之简单聊聊MFS的日常维护
回顾 文件或目录的额外属性(noower,noattracache和noentrycache),可以通过MFS提供的命令(mfsgeteattr,mfsseteattr,mfsdeleattr等)检查 ...
- MFS文件系统
一.MFS文件系统概论 MFS是linux下的开源存储系统,是由波兰人开发的.MFS文件系统能够实现RAID的功能,不但能够节约存储成本,而且不逊于专业的存储系统,能够实现在线扩展.MFS是一种半分布 ...
- NOIP欢乐模拟赛 T2 解题报告
小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...
随机推荐
- 【C++】《C++ Primer 》第五章
第五章 语句 一.简单语句 表达式语句:一个表达式末尾加上分号,就变成了表达式语句. 空语句:只有一个单独的分号,记得注释说明提高代码可读性. 复合语句(块):用花括号 {}包裹起来的语句和声明的序列 ...
- 手把手教你搭建一个跟vue官方同款文档(vuepress)
前言 VuePress 由两部分组成:第一部分是一个极简静态网站生成器 (opens new window),它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档而优化的默认主题 ...
- 【Software Test】Basic Of ST
文章目录 Learning Objective Introduction Software Applications Before Software Testing What is testing? ...
- ctfhub技能树—web前置技能—http协议—请求方式
打开靶机环境(每次打开都要30金币,好心疼啊) 题目描述为"请求方式" HTTP的请求方式共有八种 1.OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向 ...
- Oracle Rac to Rac One Node
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2020.01.14 20:05:12 =~=~=~=~=~=~=~=~=~=~=~= [oracle@rac01 ~]$ srvc ...
- 整理目前支持 Vue 3 的 UI 组件库 (2021 年)
最近,让前端圈子振奋的消息莫过于 Vue 3.0 的发布,一个无论是性能还是 API 设计都有了重大升级的新版本.距离 Vue 3.0 正式版发布已经有一段时间了,相信相关生态周边库也正在适配新版本中 ...
- 远程部署项目,修改catalina.bat文件 完美解决在代理服务器上HttpURLConnection 调接口超时的问题
远程给客户部署项目,运行时程序调外部接口时总是出不去,经过不懈努力,后来发现客户那边的网络走的是代理,于是在代码中加下面代码: //设置代理 System.setProperty("http ...
- Spring Boot(IDEA,Gradle)超详细用户管理项目(一)——Hello World
1.构建工具的配置(Gradle):自定义-所有设置:构建.执行.部署-构建工具-Gradle: 设置Gradle用户主目录:(该目录相当于仓库,gradle将下载所需依赖到此目录下),此目录下可新建 ...
- JavaScript中eval的替代方法
引自:https://www.cnblogs.com/lxg0/p/7805266.html 通常我们在使用ajax获取到后台返回的json数据时,需要使用 eval 这个方法将json字符串转换成对 ...
- CSS响应式布局学习笔记(多种方法解决响应式问题)
在做web开发的工作中,会遇到需要我给页面根据设计的要求,进行响应式布局,这里跟大家分享下我对于响应式布局的解决方法: 我主要利用的是CSS3 媒体查询,即media queries,可以针对不同的媒 ...