翻车

【问题描述】

有一天,小武找到了翻车王,给了他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 真的翻车了的更多相关文章

  1. UWP 记一次WTS 和 UCT翻车经历

    这次翻车,真的,在网上绝对找不到回答的. 只有在WTS的Issues讨论中才找到,哈哈 不过这个应该比较少遇到吧,据我所知,提出Issue那个大胸弟和我都遇到了... 翻车具备的条件如下: 1. 使用 ...

  2. 2017CCSP总结——失败(铜)

    这次比赛,算是铩羽而归.尽管是第一次出去打比赛,在经验方面略显不足,但是,归根到底,我这次比赛打的很失败.包括我们学校去的,打的也不好,可以说是全体翻车.真的很对不起带我们去的老师.>_< ...

  3. PKUSC2019划水记

    Day -3~Day -2 划了两天的水,考了两次IOI赛制,垫了两次底.... 怕不是要凉啊(安慰自己才C3还有时间) Day -1 坐火车了,差点把身份证弄丢. 睡了一觉,肝了你的名字(结局草率差 ...

  4. 清北合肥day2-day5

    day2:215这一天的题目相对比较模板化t1:50看错了数据范围求n个点到给出的点哈夫曼距离的最小值我想到的是一种非常zz的做法我们二分答案,然后判断是否在这个距离内有点但是这样前缀和不是很好维护于 ...

  5. Codeforces ECR52 div2翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  6. SDOI2019R2翻车记

    额...貌似是学OI以来翻得最惨的一次比赛了呢... 不过还好是初三 但是没有机会和学长们打最后一场告别赛了呢(笑 按照惯例还是要记录一下吧. DAY ? 中考倒计时30天.来写这篇游记. DAY 0 ...

  7. 从谷歌面试翻车到offer收割的心路历程

    首先声明,这只是我的播客随感,其中无法避免有一些个人色彩的见解,请不要在意,我尊敬任何的互联网公司,尊敬研究生期间的老师同学,我只希望给在求学路上的CS同学一些启发. 先介绍一下背景,我是ACM铜牌退 ...

  8. [日常] Codeforces Round #440 Div.2 大力翻车实况

    上次打了一发ABC然后大力翻车...上午考试又停电+Unrated令人非常滑稽...下午终于到了CF比赛... 赛前大力安利了一发然后拉了老白/ $ljm$ / $wcx$ 一起打, 然后搞了个 TI ...

  9. [日常] AtCoder Beginner Contest 075 翻车实录

    别问我为啥要写一篇ABC的游记... 周日打算CF开黑于是就打算先打打ABC找回手速... 进场秒掉 $A$ 和 $B$ , 小暴力一脸偷税 然后开 $C$ ...woc求桥? 怎么办啊我好像突然忘了 ...

随机推荐

  1. 【转】关于在.Net开发中使用Sqlite的版本选择问题

    如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不同了. SQLite的.NET开发包来自是System.D ...

  2. FreeNAS 11.0 正式发布,提供 S3 兼容的对象存储服务

    FreeNAS 11.0 正式版已发布,该版本带来了新的虚拟化和对象存储功能.FreeNAS 11.0 将 bhyve 虚拟机添加到其受欢迎的 SAN / NAS.Jail 和插件中,让用户可以在 F ...

  3. Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化

    原文:Win8 Metro(C#)数字图像处理--2.56简单统计法图像二值化  [函数名称] 简单统计法图像二值化 WriteableBitmap StatisticalThSegment(Wr ...

  4. java设计模式(2)

    工厂模式定义 在面向对象程序设计中,工厂通常是用来创建其他对象的对象,工产模式根据不同的参数来实现不同的分配方案和创建对象. 在工产模式中,我们创建对象时不会对客户端暴露创建逻辑,而且是通过使用一个共 ...

  5. 微信小程序把玩(八)view组件

    原文:微信小程序把玩(八)view组件 刚看到这个效果的时候还真是和ReactNative的效果一致,属性也基本的一样. view这个组件就是一个视图组件使用起来非常简单. 主要属性: flex-di ...

  6. 【备忘】C#语言基础-1

    C#基础 注意区别哟! C#是一种托管语言,与C++不同,不能直接操作系统底层,依赖于 framework. 如果局部变量和全局变量同名,全局变量就会被屏蔽. 函数的返回值类型不是签名的一部分,所以不 ...

  7. Flot Reference flot参考文档

    Consider a call to the plot function:下面是对绘图函数plot的调用: var plot = $.plot(placeholder, data, options) ...

  8. c# 可移动可改变大小的控件

    因为业务需要,百度了个可移动可改变大小的控件,然后自己修改了下,功能类似vs的设计面板中的功能差不多,可拖拽,改变大小 拖动的 public class MoveControl { #region 自 ...

  9. 认识Docker

      以下是个人学习过程中所记,仅作为学习经历和备忘,有问题不负责,但可以交流和探讨. 1 什么是Docker?   在Docker的官网,Docker的设计师们对Docker的定义是:   Docke ...

  10. Qt之OpenSSL(有pro文件的路径格式,以及对libeay32和ssleay32的引用)

    简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 简述 下载安装 使用 更多参考 下载安装 ...