2025牛客寒假算法基础集训营6

A.复制鸡

思路:比较简单,略。

void solve()
{int n, m, k;cin >> n;int last = -1, ans = 0;for (int i = 0; i<n; i++){int x;cin >> x;if (x != last){ans++;}last = x;}cout << ans << endl;
}

B.好伙计猜拳

思路:这道题和最长子序列相似,在符合时加1,而这里是加惩罚值,并且又有交换的条件,所以开二维数组来进行动态转移。

void solve()
{int n, c1, c2;cin >> n >> c1 >> c2;vector<int> a(n+1), b(n+1);for (int i = 1; i<=n; i++){cin >> a[i] >> b[i];}vector<vector<int>> dp(n+1, vector<int>(2, INF));dp[0][0] = 0;int ans = INF;for (int i = 1; i<=n; i++){for (int j = 0; j<i; j++){if (a[j] <= a[i] && b[j] <= b[i]) // (aj, bj) -> (ai, bi)dp[i][0] = min(dp[i][0], dp[j][0]+c1*(i-j-1));if (a[j] <= b[i] && b[j] <= a[i]) // (bj, aj) -> (ai, bi)dp[i][0] = min(dp[i][0], dp[j][1]+c1*(i-j-1));}for (int j = 0; j<i; j++){    if (a[j] <= b[i] && b[j] <= a[i]) // (aj, bj) -> (bi, ai)dp[i][1] = min(dp[i][1], dp[j][0]+c1*(i-j-1));if (b[j] <= b[i] && a[j] <= a[i]) // (bj, aj) -> (bi, ai)dp[i][1] = min(dp[i][1], dp[j][1]+c1*(i-j-1));}dp[i][1] += c2;ans = min({ans, dp[i][0]+c1*(n-i), dp[i][1]+c1*(n-i)});}cout << ans << endl;
}

C.数列之和

思路:这道题可以打表观察出来规律,之前以为会是加2和加4的规律,发现并没有什么规律,再仔细观察,查看缺失值是哪些,发现是2^p (p!=1),所以就简单了,二分一下就能做出来,并注意二分的左右取值,1e18大概是2^{60},以为k的范围到1e18,其中并不可能缺失一半,所以假设k的范围为2e18,所以来确定取值,如果取值太大后对2取指数会超范围。

int qpow(int a, int b) {int res = 1;while (b) {if (b & 1) res *= a) ; a *= a ;b >>= 1;}return res;
}void solve()
{int n, m, k;cin >> n;if (n == 1){cout << 2 << endl;return ;}auto check = [&](int x)->bool{int p = qpow(2, x);return p/2-(x-1) >= n;};int l = 0, r = 125;while (l+1 < r){int mid = (l+r) >> 1;if (check(mid)) r = mid;else l = mid;}cout << 2*(r+n-2) << endl;
}

F.薪得体会

void solve()
{int n, m, k;cin >> n;vector<node> s(n+1);for (int i = 1; i<=n; i++){cin >> s[i].a >> s[i].b;s[i].sum = s[i].a + s[i].b;}int ans = 0;sort(s.begin()+1, s.end(), [&](node x, node y){return x.sum < y.sum;});vector<int> mx(n+1);for (int i = 1; i<=n; i++) mx[i] = max(mx[i-1], s[i].a+s[i].b);for (int i = 1; i<=n; i++){if (ans >= s[i].a) ans = max(ans, s[i].sum);else ans = max(ans, s[i-1].sum);ans = max(ans, s[i].a);}cout << ans << endl;
}

H.小鸡的排列构造

void solve()
{int n, m;cin >> n >> m;int l, r, c;for (int i = 0; i<m; i++){cin >> l >> r >> c;}if ((l-r+1) % 2 == 0){for (int i = n; i>=1; i--){cout << i << " \n"[i==1];}return ;}else{vector<int> a(n+1);iota(a.begin()+1, a.end(), 1);sort(a.begin()+1, a.end(), greater<int>());for (int i=n; i>=2; i-=2){swap(a[i], a[i-1]);}for (int i = 1; i<=n; i++){cout << a[i] << " \n"[i==n];}}
}

I.小鸡的排列构造的checker

struct query{int l, r, c;
};
class Fenwick{
public:vector <int> tree;int n;Fenwick (){}Fenwick (int x){init(x);}void init(int x){n = x;tree.resize(n + 1);}int lowbit(int x){return x & (-x);}void add(int x, int k){for(; x <= n; x += lowbit(x))tree[x] += k;}int qsum(int x){int ans = 0;for(; x; x -= lowbit(x))ans += tree[x];return ans;}void clean(){for(int i = 1; i <= n; i ++) tree[i] = 0;}
};
void solve()
{int n, m, k;cin >> n >> m;Fenwick fen(n);vector<int> pos(n+1), val(n+1);for (int i = 1; i <= n; i++) {cin >> val[i];pos[val[i]] = i;}vector<query> que(m+1);vector<vector<int>> q(n+1);for (int i = 0; i<m; i++){cin >> que[i].l >> que[i].r >> que[i].c;q[val[que[i].c]].push_back(i);}vector<int> ans(m);for (int i = 1; i<=n; i++){for (int j: q[i]) ans[j] = fen.qsum(que[j].r)-fen.qsum(que[j].l-1)+que[j].l;fen.add(pos[i], 1);}for (int i=0; i<m; i++){cout << ans[i] << "\n";}
}

J.铁刀磨成针

void solve()
{int n, x, y;cin >>n >> x >> y;auto dc = [&](int s, int xs)->int{int res = (s+(s-xs+1))*xs/2;return res;};int ans = 0;for (int i = 1; i<=min(n, y); i++){int now = x+i;int sum = now*(min(n, y)-i);sum += dc(now, min(now, n-min(n, y)+1));ans = max(ans, sum);}cout << ans << endl;
}

K.鸡翻题

void solve()
{int n, x, y;cin >> x >> y;if (y % 2 == 0){cout << "NO" << endl;return ;}if (x % 2 == 0){if (y % 4 == 1){cout << "YES" << endl;return ;}else {cout << "NO" << endl;return ;}}else {if (y % 4 == 3){cout << "YES" << endl;return ;}else {cout << "NO" << endl;return ;}}
}

 L.变鸡器

void solve()
{int n, m, k;cin >> n;string s, st = "CHICKEN";cin >> s;map<char, int> mp;mp['C'] = -2, mp['H'] = -1, mp['I'] = -1, mp['K']=-1, mp['E']=-1, mp['N'] = -1;int num = 0;for (int i = 0; i<n; i++){if (s[i] == st[num]) num++;mp[s[i]]++;}if (num != 7){cout << "NO" << endl;return ;}if ((n-num)%2){cout << "NO" << endl;return ;}vector<int> sb;for (auto [x, nn] : mp){sb.push_back(nn);}int max_num = *max_element(sb.begin(), sb.end());int sum = accumulate(sb.begin(), sb.end(), 0ll);if (max_num <= sum/2){cout << "YES" << endl;}else cout << "NO" << endl;
}

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

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

相关文章

记录排查服务器CPU负载过高

1.top 命令查看cpu占比过高的进程id 这里是 6 2. 查看进程中占用CPU过高的线程 id 这里是9 top -H -p 6 ps -mp 6 -o THREAD,tid,time 使用jstack 工具 产看进程的日志 需要线程id转换成16进制 jstack 6 | grep “0x9” 4.jstack 6 可以看进程的详细日志 查看日志发现是 垃圾回…

vscode离线配置远程服务器

目录 一、前提 二、方法 2.1 查看vscode的commit_id 2.2 下载linux服务器安装包 2.3 安装包上传到远程服务器&#xff0c;并进行文件解压缩 三、常见错误 Failed to set up socket for dynamic port forward to remote port&#xff08;vscode报错解决方法&#xff09;-C…

Spark(5)host配置

&#xff08;一.)host配置的作用&#xff1a; hosts 文件是一个本地的文本文件&#xff0c;它的作用是将主机名映射到对应的 IP 地址&#xff0c;在 DNS&#xff08;域名系统&#xff09;解析之前&#xff0c;系统会先查询 hosts 文件来确定目标主机的 IP 地址。 &#xff08;二…

CInternetToolbar::_CommonHandleFileSysChange函数分析之CReBar::_IDToIndex函数的作用

第一部分&#xff1a; // IMPORTANT: dont change the value of anything between CBIDX_FIRST and CBIDX_LAST. // CInternetToolbar::_LoadUpgradeSettings assumes these values havent changed from // version to version. #define CBIDX_MENU 1 …

ZYNQ-PL学习实践(五)IP核之FIFO

ZYNQ-PL学习实践&#xff08;四&#xff09;IP核之FIFO&#xff09; 1 概述2 程序2.1 FIFO IP核2.2 写FIFO模块2.3 读FIFO模块2.4 顶层例化模块 3 仿真总结 1 概述 FIFO在fpga应用过程相当于一个先进先出的缓冲器&#xff0c;跨时钟域传输信号传递&#xff0c;采用顺序写入数据…

AI优化SEO关键词精准定位

内容概要 数字营销领域正经历由人工智能驱动的范式革新&#xff0c;尤其在SEO关键词优化层面呈现出颠覆性变革。基于机器学习的语义分析引擎能够对海量搜索数据进行意图解码&#xff0c;通过自然语言处理技术剥离出用户搜索行为背后的真实需求。不同于传统依赖静态词库的优化方…

PGlite:浏览器中运行的PostgreSQL

PGlite 是一款基于 WebAssembly&#xff08;WASM&#xff09;构建的轻量级 PostgreSQL 数据库引擎&#xff0c;旨在简化开发者在浏览器、Node.js、Bun 或 Deno 环境中运行 PostgreSQL。PGlite 无需复杂的安装或配置&#xff0c;特别适合开发测试、本地化应用及快速原型设计。 一…

【Hudi-SQL DDL创建表语法】

CREATE TABLE 命令功能 CREATE TABLE命令通过指定带有表属性的字段列表来创建Hudi Table。 命令格式 CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name[ (columnTypeList)]USING hudi[ COMMENT table_comment ][ LOCATION location_path ][ OPTIONS (options_lis…

系统架构评估方法-ATAM方法

架构权衡分析方法(Architecture Tradeoff Analysis Method,ATAM) 是在SAAM的基础上 发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性 进行评价和折中。 (1)特定目标。 ATAM的目标是在考虑多个相互影响的质…

DeepSeek开源Day4:DualPipeEPLB技术详解

2 月 24 日&#xff0c;DeepSeek 启动 “开源周”&#xff0c;第四个开源的代码库为 DualPipe 与 EPLB&#xff08;一下发布了两个&#xff09;。DualPipe 与 EPLB 依然使用了大量与 Hopper 架构绑定的技术。 DualPipe 是由 DeepSeek-AI 团队开发的一种双向流水线并行通信算法&…

推荐算法和推荐系统入门第一趴

以下是推荐系统技术总结的架构梳理和建议表达思路&#xff1a; 从原理到生产环境&#xff1a;推荐系统核心技术与实战代码解析 一、推荐算法的演进图谱 传统算法三剑客 ![推荐系统算法分类示意图] &#xff08;使用Mermaid绘制算法分类关系图&#xff0c;清晰展示技术演进&am…

Cursor+Claude3.7实现从原型到app开发

最近在X上看到了一些人在用Claude 3.7 Sonnet生成 app原型图的尝试&#xff0c;受到启发&#xff0c;发现这么先生成不同界面的原型图再让Cursor基于原型图开发app会是很好的尝试。尤其是&#xff0c;你也可以不两步直接生成&#xff0c;而是在过程中更可视化地思考你要生产的原…

Flink深入浅出之01:应用场景、基本架构、部署模式

Flink 1️⃣ 一 、知识要点 &#x1f4d6; 1. Flink简介 Apache Flink — Stateful Computations over Data StreamsApache Flink 是一个分布式大数据处理引擎&#xff0c;可对有界数据流和无界数据流进行有状态的计算。Flink 能在所有常见集群环境中运行&#xff0c;并能以…

在线教育网站项目第二步 :学习roncoo-education,服务器为ubuntu22.04.05

一、说明 前端技术体系&#xff1a;Vue3 Nuxt3 Vite5 Vue-Router Element-Plus Pinia Axios 后端技术体系&#xff1a;Spring Cloud Alibaba2021 MySQL8 Nacos Seata Mybatis Druid redis 后端系统&#xff1a;roncoo-education&#xff08;核心框架&#xff1a;S…

JavaWeb6、Servlet

6.1Servlet简介 Servlet就是sun公司开发动态web的一门技术 sun公司在这些API中提供一个接口叫做Servlet&#xff0c;如果想开发一个Servlet程序&#xff0c;只需要完成两个小步骤&#xff1a; 编写一个类&#xff0c;实现Servlet接口 把开发好的Java类部署到web服务器中 把…

DeepSeek未来发展趋势:开创智能时代的新风口

DeepSeek未来发展趋势&#xff1a;开创智能时代的新风口 随着人工智能&#xff08;AI&#xff09;、深度学习&#xff08;DL&#xff09;和大数据的飞速发展&#xff0c;众多创新型技术已经逐渐走向成熟&#xff0c;而DeepSeek作为这一领域的新兴力量&#xff0c;正逐步吸引越…

K8S学习之基础十四:k8s中Deployment控制器概述

Deployment控制器概述&#xff1a; Deployment控制器是k8s中最常用的资源对象&#xff0c;为Replicaset和Pod创建提供了一种声明式的定义方法&#xff0c;在Deployment对象中描述一个期望的状态&#xff0c;Deployment控制器就会按照一定的控制速率把实际状态改成期望状态&…

基于IMM算法的目标跟踪,四模型IMM|三维环境|4个模型分别是:CV、左转CT、右转CT、CA(基于EKF,订阅专栏后可获得完整源代码)

这段MATLAB代码实现了基于交互多模型(IMM)算法的目标跟踪,结合了四种运动模型(匀速直线、左转圆周、右转圆周和匀加速直线)。通过定义状态方程、生成带噪声的测量数据,以及执行IMM迭代,该代码有效地实现了多模型的状态估计和融合。最终,用户可以通过可视化结果观察目标…

豆包大模型 MarsCode AI 刷题专栏 001

001.找单独的数 难度&#xff1a;易 问题描述 在一个班级中&#xff0c;每位同学都拿到了一张卡片&#xff0c;上面有一个整数。有趣的是&#xff0c;除了一个数字之外&#xff0c;所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上…

树莓派学习(一)——3B+环境配置与多用户管理及编程实践

树莓派学习&#xff08;一&#xff09;——3B环境配置与多用户管理及编程实践 一、实验目的 掌握树莓派3B无显示器安装与配置方法。学习Linux系统下多用户账号的创建与管理。熟悉在树莓派上使用C语言和Python3编写简单程序的方法。 二、实验环境 硬件设备&#xff1a;树莓派…