上海市计算机学会竞赛平台2025年1月月赛丙组音乐播放

题目描述

Bob 收藏了 nn 首有趣的音乐唱片,第 ii 首长 mimi​ 分钟,其语言为 lili​。

某天,Bob 想听语言为 LL 的歌,他希望选出恰好 kk 张唱片,这些唱片中的音乐都是语言为 LL 的,并且它们的总时长越长越好。

Bob 希望你帮忙找出他能听满足条件的音乐唱片的最大总时长,或者报告不能找到 kk 张这样的唱片。

输入格式

第一行一个整数 TT 表示数据组数。

对于每组数据:

第一行三个整数 n,k,Ln,k,L。

接下来 nn 行,每行两个整数 mi,limi​,li​ 表示第 ii 首歌的时长和语言。

输出格式

对于每组数据,如果能选出 kk 张符合要求的唱片,输出一行一个整数表示最大总时长,否则输出一行 -1

数据范围

对于 30%30% 的数据,L=li=1L=li​=1,mi=1mi​=1。

对于 60%60% 的数据,L=li=1L=li​=1。

对于 100%100% 的数据,1≤T≤2001≤T≤200,1≤k≤n≤10001≤k≤n≤1000,1≤L≤51≤L≤5,1≤mi≤1001≤mi​≤100,1≤li≤51≤li​≤5。

样例数据

输入:

输出:

7
12
-1
8

说明:

对于第一组数据,有 1,3 两首语言为 2 的音乐,时长分别为 5,7,则选择时长为 7 的可以达到目标。

4<

### 使用Arduino控制振镜 #### 控制原理 振镜通常由两个相互垂直的反射镜组成,用于快速改变激光束的方向。为了实现精确控制,需要通过Arduino发送PWM信号来调节振镜电机的位置[^1]。 #### 所需硬件组件 - Arduino板(推荐使用Uno或Mega) - 振镜驱动器模块 - 连接线缆 - USB数据线 - 可选:电源适配器(如果外部供电) #### 硬件连接方法 将Arduino与振镜驱动器之间的连线按照如下方式连接: - 将Arduino的GND端口连接到振镜驱动器的地线接口; - 把Arduino上的两路PWM输出引脚分别接到振镜X轴和Y轴输入端子上;一般情况下可以选用9号和10号作为默认PWM通道[^2]。 #### 软件编程实例 下面给出一段简单的C++程序用来测试基本功能: ```cpp // 定义XY方向对应的PWM管脚编号 const int X_AXIS_PIN = 9; const int Y_AXIS_PIN = 10; void setup() { pinMode(X_AXIS_PIN, OUTPUT); pinMode(Y_AXIS_PIN, OUTPUT); // 初始化串行通信以便调试打印信息 Serial.begin(9600); } void loop() { // 设置初始位置为中间点 (即50%占空比) analogWrite(X_AXIS_PIN, 128); analogWrite(Y_AXIS_PIN, 128); delay(2000); // 延迟一段时间让设备稳定下来 // 移动至右上方角落 (接近最大偏转角度对应较高电压水平) analogWrite(X_AXIS_PIN, 255); analogWrite(Y_AXIS_PIN, 255); delay(2000); // 返回中心位置并结束循环等待下一次触发 analogWrite(X_AXIS_PIN, 128); analogWrite(Y_AXIS_PIN, 128); } ``` 这段代码实现了最基本的移动操作——先定位到屏幕中央再跳转至上角最后回到起点处重复此过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值