卷首语:
好长时间没敲题,太水了。。。。思维慢死了。。。。
Problem 1537 - A - Stones I
题目链接:
http://acm.whu.edu.cn/land/problem/detail?problem_id=1537
题目意思:
有n堆石头,第i堆有ai和bi属性,每次拿一堆(假设第i堆)后,所有的石头的a值都减去bi.求最后拿到的a的和的最大值。
解题思路:
枚举。
题目本质意思就是求拿了m堆后 sigma(a)-m*sigma(b)的最大值。枚举m,按ai-m*bi排序,求出前面的m个和,再比较求出最大值。
代码:
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
#define Maxn 1100
struct Node
{
ll a,b,v;
}t1[Maxn];
ll n,ans;
bool cmp(struct Node a,struct Node b)
{
return a.v>b.v;
}
ll MM(ll a,ll b)
{
return a>b?a:b;
}
int main()
{
while(scanf("%lld",&n)&&n)
{
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&t1[i].a,&t1[i].b