这是一道DP+记忆搜索的题目,题目不难,但是需要注意的是:题目虽然说的是special judge但是并不是所有正确的答案都可以AC的,比如下面的程序中的第二个for循环,如果改为从i-1到0就不能AC,遇到这种题目真是无语。
C++代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
struct Mouse{
int w;
int s;
int pre;
int count;
int id;
}dp[1010];
bool cmp(Mouse a,Mouse b){
if(a.w==b.w)
return a.s>b.s;
return a.w<b.w;
}
void output(int index){
if(index==-1)
return;
output(dp[index].pre);
printf("%d\n",dp[index].id);
}
int main(){
//freopen("1.txt","r",stdin);
int w,s,len=0;
while(scanf("%d%d",&w,&s)!=EOF){
dp[len].w=w;dp[len].s=s;dp[len].id=len+1;
len++;
}
sort(dp,dp+len,cmp);
dp[0].pre=-1;dp[0].count=1;
int res=0,last=-1;
for(int i=1;i<len;i++){
int index=-1,max=0;
for(int j=0;j<i;j+