博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度罪犯转移
阅读量:5043 次
发布时间:2019-06-12

本文共 875 字,大约阅读时间需要 2 分钟。

题目描述

C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式?
输入描述:
第一行数据三个整数:n,t,c(1≤n≤2e5,0≤t≤1e9,1≤c≤n),第二行按入狱时间给出每个犯人的罪行值 ai
(0≤a
i≤1e9)
输出描述:
一行输出答案。
输入例子:
3 100 2 1 2 3
输出例子:
2 代码:

import java.util.*;

public class Main {
       public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
        int n=sc.nextInt();
        int t=sc.nextInt();
        int c=sc.nextInt();
        int[] zui =new int[n];
        for(int i=0;i<n;i++){
         zui[i]=sc.nextInt();
        }
        int count=0;
        int zx=0;
        for(int i=0;i<c;i++){
         zx=zx+zui[i];
        }
        if(zx<=t){
         count++;
        }
         for(int i=c;i<n;i++){
          zx=zx+zui[i]-zui[i-c];
          if(zx<=t){
              count++;
             }
        }
         System.out.println(count);
         }
       }

 收获:(1)一开始用两个for循环超时;回来用滑动窗口的原理就不用两个for循环;

         for(int i=c;i<n;i++){

          zx=zx+zui[i]-zui[i-c];

(2)注意,大多数的题都要输入多组数据;

  while(sc.hasNext()),否则通不过。

 

 

转载于:https://www.cnblogs.com/code666/p/6658198.html

你可能感兴趣的文章
css之font属性
查看>>
纯表格打造的邮箱登录页面
查看>>
[程序猿感悟] 一个当了爹的程序员的自白,多些业余生活,更能提高效率
查看>>
北大青鸟ASP.NET——HTML控件和验证控件
查看>>
金融系列12《双币电子现金方案》
查看>>
python003
查看>>
导出Excel
查看>>
《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library与异步通讯层》序
查看>>
Failover cluster中遇到的几个问题
查看>>
20162330 实验一 《Java开发环境的熟悉》 实验报告
查看>>
Hive的UDF(用户自定义函数)开发
查看>>
堆栈区别:
查看>>
微信公众号开发之自定义菜单
查看>>
SVN操作小记
查看>>
wrodcount
查看>>
牛客小白月赛4——H-相邻的糖果
查看>>
手把手教你怎么用动软.net代码生成器 搭建三层架构
查看>>
个人对团队项目的意见以及对项目需求的分析
查看>>
14.DNS:域名系统
查看>>
函数初识(函数的返回值,三元运算,函数的传参)
查看>>