杭电一个典型dp问题 特别简单 就是a不了

研发之道
博客专家认证
2015-04-30 12:10:48
http://acm.hdu.edu.cn/showproblem.php?pid=1160
大神 帮看看 !两三天了 就是a不了 也不知道哪儿错了
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include <string.h>
using namespace std;
struct mice
{
int w,v,num;
}per[1005];

bool cmp(mice a,mice b)
{
if(a.w==b.w)
return a.v>b.v;
return a.w<b.w;
}
int main()
{
int i=1;
while( scanf("%d%d",&per[i].w,&per[i].v)!=EOF)
per[i].num=i++;
;
sort(per+1,per+i,cmp);
int memory[1005] ,dp[1005],M=0,path;
for(int l=1;l<i;l++)
dp[l]=1;
for(int j=1;j<i;j++)
{
memory[j]=j;
for(int k=1;k<j;k++)
{
if(per[k].v>per[j].v&&per[k].w<per[k+1].w&&dp[k]+1>dp[j])
{
memory[j]=k;
dp[j]=dp[k]+1;
if(dp[j]>M)
{
M=dp[j];
path=j;
}
}
}

}

int ls[1006],x=0;
while(memory[path]!=path)
{
ls[x++]=path;
path=memory[path];
}
ls[x]=path;
cout<<x+1<<endl;
while(x>=0)
{
cout<<per[ls[x]].num<<endl;
x--;
}
return 0;
}
...全文
225 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_dragon_fly 2015-04-30
  • 打赏
  • 举报
回复
per[k].w<per[k+1].w 那个k+1是j ,
mxway 2015-04-30
  • 打赏
  • 举报
回复
测试数据 1000 2000 1500 1100 1500 1200 1600 1150 你的输出结果 2 1 3 正确的应该是 3 1 3 4
mxway 2015-04-30
  • 打赏
  • 举报
回复
引用 3 楼 mxway 的回复:
测试数据 1000 2000 1100 1500 1100 1500 你的输出结果是 1 1 2 按题目要求应该输出 1 1 3 才对吧。
再次更正你的输出结果是 2 1 2
研发之道 2015-04-30
  • 打赏
  • 举报
回复
肿么办 丫的 就是a不了 !奇了怪了!!上面你给的数据 也没错。
mxway 2015-04-30
  • 打赏
  • 举报
回复
sorry没看清,题目是special judge。112也对。
mxway 2015-04-30
  • 打赏
  • 举报
回复
测试数据 1000 2000 1100 1500 1100 1500 你的输出结果是 1 1 2 按题目要求应该输出 1 1 3 才对吧。
研发之道 2015-04-30
  • 打赏
  • 举报
回复
不对吧 题目说 重量严格递增 然后速度严格递减 !!!! 求助啊 ! 气死了我快!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧