社区讨论
属于是不按照正常思路dp的菜狗了。。。
P1280尼克的任务参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lo8kxy8t
- 此快照首次捕获于
- 2023/10/27 20:18 2 年前
- 此快照最后确认于
- 2023/10/27 20:18 2 年前
本菜狗想练练dp
信心满满第一遍交上去直接WA+RE
删除了多余的部分&修改数组之后成了70
感觉主要的dp都是在以时间作为变量
但是我设的是以任务为变量
题解里面有类似想法的细节也不太一样
总是想请各位看看问题是出在哪里了QAQ
CPP#include<bits/stdc++.h>
using namespace std;
int check;
int n,k,ans;
int f[10005];
bool tag[10005];
struct haha
{
int l,r;
}a[10005];
bool cmp(haha x,haha y)
{
if(x.l==y.l)
return x.r<y.r;
return x.l<y.l;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++)
{
int x;scanf("%d%d",&a[i].l,&x);
a[i].r=a[i].l+x-1;
}
sort(a+1,a+k+1,cmp);
for(int i=1;i<=k;i++)
if(a[i].r>=a[k].l)
tag[i]=1;
for(int i=0;i<=k;i++)
{
if(tag[i])
{
ans=max(ans,f[i]+n-a[i].r);
continue;
}
int tmp;check=0;
for(int j=i+1;j<=k;j++)
{
if(a[j].l>a[i].r)//满足条件
{
if(!check)
check=1,tmp=j;
if(a[j].l!=a[tmp].l)//属于是后面的后面的了
break;
f[j]=max(f[j],f[i]+a[j].l-a[i].r-1);
}
}
}
printf("%d\n",ans);
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...