《如 何 速 通 一 套 题》3

A election

定数:普及+,普及-,普及-,无,总计普及。

(思维,实现,算法,数据结构,总计)

双指针,每一次只会打死最左的和最右的,计算是死左边还是死右边即可。

\(O(N \log N) - O(1)\)

code
#include <bits/stdc++.h>
using namespace std;struct node {int x, id;
}arr[1000010];int n, xx[1000010];int lrmid(int x, int y) {int l = arr[x].x, r = arr[y].x, ans = 0;for(; l <= r; ) {int mid = (l + r) >> 1;//cout << mid << ' ' << mid - arr[x].x << ' ' << arr[y].x - mid << '\n';if((mid - arr[x].x) > (arr[y].x - mid)) {ans = mid, r = mid - 1;}else {l = mid + 1;}}return ans;
}int main() {freopen("election.in", "r", stdin);freopen("election.out", "w", stdout);cin >> n;for(int i = 1; i <= n; i++) {cin >> arr[i].x;arr[i].id = i;}sort(arr + 1, arr + n + 1, [](node a, node b) {return a.x < b.x;});for(int i = 1; i <= n; i++) {xx[i] = arr[i].x;}int i = 1, j = n;for(; i < j; ) {int a = lrmid(i, j);int tmp = lower_bound(xx + i, xx + j + 1, a) - xx;//cout << i << ' ' << j << ' ' << arr[i].id << ' ' << arr[j].id << ' ' << a << ' ' << tmp << '\n';if((tmp - i) >= j - tmp + 1) {j--;}else {i++;}}cout << arr[i].id << '\n';return 0;
}

B chaos

定数:提高,普及+,无,无,总计提高。

死因:现象看到了,本质没看到

如下:

1 2 3 4 5 [k = n - 1]
1 5 4 3 2 [k += 3]
1 3 4 5 2 [k += 2]

如此以往......
有一些操作不会进行。一样是正确的。

\(O(N) - O(N)\)

code
#include <bits/stdc++.h>
#define int long long
using namespace std;int n, k, pos[100010], arr[100010];signed main() {freopen("chaos.in", "r", stdin);freopen("chaos.out", "w", stdout);cin >> n >> k;k -= n - 1;pos[1] = 1;for(int i = 2, l = 2, r = n, rv = 0; i <= n; i++) {if(k >= n - i) {k -= n - i;rv ^= 1;}if(rv) {pos[i] = r;r--;}else {pos[i] = l;l++;}}for(int i = 1; i <= n; i++) {arr[pos[i]] = i;}for(int i = 1; i <= n; i++) {cout << arr[i] << ' ';}cout << '\n';return 0;
}

C defend

定数:提高,普及+,普及+,无,总计提高。

死因:没有想到优化

定义 \(dp_{x, lst}\) 为最后一个为 \(x\),上一个为 \(lst\) 时至多能搞到几个人。

发现很难转移,于是引入一个辅助数组 \(dash\)

\(dash_{x, k}\) 表示当前为 \(x\),当前与上一个的 \(\operatorname{and}\) 的第 \(k\) 为固定为 \(1\) 时至多能搞到几个人。

然后就可以用 \(dash\) 优化 \(dp\) 了。

点击查看代码
#include <bits/stdc++.h>
using namespace std;int n, arr[2020], ans, dp[2020][2020], cnt[2020][110]; // dash is counted from the third number... or not?int main() {freopen("defend.in", "r", stdin);freopen("defend.out", "w", stdout);cin >> n;for(int i = 1; i <= n; i++) {cin >> arr[i];}arr[0] = arr[n + 1] = INT_MAX;//cout << DFS(0, 0) - 2 << '\n';for(int i = 1; i <= n; i++) {dp[i][0] = 1;for(int j = 31; j >= 0; j--) {cnt[i][j] = 1;}}for(int i = 1; i <= n; i++) {for(int j = 0; j < i; j++) {if(!j) {ans = max(ans, dp[i][j]);for(int k = 31; k >= 0; k--) {if((arr[j] >> k) & 1) {cnt[i][k] = max(cnt[i][k], dp[i][j]); // Update dash}}continue;}int x = (arr[i] & arr[j]);if(x) {dp[i][j] = 1;for(int k = 31; k >= 0; k--) {if((x >> k) & 1) {dp[i][j] = max(dp[i][j], cnt[j][k] + 1); // If there can be a dash}}for(int k = 31; k >= 0; k--) {if((arr[j] >> k) & 1) {cnt[i][k] = max(cnt[i][k], dp[i][j]); // Update dash}}ans = max(ans, dp[i][j]);}//cout << dp[i][j] << ' ';}//cout << '\n';}cout << max(min(n, 2), ans) << '\n';return 0;
}

D standin

定数:提高-,普及+,提高,无,总计提高-。

死因:没有输出 -1

一开始我想枚举宽带,后来发现不用,具体见下图:

T4.bmp

可以看到,直接按照宽带大小,从小到大转移即可。

\(O(N2^M) - O(2^M)\)

点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;struct node {int x, k, mask;
}arr[110];int dp[1 << 20], n, m, b, c, t, ans = LLONG_MAX;signed main() {freopen("standin.in", "r", stdin);freopen("standin.out", "w", stdout);cin >> n >> m >> b;for(int i = 1; i <= n; i++) {for(cin >> arr[i].x >> arr[i].k >> c; c--; ) {cin >> t;arr[i].mask |= (1 << (t - 1));}}sort(arr + 1, arr + n + 1, [](node a, node b) {return a.k < b.k;});memset(dp, 0x3f, sizeof(dp));dp[0] = 0;for(int i = 1; i <= n; i++) {for(int j = (1 << m) - 1; j >= 0; j--) {dp[j | arr[i].mask] = min(dp[j | arr[i].mask], dp[j] + arr[i].x);}if(dp[(1 << m) - 1] != 0x3f3f3f3f3f3f3f3f) {ans = min(ans, dp[(1 << m) - 1] + arr[i].k * b);}}cout << (ans == LLONG_MAX? -1 : ans) << '\n';return 0;
}

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

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

相关文章

ubuntu上部署vnc

环境:OS:18.04 说明: 安装盘没有vnc4server安装包,使用安装盘制作本地源找不到vnc的安装包,需要联网才行,下面是联网下的操作.1.安装vnc4serverroot@11g:/etc/apt#su - rootroot@11g:/etc/apt#apt updateroot@11g:/etc/apt#apt -y install vnc4server查看是否安装成功root@11g:…

centos7安装后yum 错误

前言 安装没有图形界面的centos7后,发现yum无法使用,一直错误,原因是因为yum需要更换源过程 先备份,yum源目录为 cd /etc/yum.repos.d/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里云的yum源wget -O /etc/yum.repos.d/CentOS-Base…

面试官:你了解git cherry-pick吗?

复盘一次不规范开发引发的线上问题事情要从一次不规范的代码开发开始说起 背景故事时间2024年某个风平浪静的周五晚上地点中国,北京,西二旗,某互联网大厂会议室人物小杰,小A,小B,老K对话老K:昨天提交的代码被测试打回来了!为什么小B没开发完的内容也一起提交上去了? 小…

Swin Transformer:最佳论文,准确率和性能双佳的视觉Transformer | ICCV 2021

论文提出了经典的Vision Transormer模型Swin Transformer,能够构建层级特征提高任务准确率,而且其计算复杂度经过各种加速设计,能够与输入图片大小成线性关系。从实验结果来看,Swin Transormer在各视觉任务上都有很不错的准确率,而且性能也很高来源:晓飞的算法工程笔记 公…

ros -slam - microros- PID控制器实现

上一节我们通过编码器完成了对机器人单个轮子的速度测量,完成了电机速度闭环控制的重要一步-反馈。 有了反馈,接着我们需要设计一个控制器来帮助我们实现这个需求,这个控制器的输入是当前的速度和目标速度,输出是应该给到电机的PWM占空比。 一、PID控制器介绍PID控制器是一…

vmdk to vhdx 虚拟磁盘格式转换qemu-img

qemu-img是创建、转换、修改磁盘映像的工具,我们可以用它非常方便的转换虚拟磁盘格式,比如在vmdk、vhdx、qcow2、vdi之间相互转换,它在流行的Linux、macOS、Windows平台上都发布有对应的版本。 本文介绍的是Windows版本,它支持下图中所示的格式。转换格式需要使用它的conve…

NAML论文阅读笔记

Neural News Recommendation with Attentive Multi-View Learning论文阅读笔记 这篇也是比较老但是比较经典的文章,来读一下 Abstract ​ 现有的新闻推荐方法通常基于单一的新闻信息(如标题)来学习这些表征,这可能是不够的。在本文中,我们提出了一种神经新闻推荐方法,它…

ros2 - slam - 使用编码器测量轮子最大速度

新建example26_max_speed_measurement 添加依赖[env:featheresp32] ; 这是一个环境配置标签,指定了代码将运行的硬件平台和框架 platform = espressif32 ; 指定了使用的平台为Espressif 32 board = featheresp32 ; 指定使用的硬件板为Feather ESP32 framework = arduino ;…

入门Salesforce:必须掌握的20+基础专业术语!

Salesforce的发展令人印象深刻。在过去的20年中,Salesforce创建了一个由管理员、开发人员、顾问和用户组成的生态系统,不断颠覆创新CRM,促进平等和多样性。 作为初学者,探索Salesforce领域就像学习一门新语言。Salesforce中有着大量术语,从潜在客户、自定义对象到仪表板、…

ros2 - slam - 直流电机-编码器脉冲测量与校准

这一节我们编写代码来尝试下是否能够读取到电机上编码器的脉冲数,并通过实验测试出小车的输出轴转速和编码器脉冲的比值。 一、新建工程并导入开源库新建example25_encoder添加依赖[env:featheresp32] ; 这是一个环境配置标签,指定了代码将运行的硬件平台和框架 platform = …

在开发环境中使用 RawCap 和 Wireshark 排查本地回路地址

如何使用 RawCap 和 Wireshark 排查本地网络请求中的404错误 开发微服务应用时,正确配置网络请求的转发至关重要。本文将通过一个具体示例来展示如何使用 RawCap 和 Wireshark 来监控和分析本地回路请求,并排查导致 HTTP 404 错误的可能原因。 背景 在本例中,用户的浏览器请…

AI冲击创意岗位,OpenAI技术官语出惊人:一些岗位或许本不该存在哈哈,这些段子有意思,太幽默了,篇篇精彩

现在老美在人工智能领域对我们卡脖子了,但人工智能就像一把达摩克利斯之剑,正威胁着越来越多的创意工作岗位。 OpenAI 的首席技术官米拉・穆拉蒂 (Mira Murati) 上个月在达特茅斯大学 Thayer 工程学院的采访中表示:“一些创意岗位可能会消失。但也许它们本来就不应该存在 —…

性能测试:主流压测工具介绍

简介 性能压测工具是用于模拟大量用户访问、负载和压力条件的软件工具,以评估系统、应用程序或服务在高负载条件下的性能表现和稳定性。 这些工具通常用于软件开发、测试、部署前的准备以及生产环境中的性能监测和优化。性能压测工具的主要功能包括模拟用户行为、生成大量的请…

springboot实现异步调用demo

异步操作的简单实现springboot实现异步调用 异步调用特点 异步调用在开发程序中被广泛应用,在异步任务中,主线程不需要阻塞等待异步任务的完成,而是可以继续处理其他请求。 异步调用的特点如下:非阻塞:主线程在调用异步方法后不会等待其完成,而是立即返回。 后台处理:耗…

智慧工地AI行为监控系统

智慧工地AI行为监控系统主要体现在在工地原有的监控系统上面利用智慧工地AI行为监控系统,对分布在工地各处的监控画面传回的视频流进行实时检测。AI行为监控系统可以保障工地施工人员安全,确保工人施工过程及行为符合工地要求规范。这样既保障了工地人员的安全,也同时保证施…

视频监控智能分析技术

视频监控智能分析技术又叫智能视频分析技术,该技术诞生于机器视觉及边缘计算。视频监控智能分析技术是当下在人们生活中应用范围很广的技术之一。智能视频分析技术能够现场监控传回的视频流中抓取图片及人体状态动作信息,建立图片与规则建立映射关系。SuiJi视频监控智能分析技…

TypeScript中,如何利用数组生成一个联合类型

本文由 ChatMoney团队出品 在开发中我们常常会遇到这样一个问题,代码如下: const arr = ["a","b","c","d","e","f","g","h","i","j","k","l",&qu…

图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比

Kolmogorov Arnold Networks (KAN)最近作为MLP的替代而流行起来,KANs使用Kolmogorov-Arnold表示定理的属性,该定理允许神经网络的激活函数在边缘上执行,这使得激活函数“可学习”并改进它们。 目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有…

修改yum安装的php的启动用户

在使用yum安装php时,默认情况下,安装完成后php的启动用户是apache 1、编辑php-fpm的配置文件。在大多数Linux系统中,php-fpm的配置文件路径为/etc/php-fpm.d/www.conf。 2、找到配置文件中的`user`和`group`项。默认情况下,`user`的值是apache,`group`的值是apache,即php…