计蒜客-T1271 完美K倍子数组
如果一个数组满足长度至少是 22 ,并且其中任意两个不同的元素 A_iAi 和 A_j (i \not = j)Aj(i=j) 其和 A_i+A_jAi+Aj 都是 KK 的倍数,我们就称该数组是完美 KK 倍数组。
现在给定一个包含 NN 个整数的数组 A = [A_1, A_2, ... A_N]A=[A1,A2,...AN] 以及一个整数 KK,请你找出 AA 的最长的完美子数组 BB,输出 BB 的长度。
如果这样的子数组不存在,输出 -1−1。
输入格式
第一行包含两个整数 NN 和 KK。
第二行包含 NN 个整数 A_1, A_2, ... A_NA1,A2,...AN。
1 \le N \le 1000001≤N≤100000
1 \le A_i, K \le 10000000001≤Ai,K≤1000000000
输出格式
一个整数,表示答案。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
5 3
1 3 2 3 6
样例输出
3
题解:
我原本想的是把每一个输入的数x都取余于k,然后把r[x]++(r是一个map容器,记录x出现的次数),然后k-x与x放在一起不久刚好是k的倍数了吗。。。但是我没有考虑如果x+x不是k的倍数
就比如k==4,如果n==4为1,1,3,3,那么r[1]=2,r[3]=2,那么这个集合长度不能为4只能为2,因为如果集合长度为4,那么1+1=2就不是4的倍数
所以如果r[x]>0且r[k-x]>0,那么集合长度最小为2.要特别注意一下r[0],和当k为偶数时r[k/2],这两个单独自己就可以构成k倍数组
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<math.h>
6 #include<vector>
7 #include<queue>
8 #include<map>
9 using namespace std;
10 typedef long long ll;
11 const int maxn=1e5;
12 const int INF=0x3f3f3f3f;
13 map<ll,ll>r;
14 map<ll,ll>::iterator it;
15 int main()
16 {
17 ll n,k,tmp,maxx;
18
19 cin>>n>>k;
20
21 ll cnt1=0,cnt2=0,flag=0;
22
23 for(ll i=0;i<n;++i){
24
25 cin>>tmp;
26
27 int t=tmp%k;
28
29 if(t==0) r[t]++,maxx=max(maxx,r[t]);
30
31 else if(2*t%k==0) r[t]++,maxx=max(maxx,r[t]);
32
33 else if(!flag){
34
35 r[t]=1;
36
37 if(r[k-t]) flag=1;
38
39 }
40
41 }
42 if(maxx<2 && !flag) cout<<-1<<endl;
43 else if(maxx>=2) cout<<maxx<<endl;
44 else cout<<2<<endl;
45 return 0;
46 }
计蒜客-T1271 完美K倍子数组的更多相关文章
- 并查集 2019年8月10日计蒜客联盟周赛 K.数组
题目链接:https://nanti.jisuanke.com/t/40860 题意:给一个长度为n的数组a[],n<1e5,a[i]<1e5 三个操作: 1 x y:把所有值为x的数据改 ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- 计蒜客:Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
- 计蒜客 31434 - 广场车神 - [DP+前缀和]
题目链接:https://nanti.jisuanke.com/t/31434 小 D 是一位著名的车手,他热衷于在广场上飙车.每年儿童节过后,小 D 都会在广场上举行一场别样的车技大赛. 小 D 所 ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
- 计蒜客 28449.算个欧拉函数给大家助助兴-大数的因子个数 (HDU5649.DZY Loves Sorting) ( ACM训练联盟周赛 G)
ACM训练联盟周赛 这一场有几个数据结构的题,但是自己太菜,不会树套树,带插入的区间第K小-替罪羊套函数式线段树, 先立个flag,BZOJ3065: 带插入区间K小值 计蒜客 Zeratul与Xor ...
随机推荐
- ps -p 进程号
[root@ma ~]# ps -p 1 PID TTY TIME CMD 1 ? 00:00:01 init
- 如何跑通第一个 SQL 作业
简介: 本文由阿里巴巴技术专家周凯波(宝牛)分享,主要介绍如何跑通第一个SQL. 一.SQL的基本概念 1.SQL 分类 SQL分为四类,分别是数据查询语言(DQL).数据操纵语言(DML).数据定义 ...
- 【Linux】关于CentOS系统中,文件权限第11位上是一个点的解读
------------------------------------------------------------------------------------------------- | ...
- Linux Shell 编程基础详解——吐血整理,墙裂推荐!
第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...
- Jenkins自动部署spring boot
Jenkins自动部署spring boot 背景介绍 本公司属于微小型企业,初期业务量不高,所有程序都写在一个maven项目里面,不过是多模块开发. 分了login模块,service模块,cms模 ...
- 对于Update Function Modules的一点说明
To be able to call a function module in an update work process, you must flag it in the Function Bui ...
- SAP 技术设置(technical setting)
在创建数据库表的时候,需要设置它的技术参数:这样才能使用. 在技术设置里,有个数据类(data class),如APPL0,等等. 有好多值可以供我们选择.这些值保存在表DDART中,表的描述:DD: ...
- DOI技术扫盲一
DOI: desktop office intergration 桌面办公软件集成简单的将,就是我们在Windows桌面中打开的办公软件(如:word,excel,pdf等等)可以在SAP系统进 ...
- 18V转5V,18V转3.3V,18V转3V稳压芯片,0.01A-3A输出
18V转5V,18V转3.3V,18V转3V, 18V转5V稳压芯片,18V转3.3V稳压芯片,18V转3V稳压芯片, 18V常降压转成5V电压,3.3V电压和3V电压给其他芯片或设备供电,适用于这个 ...
- 【IDEA】Lombok--是否值得我们去使用
官网 https://projectlombok.org/ 简介 Project Lombok is a java library that automatically plugs into your ...