资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  JiaoShou在爱琳大陆的旅行完毕,即将回家,为了纪念这次旅行,他决定带回一些礼物给好朋友。
  在走出了怪物森林以后,JiaoShou看到了排成一排的N个石子。
  这些石子很漂亮,JiaoShou决定以此为礼物。
  但是这N个石子被施加了一种特殊的魔法。
  如果要取走石子,必须按照以下的规则去取。
  每次必须取连续的2*K个石子,并且满足前K个石子的重量和小于等于S,后K个石子的重量和小于等于S。
  由于时间紧迫,Jiaoshou只能取一次。
  现在JiaoShou找到了聪明的你,问他最多可以带走多少个石子。

输入格式

  第一行两个整数N、S。
  第二行N个整数,用空格隔开,表示每个石子的重量。

输出格式

  第一行输出一个数表示JiaoShou最多能取走多少个石子。

样列输入

  8 3
  1 1 1 1 1 1 1 1

样列输出

  6

样列解释

  任意选择连续的6个1即可。

数据规模和约定

  对于20%的数据:N<=1000
  对于70%的数据:N<=100,000
  对于100%的数据:N<=1000,000,S<=10^12,每个石子的重量小于等于10^9,且非负

#include<stdio.h>
long long sum[1000005];//计算前缀和
//a[n]  :a[1]         a[2]        a[3]        ...  a[n]
//sum[n]:sum[0]+a[1]  sum[1]+a[2] sum[2]+a[3] ...  sum[n-1]+a[n]
long long a[1000005];
long long s,n;
int fun(int k) {//判断条件是否成立,int i;for (i=k;i<=n-k;i++) {if (sum[i]-sum[i-k]<=s&&sum[i+k]-sum[i]<=s)//当i=k时,计算的是0~2k;当i=n-k时,计算的是n-2k~n//把为2*k长度连续的区间遍历一遍,判断是否成立return 1;//成立返回1,}return 0;//不成立返回0,
}
int main() {    scanf("%lld%lld",&n,&s);int i;sum[0]=0;
//sum[0]不真正算入其中,避免对sum[i] = sum[i - 1] + a[i]讨论,若i=0,则无sum[-1]for (i=1;i<=n;i++) {scanf("%lld",&a[i]);sum[i] = sum[i - 1] + a[i];}int left =1;int right =n;int k = 0;
//1-n,已经是排好的连续序列
//利用二分查找,把连续的数组不断分成两部分,查找其中一部分,若不存在缩小范围一半,继续查找while (left <= right) {int mid = (left + right) / 2;if (fun(mid)==1) {left = mid + 1;//若找到则改变left,寻求最大的k(范围给到右区间)k = mid;}else{right = mid - 1;//找不到说明k太大,无法满足条件,去左区间找}}printf("%d",2*k);return 0;//要加return 0;否则会判错(蓝桥判题)
}

注:本人小白一枚,注释可能有许多不正确的地方,还请各位大佬指点。共同学习进步。小编做此题时,经历了 不懂题   理解错题   遗漏情况的过程,现把我理解错题的思路说一下,希望各位避坑,首先,取2*k个不一定从头开始去,比如2 1 1 1 1 1 1 2 3,n=9,k=3;可以从第二个开始取,这样可以取6个最多。

C语言 蓝桥杯 算法训练 ALGO-1003 礼物相关推荐

  1. C语言-蓝桥杯-算法训练 印章

    问题描述 共有 n 种图案的印章,每种图案的出现概率相同.小A买了 m 张印章,求小A集齐 n 种印章的概率. 输入格式 一行两个正整数n和m. 输出格式 一个实数P表示答案,保留4位小数. 样例输入 ...

  2. C语言-蓝桥杯-算法训练 完全背包问题

    问题描述 有一个背包,容量为M.有N种物品,每种物品有其重量Wi与价值Vi.将这些物品的一部分放入背包,每种物品可以放任意多个,要求总重量不超过容量,且总价值最大. 输入格式 第一行为N, M. 之后 ...

  3. 传球游戏c语言,[蓝桥杯][算法训练VIP]传球游戏-题解(Java代码)

    解题思路: 注意事项: 参考代码: import java.util.Scanner; public class Main { static int n; public static void mai ...

  4. 蓝桥杯 算法训练 幸运的店家

    蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...

  5. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  6. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  7. 蓝桥杯算法训练-24点(Python)

    问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...

  8. 蓝桥杯——算法训练——数字三角形

    蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...

  9. 蓝桥杯算法训练-强力党逗志芃

    持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...

最新文章

  1. GCC编译选项--创建与使用库
  2. Linux使用logrotate来切割日志文件
  3. 麒麟980+巴龙5000!华为Mate 20 X 5G版通过3C认证:支持40W快充
  4. 处理接口超时_架构设计 | 接口幂等性原则,防重复提交Token管理
  5. UITextField使用的一些细节
  6. scala闭包 变量_Scala闭包,自由和绑定变量,匿名函数
  7. SQL中GROUP BY语句介绍
  8. 关于如果减少勒索病毒的侵扰:
  9. [ASP.NET MVC 小牛之路]08 - Area 使用
  10. 需求分析之软件界面设计
  11. FoxMail7.2信纸设置(适用于7.0及以上版本)
  12. 日志收集 Graylog
  13. python ui界面设计(二)
  14. EOF:warning: delimited by end-of-file
  15. Adobe全家桶功能介绍
  16. QT基础学习笔记 Demo01
  17. android studio的旅游APP的开发和设计
  18. 11张图揭露了程序员的日常生活,看完笑哭(泪奔)!
  19. Java中的专业术语
  20. 黑马就业班(02.JavaWeb+项目实战\18.LinuxNginx)

热门文章

  1. 亿级流量架构演进实战 | 架构演进构建TCP长连接网关 04
  2. AMD的CPU运行Matlab软件进行神经网络运算时总是出现闪退问题及解决方法
  3. 开源视频会议白板系统-openMeetings 6.2 局域网搭建官方教程
  4. Skype for Business Server 2015-04-前端服务器-4-准备Active Directory
  5. 使用MATLAB的Kalman Filter做目标跟踪——来自MathWorks网站的技术文档
  6. MasterNotRunningException...,IOException:Failed to specify server‘s Kerberos principal name
  7. 输入压缩空间量是分区量吗_如何安全、简便的对固态硬盘分区?
  8. 一个特立独行的普通人
  9. 三星Gear VR与Oculus Rift DK2全方位比拼
  10. 高性价比真无线耳机哪款好?2022性价比蓝牙耳机推荐