3966: 购物(sum)

2024-03-08 23:58
文章标签 购物 sum 3966

本文主要是介绍3966: 购物(sum),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时间限制: 1 Sec 内存限制: 512 MB
提交: 43 解决: 21
[提交][状态][博客][加入收藏]
题目描述
visit_world 有一个商店,商店里卖NN个商品,第ii 个的价格为 a[i]a[i]
我们称一个正整数KK 是美妙的,当且仅当我们可以在商店里选购若干个商品,使得价格之和落在区间 [K,2K][K,2K]中。
问:有多少个美妙的数。
输入
第一行一个整数NN。
接下来一行 NN个整数,描述数组a[]a[]。

输出
输出一行一个整数,表示答案。
样例输入
3
1 2 3
样例输出
6
提示
解释
可以证明1≤K≤61≤K≤6 都是美妙的,除此之外的数都不是美妙的。
样例 2
/upload/file/20181017/20181017190720_44742.zip
数据范围和子任务
子任务 1(30 分):N≤100,ai≤100N≤100,ai≤100 .
子任务 2(20 分):N≤100000,ai≤20N≤100000,ai≤20.
子任务 3(20 分):N≤3,ai≤109N≤3,ai≤109 .
子任务 4(30 分):N≤105,ai≤109N≤105,ai≤109 .

来源
hnsdfz国庆集训day2

题解
考虑子任务3,暴力求出每一种价值,设价值为W,那么它能贡献的区间为[(W+1)/2,W]。然后区间求并即可。
考虑优化求区间的次数,要避免全部枚举,就假设已经处理完前i-1个区间,考虑第a[i]对答案的贡献。设前i-1个a[i]和为s,那么a[i]可能贡献的区间为[(a[i]+1)/2,a[i]+s],又发现[(a[i]+s)/2,a[i]+s]这段区间一定能取到(所有物品都取即可);那么在这些物品中去掉一些,必然能使和不小于s/2(因为个数大于一),故区间再向左移,依此类推,必能完全取到(a[i]+1)/2。 考虑与之前答案合并,若左端点小于之前的右端点,将右端点右移即可;若小于,则考虑想一种办法使这个空缺的区间不对后面产生影响,即左端点小于后面所有区间的左端点,那么按a[i]从小到大排序即可。

这篇关于3966: 购物(sum)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788848

相关文章

最大流=最小割=最小点权覆盖集=sum-最大点权独立集

二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。 在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。   二分图最小点权覆盖     从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。 建模:     原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t

如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder

右击项目名--->Build Path--->Configure Build Path...--->java Build Path--->Access rules:1 rule defined,added to all librar...   --->Edit --->Add...

18. 4 Sum

题目: 解答: 与之前的三数之和的解法类似,也是先排序,然后不断剔除不可能的条件,最后两个参数,通过两头求和计算得出。 代码: class Solution {public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> result;int len = nums.size

apt-get update更新源时,出现“Hash Sum mismatch”问题

转载自:apt-get update更新源时,出现“Hash Sum mismatch”问题 当使用apt-get update更新源时,出现下面“Hash Sum mismatch”的报错,具体如下: root@localhost:~# apt-get update ...... ...... W: Failed to fetch http://us.archive.ubuntu.com/ub

时尚购物新趋势:Spring Boot技术在时装系统中的应用

第3章 系统分析 3.1 需求分析 时装购物系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。 系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以直接在平台上进行查看所有数据信息,根据需求可以进行在线添加

网页时装购物系统:Spring Boot框架的创新设计

第1章 绪论 1.1背景及意义 随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对时装购物系统方面的要求也在不断提高,喜欢购物的人数更是不断增加,使得时装购物系统的开发成为必需而且紧迫的事情。时装购物系统主要是借助计算机,通过对时装购物系统所需的信息管理,增加用户的选择,同时也方便对广大时装购物系统的及时查询、修改以及对时装购物系统的及时了解。时装购物系统对用

时尚购物革命:Spring Boot技术在网页时装系统中的应用

第1章 绪论 1.1背景及意义 随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对时装购物系统方面的要求也在不断提高,喜欢购物的人数更是不断增加,使得时装购物系统的开发成为必需而且紧迫的事情。时装购物系统主要是借助计算机,通过对时装购物系统所需的信息管理,增加用户的选择,同时也方便对广大时装购物系统的及时查询、修改以及对时装购物系统的及时了解。时装购物系统对用

[LeetCode] 303. Range Sum Query - Immutable

题:https://leetcode.com/problems/range-sum-query-immutable/description/ 题目 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive. Example: Given nums

[LeetCode] 64. Minimum Path Sum

题:https://leetcode.com/problems/minimum-path-sum/description/ 题目 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers

[LeetCode] 404. Sum of Left Leaves

题:https://leetcode.com/problems/sum-of-left-leaves/description/ 题目 Find the sum of all left leaves in a given binary tree. Example: 3/ \9 20/ \15 7There are two left leaves in the binary t