A9795 | Transmitting Levels
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Optimizing the amount of data transmitted via a network is an important and interesting part of developing any network application.
In one secret game developed deep in the ZeptoLab company, the game universe consists of $n$ levels, located in a circle. You can get from level $i$ to levels $i-1$ and $i+1$ , also you can get from level $1$ to level $n$ and vice versa. The map of the $i$ -th level description size is $a_{i}$ bytes.
In order to reduce the transmitted traffic, the game gets levels as follows. All the levels on the server are divided into $m$ groups and each time a player finds himself on one of the levels of a certain group for the first time, the server sends all levels of the group to the game client as a single packet. Thus, when a player travels inside the levels of a single group, the application doesn't need any new information. Due to the technical limitations the packet can contain an arbitrary number of levels but their total size mustn't exceed $b$ bytes, where $b$ is some positive integer constant.
Usual situation is that players finish levels one by one, that's why a decision was made to split $n$ levels into $m$ groups so that each group was a continuous segment containing multiple neighboring levels (also, the group can have two adjacent levels, $n$ and $1$ ). Specifically, if the descriptions of all levels have the total weight of at most $b$ bytes, then they can all be united into one group to be sent in a single packet.
Determine, what minimum number of groups do you need to make in order to organize the levels of the game observing the conditions above?
As developing a game is a long process and technology never stagnates, it is yet impossible to predict exactly what value will take constant value $b$ limiting the packet size when the game is out. That's why the developers ask you to find the answer for multiple values of $b$ .
In one secret game developed deep in the ZeptoLab company, the game universe consists of $n$ levels, located in a circle. You can get from level $i$ to levels $i-1$ and $i+1$ , also you can get from level $1$ to level $n$ and vice versa. The map of the $i$ -th level description size is $a_{i}$ bytes.
In order to reduce the transmitted traffic, the game gets levels as follows. All the levels on the server are divided into $m$ groups and each time a player finds himself on one of the levels of a certain group for the first time, the server sends all levels of the group to the game client as a single packet. Thus, when a player travels inside the levels of a single group, the application doesn't need any new information. Due to the technical limitations the packet can contain an arbitrary number of levels but their total size mustn't exceed $b$ bytes, where $b$ is some positive integer constant.
Usual situation is that players finish levels one by one, that's why a decision was made to split $n$ levels into $m$ groups so that each group was a continuous segment containing multiple neighboring levels (also, the group can have two adjacent levels, $n$ and $1$ ). Specifically, if the descriptions of all levels have the total weight of at most $b$ bytes, then they can all be united into one group to be sent in a single packet.
Determine, what minimum number of groups do you need to make in order to organize the levels of the game observing the conditions above?
As developing a game is a long process and technology never stagnates, it is yet impossible to predict exactly what value will take constant value $b$ limiting the packet size when the game is out. That's why the developers ask you to find the answer for multiple values of $b$ .
输入格式
The first line contains two integers $n$ , $q$ ( $2<=n<=10^{6}$ , $1<=q<=50$ ) — the number of levels in the game universe and the number of distinct values of $b$ that you need to process.
The second line contains $n$ integers $a_{i}$ ( $1<=a_{i}<=10^{9}$ ) — the sizes of the levels in bytes.
The next $q$ lines contain integers $b_{j}$ (), determining the values of constant $b$ , for which you need to determine the answer.
The second line contains $n$ integers $a_{i}$ ( $1<=a_{i}<=10^{9}$ ) — the sizes of the levels in bytes.
The next $q$ lines contain integers $b_{j}$ (), determining the values of constant $b$ , for which you need to determine the answer.
输出格式
For each value of $k_{j}$ from the input print on a single line integer $m_{j}$ ( $1<=m_{j}<=n$ ), determining the minimum number of groups to divide game levels into for transmission via network observing the given conditions.
输入输出样例
输入 #1
6 3 2 4 2 1 3 2 7 4 6
输出 #1
2 4 3
In the test from the statement you can do in the following manner.
- at $b=7$ you can divide into two segments: $2|421|32$ (note that one of the segments contains the fifth, sixth and first levels);
- at $b=4$ you can divide into four segments: $2|4|21|3|2$ ;
- at $b=6$ you can divide into three segments: $24|21|32|$ .
- at $b=7$ you can divide into two segments: $2|421|32$ (note that one of the segments contains the fifth, sixth and first levels);
- at $b=4$ you can divide into four segments: $2|4|21|3|2$ ;
- at $b=6$ you can divide into three segments: $24|21|32|$ .
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted