AcWing 4547. 伊格内修斯和公主IV

news/2025/2/2 15:05:44/文章来源:https://www.cnblogs.com/wh2011/p/18696840

做法一:直接模拟

空间复杂度:\(O(10^6)\)

// #define FILE_INPUT
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;#define rep(i, a, b) for (int i = a, END##i = b; i <= END##i; i++)
#define per(i, a, b) for (int i = a, END##i = b; i >= END##i; i--)void Init();
void Solve();signed main() {cin.sync_with_stdio(0);cin.tie(0), cout.tie(0);#ifdef FILE_INPUTfreopen("input.in", "r", stdin);#endifint T = 1;// cin >> T;while (T--) {Init();Solve();}return 0;
}using LL = long long;
using ULL = unsigned long long;const int Mod = 1e9 + 7;
const int Inf = 0x3f3f3f3f;
const LL InfLL = 0x3f3f3f3f3f3f3f3f;const int N = 1e6 + 10;
int n, b[N];void Init() {
}void Solve() {while (cin >> n) {memset(b, 0, sizeof(b));int ans, t = n + 1 >> 1;rep(i, 1, n) {int a; cin >> a;b[a]++;if (b[a] >= t) ans = a;}cout << ans << "\n";}
}

做法二:模拟(应该叫摩尔投票法?),动态规划

首先呢,最多的次数为 \(\frac{n+1}{2}\) 那么其他的数出现的次数为 \(\frac{n-1}{2}\),那么如果,我们把两个不同的数给消掉,剩下还有的数绝对就是答案了 \(\frac{n+1}{2}-\frac{n-1}{2}=1\)

(先看代码再看这个)那么怎么让空间复杂度为 \(O(1)\) 来计算这个东西呢?我们可以先设一个数 \(lst\) 表示现在用这个数来和其他数消掉,再用 \(cnt\) 表示,现在还剩下多少个 \(lst\) 这个数,如果 \(a=lst\) 那么 \(cnt+1\) 否则 \(cnt-1\),最后剩下的那个 \(lst\) 就是解了。

如果想了解摩尔投票法可以看看这个(虽然不是我写的)。

// #define FILE_INPUT
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;#define rep(i, a, b) for (int i = a, END##i = b; i <= END##i; i++)
#define per(i, a, b) for (int i = a, END##i = b; i >= END##i; i--)void Init();
void Solve();signed main() {cin.sync_with_stdio(0);cin.tie(0), cout.tie(0);#ifdef FILE_INPUTfreopen("input.in", "r", stdin);#endifint T = 1;// cin >> T;while (T--) {Init();Solve();}return 0;
}using LL = long long;
using ULL = unsigned long long;const int Mod = 1e9 + 7;
const int Inf = 0x3f3f3f3f;
const LL InfLL = 0x3f3f3f3f3f3f3f3f;const int N = 1e6 + 10;
int n;void Init() {
}void Solve() {while (cin >> n) {int cnt = 0, ans = 0, a, lst = 0;while (n--) {cin >> a;if (a == lst) cnt++;else {if (!cnt) lst = a, cnt = 1;else cnt--;}}cout << lst << "\n";}
}

你不会以为到这里就结束了吧,还有 dp 的方法呢(虽然代码一摸一样)😁

我们设 \(f_{i}\) 表示,对于前 \(i\) 个数,出现个数至少为 \(\lceil\frac{i+1}{2}\rceil\) 的数。设 \(g_{i}\) 表示,前 \(i\) 个数中,\(f_i\) 出现的个数减去其他的数。

\(g_{i-1}>0\) 时,也就是有解

\[\begin{aligned}f_{i}&=f_{i-1}\\g_{i}&=\left\{ \begin{array}{rcl}g_{i-1}+1,a_i=f_i\\g_{i-1}-1,a_i\not=f_i \end{array}\right. \end{aligned} \]

\(g_{i-1}=0\) 时,也就是没解,\(f_i=a_i,g_i=1\),从头开始。

代码同上。

动态规划参考

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

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

相关文章

【渗透测试】Vulnhub GROTESQUE 1.0.1

渗透环境 攻击机: IP: 192.168.10.18(Kali) 靶机: IP:192.168.10.9 靶机下载地址:https://www.vulnhub.com/entry/grotesque-101,658/ 涉及知识点:WordPress扫描(WPScan)、WrodPress反弹shell、Keypass文件解密进行渗透 一、 获取端口信息 nmap或者arp-scan都能…

DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)

大家好,我是汤师爷~ 最近,DeepSeek这款AI工具爆火国内外。 虽然许多人都开始尝试使用它,但有人吐槽说,没想象中那么牛。 其实问题不在工具,很多人的使用姿势就搞错了,用大炮打蚊子,白白浪费DeepSeek的强大功能。 接下来,我将为大家分享9个实用技巧,你会发现DeepSeek远…

ez_pz_hackover_2016(shellcode)

首先检查一下保护,发现没有开启NX保护,说明可以往栈上写shellcode 首先要确定距离ebp的偏移,还有shellcode的地址(将ret覆盖到shellcode的地址上)确定离ebp偏移的代码 from pwn import * io=process("./ez_pz_hackover_2016") context.log_level=debug gdb.atta…

Android Studio 2024 不需要三方插件,直接wifi 开发调试,真方便

在测试旧版本时,wifi插件折腾了几天,还是没折腾上,最后下载了最新Android Studio Ladybug Feature Drop | 2024.2.2版本,发现居然已经集成,且放到了最显眼的位置,wifi开发,一步到位了。手机中,进开发者模式,选中 无线调试 ,再点使用二维码配对设备然后扫码,即可,…

Maven高级 -2025/1/22

分模块开发 依赖管理 可选依赖 <dependency><groupId>com.itheima</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version><!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递-…

独立开发经验谈:如何借助 AI 辅助产品 UI 设计

我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户,在这个过程中,我也积累了不少如何开发运营一款独立产品的经验。我将在本文中介绍如何借助 AI 辅助产品…

Lazarus4Android 环境搭建

Lazarus4Android 开发环境搭建Lazarus4Android 开发环境搭建 一、下载相关文件最关键的就是这两个文件,其他的JDK、NDK、Java环境另说。 这里要注意,gradle版本必须小于7,不然无法使用。 二、IDE内部设置 安装完成laz4A之后可能会报错,无需理会,启动IDE即可。安装卸载软件…

14-断点调试单个用例

在pycharm的Terminal输入hytest,其实是输入了python -m hytest.run,意思就是执行了hytest包里面的run.py文件 然后再点击debug按钮的时候就可以进行调试了,相当于执行了cd H:\my\autotest后 python.exe -m hytest.run --test *0101

博图18安装过程记录

博图V18安装过程记录刚开通博客园,搬运一些之前的帖子过来。 博图18安装过程记录 下载 西门子中智赛官网给的链接,是正版软件。 安装 TIA Potral STEP7将ISO解压或装载。管理员身份运行。 选择典型安装,等待安装完成。 插曲1 无法更改安装路径 这是因为之前安装过博图15.1(或…

题解:P11617 递推

前言 第一次在 OI 中见到求数列极限的题,有点意思。 但是为什么会过这么多人啊。 思路分析 做一点尝试: \[\sum_{i=m} \sum_{j=0}^{m} r_ja_{i-j}=0 \]然后对于相同的 \(a_i\),合并同类项: \[\sum_{i=m}\sum_{j=0}^{m} r_ja_i + \sum_{i=0}^{m-1}\sum_{j=0}^{i} r_{m-j}a_i…

AI编程助手带来的洞察和启发——程序员职业的变革

前言 从chatgpt的横空出世到国内大模型的强势崛起, 从AI只会写诗作画到辅助编程, AI作为新质生产力的重要角色逐渐进入各行各业,为行业带来新的可能性。Cursor、通义灵码这类"AI程序员"的出现一方面给编码工作带来了便利,另一方面也对软件从业人员带来极大的冲击…

个人数据保全计划:部署joplin server笔记同步服务

前言 在这个数据爆炸的时代,个人数据的价值愈发凸显,成为我们生活与工作中无可替代的重要资产。上一篇文章里,我介绍了从印象笔记迁移至 Joplin 的过程,这是我寻求数据自主掌控的关键一步。在探索同步方案时,我尝试了 OneDrive,原以为它能提供稳定高效的同步服务,可实际…