嵊州D4T1 翻车 rollover 真的翻车了
翻车
【问题描述】
有一天,小武找到了翻车王,给了他n个整数a1,a2,a3,…an,翻车王需要选择其中的k个数,使得选出的k个数中任意两个的差都可以被m整除。
选出的数可以重复,但不可以超过这n个数中该数的个数。
翻车王不想翻车,所以需要你的帮助。
【输入格式】
第一行包括3个整数n,k,m(2 ≤ k ≤ n ≤ 100000,1 ≤ m ≤ 100000),n,k,m意义见题面。
第二行包括n个数a1,a2,a3,…an(0 ≤ ai ≤ 1000000000)。
【输出格式】
如果不可以选出k个数,使得选出这k个数中任意两个的差都可以被m整除,那么输出“No”。
否则,在第一行输出“Yes”。在第二行输出这k个整数b1,b2,...bk(所选的数字),两两数之间有一个空格。
如果有多种选择k个数字的方案,请输出任意一种。
【输入输出样例】
rollover.in | rollover.out |
4 3 5 2 7 7 7 |
Yes 2 7 7 |
【数据说明】
20%的数据n ≤ 15
50%的数据n ≤ 1000
另外20%的数据m ≤ 1000
100%的数据2 ≤ k ≤ n ≤ 10^5,1 ≤ m ≤ 10^5,0≤ ai ≤10^9
题解
暴力--
用一个循环找开头
for(int i=0;i<n;i++){
flag[i]=1;
if(findnext(a+i,1)) return 0;
flag[i]=0;
}
flag[i]是用来标记第i个书有没有用过了的
if(flag[i]==1)
continue;
findnext()返回bool值
用来判断有没有
- #include<bits/stdc++.h>
- using namespace std;
- int n,k,m;
- int a[];
- bool flag[];
- bool findnext(int now[],int len){
- if(len>k) return ;
- if(len==k) {
- cout<<"Yes"<<endl;
- for(int i=;i<len;i++)
- cout<<now[i]<<" ";
- return ;
- }
- for(int i=;i<n;i++)//寻找下一个
- {
- //
- // for(int debug=1;debug<=len;debug++) cout<<now[debug]<<" ";
- // cout<<endl;
- //
- if(flag[i]==)
- continue;
- bool flagnext=;
- for(int j=;j<len;j++)
- flagnext=flagnext&&(a[i]-now[j])%m==;
- if(!flagnext) continue;
- //else
- int flagn = ;
- flag[i]=;
- now[len]=a[i];
- flagn = findnext(now,len+);
- now[len]=;
- flag[i]=;
- return flagn;
- }
- return ;
- }
- int main(){
- // freopen("rollover.in","r",stdin);
- // freopen("rollover.out","w",stdout);
- cin>>n>>k>>m;
- for(int i=;i<n;i++)
- cin>>a[i];
- for(int i=;i<n;i++){
- flag[i]=;
- if(findnext(a+i,)) return ;
- flag[i]=;
- }
- cout<<"No";
- return ;
- }
中间的注释(debug)是开始用来调试的。
暴力++
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- const int inf=0X7f7f7f7f;
- using namespace std;
- int n,k,m,ans=,t=inf;
- int main()
- {
- // freopen("rollover.in","r",stdin);
- cin>>n>>k>>m;
- long long a[n+],sum[n+];
- for(int i=;i<=n;i++)
- {
- cin>>a[i];
- sum[a[i]%m]++;
- }
- for(int i=;i<m;i++)
- {
- if(sum[i]>=k)
- cout<<"Yes"<<endl;
- t=i;
- break;
- }
- if(t==inf)
- cout<<"No";
- else
- for(int i=;i<=n;i++)
- {
- if(a[i]%m==t);
- {
- ans++;
- if(ans<=k)
- cout<<a[i]<<" ";
- else break;
- }
- }
- return ;
- }
源码来源:https://www.cnblogs.com/YYCether666/p/11185389.html
本来以为会超时的,没想到呀!
std
有关于最小公倍数的数论题
结论:
证明:
设d=gcd(a,b)
a=a'd
b=b'd
所以gcd(a',b')=1,即a',b'互质
题中:a+b是a*b的因子
所以(a'+b')d | a'd*b'd
两边约掉一个d
a'+b' | a'b'd
所以a'+b'<=d
又因为题中:(a'+b')d<=n
所以a'+b'<=sqrt(n)
设k=a'+b'
φ(k)=
等待明天std的下发。。。
嵊州D4T1 翻车 rollover 真的翻车了的更多相关文章
- UWP 记一次WTS 和 UCT翻车经历
这次翻车,真的,在网上绝对找不到回答的. 只有在WTS的Issues讨论中才找到,哈哈 不过这个应该比较少遇到吧,据我所知,提出Issue那个大胸弟和我都遇到了... 翻车具备的条件如下: 1. 使用 ...
- 2017CCSP总结——失败(铜)
这次比赛,算是铩羽而归.尽管是第一次出去打比赛,在经验方面略显不足,但是,归根到底,我这次比赛打的很失败.包括我们学校去的,打的也不好,可以说是全体翻车.真的很对不起带我们去的老师.>_< ...
- PKUSC2019划水记
Day -3~Day -2 划了两天的水,考了两次IOI赛制,垫了两次底.... 怕不是要凉啊(安慰自己才C3还有时间) Day -1 坐火车了,差点把身份证弄丢. 睡了一觉,肝了你的名字(结局草率差 ...
- 清北合肥day2-day5
day2:215这一天的题目相对比较模板化t1:50看错了数据范围求n个点到给出的点哈夫曼距离的最小值我想到的是一种非常zz的做法我们二分答案,然后判断是否在这个距离内有点但是这样前缀和不是很好维护于 ...
- Codeforces ECR52 div2翻车记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- SDOI2019R2翻车记
额...貌似是学OI以来翻得最惨的一次比赛了呢... 不过还好是初三 但是没有机会和学长们打最后一场告别赛了呢(笑 按照惯例还是要记录一下吧. DAY ? 中考倒计时30天.来写这篇游记. DAY 0 ...
- 从谷歌面试翻车到offer收割的心路历程
首先声明,这只是我的播客随感,其中无法避免有一些个人色彩的见解,请不要在意,我尊敬任何的互联网公司,尊敬研究生期间的老师同学,我只希望给在求学路上的CS同学一些启发. 先介绍一下背景,我是ACM铜牌退 ...
- [日常] Codeforces Round #440 Div.2 大力翻车实况
上次打了一发ABC然后大力翻车...上午考试又停电+Unrated令人非常滑稽...下午终于到了CF比赛... 赛前大力安利了一发然后拉了老白/ $ljm$ / $wcx$ 一起打, 然后搞了个 TI ...
- [日常] AtCoder Beginner Contest 075 翻车实录
别问我为啥要写一篇ABC的游记... 周日打算CF开黑于是就打算先打打ABC找回手速... 进场秒掉 $A$ 和 $B$ , 小暴力一脸偷税 然后开 $C$ ...woc求桥? 怎么办啊我好像突然忘了 ...
随机推荐
- jquery hover()的使用
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- [原译]WPF绘制圆角多边形
原文:[原译]WPF绘制圆角多边形 介绍 最近,我发现我需要个圆角多边形.而且是需要在运行时从用户界面来绘制.WPF有多边形.但是不支持圆角.我搜索了一下.也没找到可行的现成例子.于是就自己做吧.本文 ...
- 数据绑定(七)使用ObjectDataProvider对象作为Binding的Source
原文:数据绑定(七)使用ObjectDataProvider对象作为Binding的Source ObjectDataProvider就是把对象作为数据源提供给Binding,类似的还有XmlData ...
- WPF——TargetNullValue(如何在绑定空值显示默认字符)
原文:WPF--TargetNullValue(如何在绑定空值显示默认字符) 说明:在数据绑定时,如果有些字段为空值,那么在数据绑定时可以用默认值来显示为空的字段. </Grid> { L ...
- Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全
原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的 ...
- Caliburn.Micro 自定义View和ViewModel的匹配规则
使用TypeMappingConfiguration类 //Override the default subnamespaces var config = new TypeMappingConfigu ...
- Git基本用法(一)
使用Git正常的工作流 创建/修改文件 使用git add <file1> <file2> <file3>...将文件添加至本地的缓冲区Index中 使用git c ...
- Java对象结构及HotSpot对象模型
一.对象结构 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header).实例数据(Instance Data)和对齐填充(Padding).下图是普通对象实例与数组对象 ...
- jquery测试文档
Jquery版本:* jQuery JavaScript Library v1.3.2 * http://jquery.com/ 引用:<script src="JS/jquery.j ...
- 3020配置_Java_win10
1. 安装Java SE平台 1° 下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213315 ...