7-2 How Many Ways to Buy a Piece of Land (25 分)
The land is for sale in CyberCity, and is divided into several pieces. Here it is assumed that each piece of land has exactly two neighboring pieces, except the first and the last that have only one. One can buy several contiguous(连续的) pieces at a time. Now given the list of prices of the land pieces, your job is to tell a customer in how many different ways that he/she can buy with a certain amount of money.
Input Specification:
Each input file contains one test case. Each case first gives in a line two positive integers: N (≤104), the number of pieces of the land (hence the land pieces are numbered from 1 to N in order), and M (≤109), the amount of money that your customer has.
Then in the next line, N positive integers are given, where the i-th one is the price of the i-th piece of the land.
It is guaranteed that the total price of the land is no more than 109.
Output Specification:
For each test case, print the number of different ways that your customer can buy. Notice that the pieces must be contiguous.
Sample Input:
5 85
38 42 15 24 9
结尾无空行
Sample Output:
11
结尾无空行
Hint:
The 11 different ways are:
38
42
15
24
9
38 42
42 15
42 15 24
15 24
15 24 9
24 9
按题目要求 挺简单的
AC代码:
#include<iostream>
using namespace std;
int N,M,ans=0;;
int price[10000];
int main(){
cin>>N>>M;
for(int i=0;i<N;i++){
scanf("%d",&price[i]);
}
for(int i=0;i<N;i++){
int cnt=0;
int sum=0;
for(int j=i;j<N;j++){
if(sum+price[j]<=M){
cnt++;
sum+=price[j];
}else{
break;
}
}
ans+=cnt;
}
printf("%d\n",ans);
return 0;
}
该博客讨论了一个关于在赛博城中购买土地的问题。土地被分成多块,每块有两个相邻的地块,除了首尾各有一块只有一个相邻地块。用户需在给定预算内购买连续的地块。博客给出了输入输出规范,并展示了一个通过动态规划求解的AC代码,该代码遍历所有可能的购买组合并计算不同购买方式的数量。
588

被折叠的 条评论
为什么被折叠?



