题目:P2095 营养膳食
我的思路是统计每道菜有哪些,降序排序以后一种菜一种菜的吃,若超过了能吃的极限,就抛弃其他的菜。
但是只有30分,WA了四个,RE了三个。
求调!!!
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int num[105],cnt[105],zh,fe;
int a[105][205];
int ans;
bool cmp(int a,int b)
{
return a>=b;
}
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=k;i++)
{
cin>>num[i];
}
for(int i=1;i<=n;i++)
{
cin>>zh>>fe;
cnt[fe]++;
a[fe][cnt[fe]]=zh;
}
for(int i=1;i<=n;i++)
{
sort(a[i]+1,a[i]+cnt[i]+2,cmp);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=num[i];j++) ans+=a[i][j];
}
cout<<ans<<endl;
return 0;
}