(CCF CAT 训练二)2023-2024年中国计算机应用技术大赛- 全国算法精英大赛

2024-02-26 1589阅读

温馨提示:这篇文章已超过390天没有更新,请注意相关的内容是否还可用!

Flower

(CCF CAT 训练二)2023-2024年中国计算机应用技术大赛- 全国算法精英大赛

反悔贪心,按照时间对花朵进行排序,从0到n-1遍历花朵,如果当前堆中元素小于当前花朵的绽放时间t,直接放入堆中,否则花朵金币数放入堆中并弹出堆中金币数最小值,最后如果堆中元素个数大于k,一直弹出堆中最小金币数直到元素个数等于k

#include 
#include 
#include 
#include 
using namespace std;
const int N=1e5+5;
int t[N], w[N];
int main()
{
  int n, k;
  cin>>n>>k;
  for(int i=0;i
    cin>t[i];
  }
  for(int i=0;i
    cin>w[i];
  }
  vector v;
  for(int i=0;i
      v.push_back({t[i], w[i]});
  }
  priority_queue
      return p1.first l:tmp->r;
        }
        tmp = new node(i);
        if(pre->v > i){
            pre->l = tmp;
        }else{
            pre->r = tmp;
        }
    }
}
int find(int i){
    node* tmp = root;
    int deep = 1;
    while(tmp!=nullptr){
        tmp = tmp->v>i? tmp->l:tmp->r;
        deep++;
    }
    return deep;
}
int main()
{
  int n;
  cin>>n;
  for(int i=0;i
      int a;
      cin>a;
      insert(a);
  }
  for(int i=0;i
      int a;
      cin>a;
      cout
  int n, m;
  cinnm;
  for(int i=2;i
      cin>t[i];
  }
  for(int i=1;i
      cin>e[i];
  }
  for(int i=1;i 
      cin>d[i];
  }
  memset(dp, -1, sizeof dp);
  dp[1][0]  = 0;
  for(int i=1;i
      if(e[1] - d[1]*(i-1) =0 )
        dp[1][i] = dp[1][i-1] + e[1] - d[1]*(i-1);
      else{
          dp[1][i] = dp[1][i-1];
      }
    //   cout
    //   dp[i]
      for(int j=0; j
        //   dp[i][j] = dp[i-1][j];
          for(int k=0;k
              if(dp[i-1][k]!=-1)
              dp[i][j] = max(dp[i][j], dp[i-1][k] + (long long)e[i]*(j-k-t[i]) - (long long)(j-k-t[i])*(j-k-t[i] -1)*d[i]/ 2);
            //   cout
	// ios_base::sync_with_stdio(false);
	// cin.tie(NULL);
	int n, m;
	// 	cinnm;
	scanf("%d%d", &n, &m);
	t[1] = 0;
	for (int i = 2; i 
		// cint[i];
		scanf("%d", &t[i]);
	}
	for (int i = 1; i 
		// cine[i];
		scanf("%d", &e[i]);
	}
	for (int i = 1; i 
		// cind[i];
		scanf("%d", &d[i]);
	}
	std::vector
		for (int j = 0; e[i] - j * d[i]  0 && j 
			p[i].emplace_back(e[i] - j * d[i]);
		}
	}
	int ans = 0;
	int travel = 0;
	for (int i = 1; i 
		travel += t[i];
		memset(pos, 0, sizeof pos);
		int remain = m - travel;
    	if(remain  //否则remain为负数会进入循环,一直没找到这个错误
			int id = -1, mx = 0;
			for (int j = 1; j 
				if(pos[j] == p[j].size())continue;
				if (p[j][pos[j]]  mx) {
					id = j;
					mx = p[j][pos[j]];
				}
			}
			if (id != -1) {
				tmp_ans += p[id][pos[id]];
				pos[id] ++;
				remain--;
			}
			else {
				break;
			}
		}
		ans = max(ans, tmp_ans);
	}
	printf("%d", ans);
}

  int n;
  cinn;
  for(int i=1;i
      cinarr[i][1]  arr[i][2] arr[i][3];
  }
  memset(dp, -1, sizeof dp);
//   dp[2][1][2] = arr[2][1] + arr[1][2];
//   dp[2][1][3] = arr[2][1] + arr[1][3];
  dp[2][2][1] = arr[2][2] + arr[1][1];
//   dp[2][2][3] = arr[2][2] + arr[1][3];
  dp[2][3][1] = arr[2][3] + arr[1][1];
//   cout
      dp[i][1][2] = dp[i-1][2][1] + arr[i][1];
      dp[i][1][3] = max(dp[i-1][3][1], dp[i-1][3][2]) + arr[i][1];
      dp[i][2][1] = max(dp[i-1][1][2], dp[i-1][1][3]) + arr[i][2];
      dp[i][2][3] = max(dp[i-1][3][1], dp[i-1][3][2]) + arr[i][2];
    //   cout
      dp[i][1][2] = dp[i-1][2][1] + arr[i][1];
      dp[i][1][3] = max(dp[i-1][3][1], dp[i-1][3][2]) + arr[i][1];
      dp[i][2][1] = max(dp[i-1][1][2], dp[i-1][1][3]) + arr[i][2];
      dp[i][2][3] = max(dp[i-1][3][1], dp[i-1][3][2]) + arr[i][2];
      dp[i][3][1] = max(dp[i-1][1][3], dp[i-1][1][2]) + arr[i][3];
      dp[i][3][2] = dp[i-1][2][3] + arr[i][3];
  } 
  ans = max(ans, max(max(max(dp[n][3][1], dp[n][3][2]), dp[n][1][2]), dp[n][1][3]));
//   cout
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]