ACM程序设计选修课——1058: Lucky Sequence(思考)
1058: Lucky Sequence
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 52 Solved: 6
[Submit][Status][Web
Board]
Description
Edward 得到了一个长度为 N 的整数序列,他想找出这里面有多少个“幸运的”
连续子序列。一个连续子序列被称为“幸运的”,当且仅当该子序列内的整数之
和恰好是 K 的整数倍数。他请求你写一个程序来计算他喜欢的连续子序列个数.
Input
输入第一行是一个整数 T,表示有 T 组数据。
每组数据第一行是两个整数 N (1 <= N <= 10^6), K (1 <= K <= 10^9)。
接下来的一行包含 N 个整数 Ai (|Ai| <= 10^9)。
Output
对于每组测试数据,输出一行仅包含一个整数,表示 Edward 喜欢的连续子序
列数量。
Sample Input
- 2
- 5 3
- 1 2 3 4 1
- 6 2
- 1 2 1 2 1 2
Sample Output
- 4
- 9
刚开始也不会,问了学长、大神,说用map+枚举一个端点值,想了一个早上得出一个计算公式
设Sum[x]为下标1~x的元素和,那么Sum[I~r]=Sum[r]-Sum[l-1];例如Sum[3~6]=Sum[6]-Sum[2](Sum[3-1])。然后题目要求的是Sum[q~p]%k==0,把前面拆掉变成( Sum[p] - Sum[q-1] )%k==0,再拆开移项,得到Sum[p]%k==Sum[q-1] %k;
1、若取模数不为0,则需要找一个一样的来形成上述等式,因此sum_cnt=(second+second-1)÷2;
2、若取模数为0,则除了1的条件,自身对K取模也是0也要算进去,因此为(second+second-1)÷2+second=(second+second+1)÷2(这条没用到,因为后面直接加回来就可以了)
为了不每次都%k,用map记录时直接把first改为%k之后的结果,这题一个坑点就是负数的问题,例如4%3==1,-5%3==1,而不是-2或者2,因此要用(x%k+k)%k这个公式来将负数取模转换成对应的题目所要求的正数。而不是简单的abs或fabs(为此WA了好几次)。还有数据都用long long,全为int也是WA。
代码:
- #include<iostream>
- #include<algorithm>
- #include<cstdlib>
- #include<sstream>
- #include<cstring>
- #include<cstdio>
- #include<string>
- #include<deque>
- #include<cmath>
- #include<queue>
- #include<set>
- #include<map>
- using namespace std;
- typedef long long LL;
- int main (void)
- {
- int t,i,n;
- LL temp,ans,k,tsum,q;
- scanf("%d",&t);
- while (t--)
- {
- map<LL,LL>mist;//记录某一个取模结果对应的出现次数
- scanf("%d%lld",&n,&k);
- tsum=0;
- ans=0;
- mist[0]=0;
- for (i=1; i<=n; i++)
- {
- scanf("%lld",&temp);
- tsum+=temp;
- mist[(tsum%k+k)%k]++;
- }
- map<LL,LL>::iterator it;
- for (it=mist.begin(); it!=mist.end(); it++)
- {
- k=it->second;
- ans=ans+(k*(k-1))/2;
- }
- ans=ans+mist[0];
- printf("%lld\n",ans);
- }
- return 0;
- }
ACM程序设计选修课——1058: Lucky Sequence(思考)的更多相关文章
- ACM程序设计选修课——1051: Glamor Sequence(YY+求和公式)
1051: Glamor Sequence Time Limit: 1 Sec Memory Limit: 128 MB Submit: 16 Solved: 5 [Submit][Status] ...
- ACM程序设计选修课——1018: Common Subsequence(DP)
问题 L: Common Subsequence 时间限制: 1 Sec 内存限制: 32 MB 提交: 70 解决: 40 [提交][状态][讨论版] 题目描述 A subsequence of ...
- ACM程序设计选修课——1043: Radical loves integer sequences(YY)
1043: Radical loves integer sequences Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 4 ...
- ACM程序设计选修课——1031: Hungar的得分问题(二)(杨辉三角+二进制转换)
1031: Hungar的得分问题(二) 时间限制: 1 Sec 内存限制: 64 MB 提交: 15 解决: 10 [提交][状态][讨论版] 题目描述 距离正式选秀时间越来越近了,今天Hung ...
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(Prim)
问题 E: (ds:图)公路村村通 时间限制: 1 Sec 内存限制: 128 MB 提交: 9 解决: 5 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本, ...
- ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)
问题 F: (ds:图)旅游规划 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(优先队列或sort+克鲁斯卡尔+并查集优化)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- ACM程序设计选修课——Problem D: (ds:树)合并果子(最优二叉树赫夫曼算法)
Problem D: (ds:树)合并果子 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 80 Solved: 4 [Submit][Status][ ...
- ACM程序设计选修课——1076汇编语言(重定向+模拟)
1076: 汇编语言 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 34 Solved: 4 [Submit][Status][Web Board] ...
随机推荐
- UVA1602 Lattice Animals 网格动物 (暴力,STL)
多联骨牌的生成办法,维基上只找到固定的骨牌fix,而free的没有找到. 于是只好写个set判重的简单枚举了. 旋转的操作,可以在坐标轴上画个点,以原点为轴心,逆时针旋转90度,新的点的坐标为(-y, ...
- 用dfs求解八皇后问题
相信大家都已经很熟悉八皇后问题了,就是指:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法.主要思路:按行进行深度优先搜索,在该 ...
- python基础之基本数据类型
1.int 整数 2.bool 布尔 3.str 字符串,一般放小量数据 4.list 列表,可以存放大量的数据 5.dict字典,以key:value的形式存储数据 6.set集合(数学) 7.tu ...
- Google 出品的 Java 编码规范,强烈推荐,权威又科学!
原文:google.github.io/styleguide/javaguide.html 译者:Hawstein 来源:hawstein.com/2014/01/20/google-java-sty ...
- c#和Java中的接口
使用场景: 在c#和Java中: 1.接口可以实现“多继承”(多实现),一个类只能继承自一个父类,但是可以实现多个接口. 2.接口解决了不同类型之间的多态问题,比如鱼与船不是同一类型,但是都能在水里“ ...
- Deepgreen DB 是什么(含Deepgreen和Greenplum下载地址)
Deepgreen官网下载地址:http://vitessedata.com/products/deepgreen-db/download/ 不需要注册 Greenplum官网下载地址:https:/ ...
- 解决iPhone滑动不流畅问题
前段时间在做一个手机端的页面时遇到了iOS上滑动不流畅的问题,后来才发现安卓上没有问题,才意识到这是兼容性问题引起的,所以遇到问题后快速定位到问题根源非常重要.在网上一搜就找到了解决方案.以后遇到类似 ...
- thinkcmf5 模板版变量的加载过程 和 新增网站配置项怎么全局使用
1.模板全局配置是怎么加载的 在 HomeBaseController.php 的 fech方法 $more = $this->getThemeFileMore($template); ...
- 牛客网暑期ACM多校训练营(第七场)A Minimum Cost Perfect Matching(找规律)
题意: 给定n, 求一个0~n-1的全排列p, 使得的和最小 分析: 打表发现最优解肯定是和为0的, 然后如果为2的幂就是直接反转即可, 不然的话就要分开从前面到后面逐步拆分, 具体思想模拟一下n = ...
- 笔记-python-centos环境下安装配置
笔记-python-centos环境下安装配置 1. 准备工作 环境准备 centos6.5 mini,已有python 2.6.6 下载源码包 Python官网下载Gzipped sour ...