Problem 2:打地鼠
问题描述:
问题分析:
本题的代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e5+10;
int a[N],dp[N];
int main()
{
int n,d;
int res=-1;
cin>>n>>d;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
dp[1]=1;
for(int i=2;i<=n;i++)
{
for(int j=i;j>=1;j--)
{
res=-1;
if(a[j]+d<a[i])
{
res=j;
break;
}
}
dp[i]=max(dp[i-1],dp[res]+1);
}
cout<<dp[n];
}
Problem 3:排队打饭
问题描述:
问题分析:
代码如下:
#include <iostream>
using namespace std;
const int N=1e5+10;
int arrive[N],cost[N],wait[N];
int nowtime=0;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>arrive[i]>>cost[i]>>wait[i];
cout<<arrive[1]<<" ";
nowtime = arrive[1]+cost[1];
for(int i=2;i<=n;i++)
{
if(arrive[i]+wait[i]<nowtime) cout<<-1<<" ";
else{
if(nowtime<arrive[i]) nowtime = arrive[i];
cout<<nowtime<<" ";
nowtime += cost[i];
}
}
return 0;
}
复旦大学2020其他的题目仍在更新中……