Educational Codeforces Round 165 (Rated for Div. 2) (C、D)

1969C - Minimizing the Sum 

        题意:

        思路:观察到操作数很小,最值问题+操作数很容易想到dp,用dp[i][j]表示第i个元素,操作了j次的最小值总和,转移的时候枚举连续操作了几次即可,而连续操作了几次即将a_{i-k} ...a_{i}全部变成其中的最小值。

        

// Problem: C. Minimizing the Sum
// Contest: Codeforces - Educational Codeforces Round 165 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1969/problem/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define int long long
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{cin >> n >> m;int dp[n + 5][m + 5];memset(dp , 0x3f , sizeof dp);dp[0][0] = 0;for(int i = 1 ; i <= n ; i ++){cin >> a[i];}for(int i = 1 ; i <= n ; i ++){for(int j = 0 ; j <= min(i - 1 , m); j ++){//使用了j次for(int k = 0 ; k <= j ; k ++){//连续使用k次int minn = a[i];for(int t = i ; t >= i - k ; t --)minn = min(a[t] , minn);dp[i][j] = min(dp[i][j] , dp[i - k - 1][j - k] + (k + 1) * minn); }}}
//	cout << dp[4][2] << endl;int ans = llinf;for(int i = 0 ; i <= m ; i++){ans = min(ans , dp[n][i]);}cout << ans << endl;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;cin>>t;while(t--){solve();}return 0;
}

1969D - Shop Game 

        题意:

        思路:

        思考Alice可以选择哪些商品:即a_{i} <= b_{i}的商品都可以被选择。

        思考给定一个商品集合,Bob该如何选择:按照b的大小从大到小排列,前k个设为免费。

        再思考这样一定是最优的么?不一定

        若Alice抛弃一个商品,那么他将会少花费a_{i}金币,而后Bob会重新按照规则选取k个,因此有可能最终花费的金币数会减少。

        思考Alice按照怎么样的顺序抛弃商品:1、原先没有被Bob选中的商品一定不会被Alice抛弃。2、Alice抛弃的是被Bob选中的当中a最大的那一个。

        因此我们用两个优先队列来维护被Bob选中的那些商品以及没有被Bob选中的商品。

        随后我们按照顺序逐个抛弃商品,求整个过程中所赚取金币的最大值即可。

        

// Problem: D. Shop Game
// Contest: Codeforces - Educational Codeforces Round 165 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1969/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
#define int long long
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
bool cmp(pl a , pl b){if(a.x != b.x){return a.x > b.x;}else{return a.y < b.y;}
}
void solve() 
{cin >> n >> m;vector< pair<int,int> >p(n + 5);for(int i = 0 ; i < n ; i ++)cin >> p[i].y;for(int i = 0 ; i < n ; i ++)cin >> p[i].x;vector< pair<int,int> > ans;LL cost = 0;for(int i = 0 ; i < n ; i ++){if(p[i].y <= p[i].x){ans.pb(p[i]);cost -= p[i].y;}}sort(ans.begin() , ans.end() , cmp);priority_queue<LL> ma;//拿走的for(int i = 0 ; i < min(m , (int)ans.size()) ; i ++){ma.push(ans[i].y);}priority_queue<pl> ma1;//需要购买的		for(int i = m ; i < ans.size() ; i ++){ma1.push({ans[i].x , ans[i].y});cost += ans[i].x;}int maxx = cost; while(!ma.empty() && !ma1.empty()){cost += ma.top();cost -= ma1.top().first;ma.pop();ma.push(ma1.top().second);ma1.pop();maxx = max(maxx , cost);}cout << max(maxx , 0LL) << endl;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;cin>>t;while(t--){solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

陈随易:论技术思维和产品思维

大家好&#xff0c;我是不被定义的前端之虎陈随易。 我的个人网站是&#xff1a;https://chensuiyi.me&#xff0c;欢迎大家眼熟我。 写这篇文章呢&#xff0c;源于一次群聊。 群友有一个产品&#xff0c;其中涉及到免费用户和付费用户对 pdf 的查看权限问题&#xff0c;使用…

图像处理ASIC设计方法 笔记21 标记ASIC的顶层状态机

目录 (一)标记ASIC的工作流程1 ASIC首先从控制寄存器内读出待标记图像的基本参数2若写入了有效的启动命令,则进入下面一帧图像的标记过程。3 ASIC通过接口模块从FIFO1中读取待标记的图像4一帧图像初步标记完成后进行等价表的整理压缩5从临时标记存储器中读取临时标记送入标记…

gitee本地项目上传

1.先生成SSH密钥 ssh-keygen -t rsa -C "trueelegance163.com" 2.gitee配置公钥&#xff0c;设置对应的公钥名称比如:localtest; Git 全局设置:若刚安装完Git&#xff0c;需要进行Git的配置【若已配置完成&#xff0c;此步骤可以跳过】 git config --global user…

SQL注入基础-4

GetSHELL 一、文件读写注入 1、原理&#xff1a;利用文件读写权限进行注入&#xff0c;可以写入一句话木马&#xff0c;也可以读取系统文件的敏感信息。 2、要求和条件&#xff1a;用户最高权限(可以尝试更改secure_file_priv)和网站绝对路径 3、网站的绝对路径 (1)常见路…

大语言模型从Scaling Laws到MoE

1、摩尔定律和伸缩法则 摩尔定律&#xff08;Moores law&#xff09;是由英特尔&#xff08;Intel&#xff09;创始人之一戈登摩尔提出的。其内容为&#xff1a;集成电路上可容纳的晶体管数目&#xff0c;约每隔两年便会增加一倍&#xff1b;而经常被引用的“18个月”&#xf…

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

扫雷实现详解【递归展开+首次必展开+标记雷+取消标记雷】

扫雷 一.扫雷设计思路二.扫雷代码逐步实现1.创建游戏菜单2.初始化棋盘3.打印棋盘4.随机布置雷5.统计周围雷的个数6.递归展开棋盘7.标记雷8.删除雷的标记9.保证第一次排雷的安全性棋盘必定展开10.排查雷11.判断输赢 三.扫雷总代码四.截图 一.扫雷设计思路 1.创建游戏菜单。  2.…

Leetcode—1056. 易混淆数【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—1056. 易混淆数 &#x1f4a9;山实现代码 class Solution { public:bool confusingNumber(int n) {int arr[10] {0};int notNum 0;int arr2[12] {0};int size 0;while(n) {int x n % 10;arr[x] 1;arr2[size] x;if(…

力扣爆刷第132天之动态规划五连刷(子序列问题)

力扣爆刷第132天之动态规划五连刷&#xff08;子序列问题&#xff09; 文章目录 力扣爆刷第132天之动态规划五连刷&#xff08;子序列问题&#xff09;总结&#xff1a;一、1035. 不相交的线二、53. 最大子数组和三、392. 判断子序列四、115. 不同的子序列五、583. 两个字符串的…

OneFlow深度学习框原理、用法、案例和注意事项

本文将基于OneFlow深度学习框架&#xff0c;详细介绍其原理、用法、案例和注意事项。OneFlow是由中科院计算所自动化研究所推出的深度学习框架&#xff0c;专注于高效、易用和扩展性强。它提供了一种类似于深度学习库的接口&#xff0c;可以用于构建神经网络模型&#xff0c;并…

【Java基础】Maven的生命周期(clean+site+default)

1. 前言 在 Maven 出现之前&#xff0c;项目构建的生命周期就已经存在&#xff0c;开发人员每天都在对项目进行清理&#xff0c;编译&#xff0c;测试及部署&#xff0c;但由于没有统一的规范&#xff0c;不同公司甚至不同项目之间的构建的方式都不尽相同。 Maven 从大量项目…

Java Web网页设计(7)-网页查看

7.面我们讲最后一个操作 修改的操作 在讲修改之前 我们先讲一个知识点 表单调用的通常是doPost方法 超链接通常调用的是doGet方法 操作如何在同一个方法 (doGet中) 进行区分 type OrderDao orderDaonew OrderDao(); String typereq.getParameter("type"); …

如何学习 Unreal Engine

学习Unreal Engine&#xff08;简称UE&#xff09;&#xff0c;尤其是最新的UE5&#xff0c;是一项复杂但值得的任务&#xff0c;因为它是游戏开发和实时3D内容创建的强大工具。以下是一些建议来帮助您开始学习Unreal Engine&#xff1a; 1. **了解基础知识**&#xff1a;在深…

nn.GRU层输出:state与output的关系

在 GRU&#xff08;Gated Recurrent Unit&#xff09;中&#xff0c;output 和 state 都是由 GRU 层的循环计算产生的&#xff0c;它们之间有直接的关系。state 实际上是 output 中最后一个时间步的隐藏状态。 GRU 的基本公式 GRU 的核心计算包括更新门&#xff08;update gat…

Arxml文件解析03- 自动驾驶Radar服务radar_svc.arxml

<AR-PACKAGES><AR-PACKAGE><SHORT-NAME>bosch</SHORT-NAME><AR-PACKAGES>...</AR-PACKAGES>

c++中unrodered_map与unordered_set的基本使用

unordered_map 在C中&#xff0c;std::unordered_map 是一个无序关联容器&#xff0c;它包含可以重复的键-值对组合&#xff0c;但每个键在容器中必须是唯一的。与std::map不同&#xff0c;std::unordered_map不按照键的排序顺序存储元素&#xff0c;而是使用哈希表来存储元素…

ZooKeeper以及DolphinScheduler的用法

目录 一、ZooKeeper的介绍 数据模型 ​编辑 操作使用 ①登录客户端 ​编辑 ②可以查看下面节点有哪些 ③创建新的节点&#xff0c;并指定数据 ④查看节点内的数据 ⑤、删除节点及数据 特殊点&#xff1a; 运行机制&#xff1a; 二、DolphinScheduler的介绍 架构&#…

STM32解决空闲中断误触发问题.

在用串口传输大量数据时&#xff0c;发现空闲中断误触发 我是在做用串口将大量数据传入MCU这易操作时&#xff0c;发现一帧数据还没发完成&#xff0c;就进如来空闲中断&#xff0c;导致数据不完整&#xff0c;有点数据混乱了。 参考别的博主说法&#xff0c;在1个或1.5个字节时…

将java项目上传到GitHub步骤

文章目录 GitHub 作用github如何修改默认分支为master手把手教你把项目上传github上github怎么删除仓库或项目执行到push时报错的解决办法github怎么修改仓库语言 GitHub 作用 GitHub 是一个存放软件代码的网站&#xff0c;主要用于软件开发者存储和管理其项目源代码&#xff…

HTB Intuition

Intuition User nmap ┌──(kali㉿kali)-[~/…/machine/SeasonV/linux/iClean] └─$ nmap -A 10.129.22.134 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-30 05:29 EDT Nmap scan report for 10.129.22.134 Host is up (0.49s latency). Not shown: 998 …