C++11 获取地址消毒器致命信号 bool comp(vectorv1,vectorv2){ 返回(v2[1]>v1[1]); } 类解决方案{ 公众: int dp[20004][10002]; 整数求解(向量和过程,长整数时间,整数n){ 如果(dp[时间][n
获取地址消毒器致命信号C++11 获取地址消毒器致命信号 bool comp(vectorv1,vectorv2){ 返回(v2[1]>v1[1]); } 类解决方案{ 公众: int dp[20004][10002]; 整数求解(向量和过程,长整数时间,整数n){ 如果(dp[时间][n,c++11,C++11,获取地址消毒器致命信号 bool comp(vectorv1,vectorv2){ 返回(v2[1]>v1[1]); } 类解决方案{ 公众: int dp[20004][10002]; 整数求解(向量和过程,长整数时间,整数n){ 如果(dp[时间][n]!=-1){ 返回dp[时间][n]; } 如果(n>=courses.size()){ 返回dp[time][n]=0; } 如果(courses[n][0]+timeintdp[20004][10002];刚好在1GB以下,这可能有点太多
bool comp(vectorv1,vectorv2){
返回(v2[1]>v1[1]);
}
类解决方案{
公众:
int dp[20004][10002];
整数求解(向量和过程,长整数时间,整数n){
如果(dp[时间][n]!=-1){
返回dp[时间][n];
}
如果(n>=courses.size()){
返回dp[time][n]=0;
}
如果(courses[n][0]+timeintdp[20004][10002];
刚好在1GB以下,这可能有点太多了。
bool comp(vector<int>v1,vector<int>v2){
return(v2[1]>v1[1]);
}
class Solution {
public:
int dp[20004][10002];
int solve(vector<vector<int>>& courses,long int time,int n){
if(dp[time][n]!=-1){
return dp[time][n];
}
if(n>=courses.size()){
return dp[time][n]=0;
}
if(courses[n][0]+time<=courses[n][1]){
return dp[time][n]=max(solve(courses,time,n+1),1+solve(courses,time+courses[n][0],n+1));
}
else{
return dp[time][n]=solve(courses,time,n+1);
}
}
void init(){
for(auto i=0;i<10002;i++){
for(auto j=0;j<10002;j++){
dp[i][j]=-1;
}
}
}
int scheduleCourse(vector<vector<int>>& courses) {
init();
sort(courses.begin(),courses.end(),comp);
return solve(courses,0,0);
}
};