C语言 蓝桥杯 算法训练 ALGO-1003 礼物
资源限制
内存限制: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 礼物相关推荐
- C语言-蓝桥杯-算法训练 印章
问题描述 共有 n 种图案的印章,每种图案的出现概率相同.小A买了 m 张印章,求小A集齐 n 种印章的概率. 输入格式 一行两个正整数n和m. 输出格式 一个实数P表示答案,保留4位小数. 样例输入 ...
- C语言-蓝桥杯-算法训练 完全背包问题
问题描述 有一个背包,容量为M.有N种物品,每种物品有其重量Wi与价值Vi.将这些物品的一部分放入背包,每种物品可以放任意多个,要求总重量不超过容量,且总价值最大. 输入格式 第一行为N, M. 之后 ...
- 传球游戏c语言,[蓝桥杯][算法训练VIP]传球游戏-题解(Java代码)
解题思路: 注意事项: 参考代码: import java.util.Scanner; public class Main { static int n; public static void mai ...
- 蓝桥杯 算法训练 幸运的店家
蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...
- 蓝桥杯 算法训练 Beaver's Calculator
蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...
- 蓝桥杯 算法训练 印章
蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...
- 蓝桥杯算法训练-24点(Python)
问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...
- 蓝桥杯——算法训练——数字三角形
蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...
- 蓝桥杯算法训练-强力党逗志芃
持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...
最新文章
- GCC编译选项--创建与使用库
- Linux使用logrotate来切割日志文件
- 麒麟980+巴龙5000!华为Mate 20 X 5G版通过3C认证:支持40W快充
- 处理接口超时_架构设计 | 接口幂等性原则,防重复提交Token管理
- UITextField使用的一些细节
- scala闭包 变量_Scala闭包,自由和绑定变量,匿名函数
- SQL中GROUP BY语句介绍
- 关于如果减少勒索病毒的侵扰:
- [ASP.NET MVC 小牛之路]08 - Area 使用
- 需求分析之软件界面设计
- FoxMail7.2信纸设置(适用于7.0及以上版本)
- 日志收集 Graylog
- python ui界面设计(二)
- EOF:warning: delimited by end-of-file
- Adobe全家桶功能介绍
- QT基础学习笔记 Demo01
- android studio的旅游APP的开发和设计
- 11张图揭露了程序员的日常生活,看完笑哭(泪奔)!
- Java中的专业术语
- 黑马就业班(02.JavaWeb+项目实战\18.LinuxNginx)
热门文章
- 亿级流量架构演进实战 | 架构演进构建TCP长连接网关 04
- AMD的CPU运行Matlab软件进行神经网络运算时总是出现闪退问题及解决方法
- 开源视频会议白板系统-openMeetings 6.2 局域网搭建官方教程
- Skype for Business Server 2015-04-前端服务器-4-准备Active Directory
- 使用MATLAB的Kalman Filter做目标跟踪——来自MathWorks网站的技术文档
- MasterNotRunningException...,IOException:Failed to specify server‘s Kerberos principal name
- 输入压缩空间量是分区量吗_如何安全、简便的对固态硬盘分区?
- 一个特立独行的普通人
- 三星Gear VR与Oculus Rift DK2全方位比拼
- 高性价比真无线耳机哪款好?2022性价比蓝牙耳机推荐