当前位置: 首页 > article >正文

蓝桥杯 Java k倍区间

 前缀和的一个神奇算法,这道题暴力是遍历前缀和的差,也就是遍历所有区间和看他是不是能不能正好除尽k

这道题的技巧是将所有前缀和和k求余
按照求余的结果放在一个数组中
那么余数为0的前缀和a一定满足要求([0,a])
余数相同的两两组合范围相减也符合要求,所以有Cn2即 (v[i]*(v[i]-1))/2个

那么就把复杂度为O(n2)的循环遍历前缀和算法降低为复杂度为O(n)的算前缀和余数分类的算法。值得学习。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int k = scan.nextInt();
        long[] q = new long[n+1];
        long[] v = new long[k];
        for(int i = 1;i <= n;i++){
          q[i] = scan.nextInt() + q[i-1];
          v[(int)(q[i]%k)]++;
        }
        long ans = 0;
        ans += v[0];
        for(int i = 0;i < k;i++){
          ans += (v[i]*(v[i]-1))/2;
        }

        System.out.println(ans);
        //在此输入您的代码...
        scan.close();
    }
}


http://www.kler.cn/news/107402.html

相关文章:

  • 0047【Edabit ★☆☆☆☆☆】Minimal I: If Boolean Then Boolean
  • RK3588开发笔记-USB3.0接口调试
  • VMware打开共享虚拟机后找不到/mnt/hgfs/文件夹,以及不能拖拽/复制粘贴等操作,ubuntu不能安装VMware tools
  • 3台Centos7快速部署Kafka集群
  • 如何在Node.js中使用环境变量或命令行参数来设置HTTP爬虫ip?
  • 【Proteus仿真】【Arduino单片机】PWM电机调速
  • Mysql的JDBC知识点
  • 【C++的OpenCV】第十四课-OpenCV基础强化(二):访问单通道Mat中的值
  • 轻量级仿 Spring Boot=嵌入式 Tomcat+Spring MVC
  • Qt下实现支持多线程的单例模式
  • Redis进军磁盘存储
  • Spring常见面试题
  • 大数据采集技术与预处理学习一:大数据概念、数据预处理、网络数据采集
  • 一文5000字从0到1使用Jmeter实现轻量级的接口自动化测试(图文并茂)
  • 167. 两数之和 II - 输入有序数组、Leetcode的Python实现
  • 有一个带头结点的单链表L,设计一个算法使其元素递增有序
  • pytorch 入门 (五)案例三:乳腺癌识别识别-VGG16实现
  • Unity的live2dgalgame多语言可配置剧情框架
  • 10月份程序员书单推荐
  • vscode下ssh免密登录linux服务器
  • PostgreSQL基于Patroni方案的高可用启动流程分析
  • Centos使用war文件部署jenkins
  • [量化投资-学习笔记003]Python+TDengine从零开始搭建量化分析平台-Grafana画K线图
  • 【2023.10.25练习】数据库-函数1
  • 【CSS】包含块
  • 【2024秋招】2023-9-16 贝壳后端开发一面
  • 【Java网络原理】 五
  • canvas基础3 -- 交互
  • 【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
  • [SQL开发笔记]DELETE 语句:删除表中的行