题意:

t组输入,给你一个长度为n的数组,你每次可以从数组中找到a[i]和a[i+1],然后用a[i]+a[i+1]这个新元素来覆盖掉a[i]和a[i+1]的位置(1<=i<n),从而数组长度也减去1

你可以进行任意次这样的操作,输出最后的数组中有多少数,是p的倍数

题解:

给你一个a数组的前缀和数组w,我们保证a[i]>=1,前缀和w[i]都被p取余过

假设i<j,那么如果w[i]和w[j]相等,那也就是说(a[i+1]+a[i+2]+...+a[j])%p == 0,也就是说这一段是p的倍数

那么我们就可以依靠这一点去做题

我们先判断一下v[i]%p==0的点,然后依次这些点把原数组分割,分别对每一段进行上面这样的判断

代码:

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <ctime>
#include <cstring>
#include <cstdlib>
#include <math.h>
#include<map>
using namespace std;
typedef long long ll;
const int maxn = 3e5 + 5;
ll v[maxn];
map<ll,ll>r;
int main()
{
ll t;
scanf("%lld",&t);
while(t--)
{
ll n,p;
r.clear();
scanf("%lld%lld",&n,&p);
// ll vis[p+5];
// memset(vis,0,sizeof(vis));
for(ll i=1; i<=n; ++i)
scanf("%lld",&v[i]),v[i]%=p;
ll sum=0,mod=0;
r[0]=1;
for(ll i=1; i<=n; ++i)
{
if(v[i]==0)
{
mod=0;
r.clear();
sum++;
r[0]=1;
}
else
{
mod=(mod+v[i])%p;
r[mod]++;
if(r[mod]>=2)
{
mod=0;
sum++;
r.clear();
}
r[0]=1;
}
}
printf("%lld\n",sum);
}
return 0;
}

最新文章

  1. UML类图(下):关联、聚合、组合、依赖
  2. windows 中去除Ctrl+Alt+Del才能登录
  3. Java基础系列——IO流
  4. KVM 虚拟化 初体验
  5. 【解题报告】zju-1030 Farmland
  6. memcache和memcahced区别
  7. 工作总结:文件对话框的分类(C++)
  8. slave 成为master 时候执行的操作notify_master /etc/keepalived/send_master.sh
  9. 深入探索C++对象模型-语义
  10. 第十六节,基本数据类型,字典dict
  11. MongoDB Java Driver 3.4操作
  12. 【Aho-Corasick automation 大米饼模板】
  13. Python学习笔记4基本数据类型
  14. vue 构建项目vue-cli
  15. C++类构造函数初始化列表(转)
  16. 4.Kali 1.0 / 2.0 安装中文输入法(谷歌pinyin + 其他)
  17. 阿里云提出的漏洞(Phpcms V9某处逻辑问题导致getshell漏洞解决方法)的问题
  18. __lll_mutex_lock_wait的错误原因
  19. mysql数据库优化课程---14、常用的sql技巧
  20. 我的Android进阶之旅------>解决Error:Unable to find method 'org.gradle.api.internal.project.ProjectInternal.g

热门文章

  1. 【C++】《C++ Primer 》第十八章
  2. Spring Boot Scheduled定时任务特性
  3. 微软官网下载win10离线介质
  4. Eclipse中的可视化图形界面设计插件windowbuilder
  5. QQ刷屏助手
  6. 前端中的script标签
  7. Privacy-Enhanced Mail (PEM) Privacy Enhancement for Internet Electronic Mail
  8. redis 主从复制 和集群
  9. SDS——动态字符串
  10. 3分钟搞懂什么是WPF。