1829: Candies
| Result | TIME Limit | MEMORY Limit | Run Times | AC Times | JUDGE |
|---|---|---|---|---|---|
| | 3s | 8192K | 922 | 220 | Standard |
All children like candies. One day a group of children are dividing M candies by the following rules.
1. The candies are numbered with 1,2,3…M.
2. One children can select a series of candies from small number to high number.
3. The candy chosen for the first time can be taken away.
4. From the second candy, it can be taken away iff its value is not more than the value of previous one.
Everyone wants to get candies as many as possible. Now assume you are the first child to choose candies, you are to write a program to calculate the largest number of candies you can take.
Input
There may be more than one test case in the input.
The first line of each case is an integer M(M<=1000), number of candies to be divided, followed by M lines indicating values of every candies. They are sorted by their numbers from 1 to M.
Output
For each case, print the answer.
Sample Input
5
5
2
4
1
3
Sample Output
3
This problem is used for contest: 148
Submit / Problem List / Status / Discuss
#include<iostream>
#include<stdio.h>
using namespace std;
int sum[1000+10]={0};
int a[1000+10]={0};
int main()
{
//freopen("in.txt","r",stdin);
int n;
while(scanf("%d",&n)==1)
{
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum[i]=1;
}
sum[0]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[j]>=a[i]&&sum[i]<sum[j]+1)
{
sum[i]=sum[j]+1;
}
}
}
int m=-1;
for(int i=1;i<=n;i++)
{
if(m<sum[i])m=sum[i];
}
printf("%d\n",m);
}
return 0;
}
这个题目比较简单不说了。。。。
本文介绍了一个关于孩子们如何根据特定规则公平分配糖果的问题,并提供了一段C++代码实现。该问题涉及输入一组按顺序排列的糖果价值,目标是确定首位孩子能够选择的最大糖果数量。
1002

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



