当前位置: 首页 > news >正文

AtCoder Beginner Contest 407 E - Most Valuable Parentheses

AtCoder Beginner Contest 407 E - Most Valuable Parentheses

E - Most Valuable Parentheses

反悔贪心算法

性质:

  • 假设长度为 n n n n ≡ 0 ( m o d 2 ) n \equiv 0 \pmod{2} n0(mod2) 的括号序列是合法的,那么有 n 2 \frac{n}{2} 2n 个左括号
  • 那么长度为 i i i ( i ≤ n i \leq n in) 的括号序列至少有 ⌊ i + 1 2 ⌋ \lfloor \frac{i+1}{2} \rfloor 2i+1 个左括号
  • 第一个一定是左括号,最后一个一定是右括号

根据性质2进行反悔贪心即可

  • 在前1个数字里面,贪心选择前1大的数
  • 在前3个数字里面,贪心选择前2大的数
  • 在前5个数字里面,贪心选择前3大的数
  • 在前 2 × n − 1 2 \times n - 1 2×n1 个数字里面,贪心选择前 n n n 大的数
#include <bits/stdc++.h>#define int long long
#define PII pair<int,int>
#define endl "\n"
#define LL long long
#define fi first
#define se second
#define debug(a) cout<<#a<<"="<<a<<endl;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()
#define rd(x, y) rand() % (y - x + 1) + x
#define ls u << 1
#define rs u << 1 | 1
using namespace std;const int N = 400010;
int a[N], n, m, k;void solve(){cin >> n;for(int i = 1; i <= n * 2; i ++ ){cin >> a[i];}priority_queue<int>q;int ans = 0;for(int i = 1; i <= n; i ++ ){if(i == 1) q.push(a[i]);else{q.push(a[i * 2 - 1]);q.push(a[i * 2 - 2]);}ans += q.top(); q.pop();}cout << ans << endl;
}signed main(){int tt = 1;cin >> tt;while(tt -- ){solve();}return 0;
}

相关文章:

  • 华院计算出席信创论坛,分享AI教育创新实践并与燧原科技共同推出教育一体机
  • Linux操作系统 使用共享内存实现进程通信和同步
  • PYTHON通过VOSK实现离线听写支持WINDOWSLinux_X86架构
  • Windows SSDT Hook(二)
  • 基于大模型预测的FicatIII-IV期股骨头坏死综合治疗研究报告
  • 深圳南山沙河社区联合心美行动举办“青少年天赋提升”助青春成长
  • 千库/六图素材下载工具
  • 【25软考网工】第九章(3)网络故障排除工具
  • 手写multi-head Self-Attention,各个算子详细注释版
  • fbdev驱动在rmmod的时候内核崩溃
  • 目标检测学习
  • Word2Vec 生成词向量
  • 考研系列—操作系统:第三章、内存管理
  • KVM——CPU独占
  • FreeRTOS通俗理解指南:基础概念 + 架构+ 内核组件+练手实验
  • LangChain-Tool和Agent结合智谱AI大模型应用实例2
  • 《数字世界的连接器:计算机网络应用全景解析》
  • 使用flex实现三栏布局,两边固定,中间自适应
  • 智能柜I立控信息I产品介绍
  • 八N皇后问题
  • 建设网站需要的编程/竞价销售是什么意思
  • 国际教育机构网站建设开发方案/手机制作网页用什么软件
  • 做网站有自己的服务器吗/可以免费做网站推广的平台
  • 网页制作与网站建设宝典 pdf/北京厦门网站优化
  • 西宁建站/简单的个人网页制作html
  • 人力资源公司注册/班级优化大师的功能有哪些