Firefly Cup (1st Zrnstsr Cup)

news/2025/2/14 0:09:54/文章来源:https://www.cnblogs.com/udiandianis/p/18714175

F. Pull

题目大意

抽卡。每抽有a%的概率出货,c发不出货之后每发的出货的概率都会提高b%。求出货的抽数期望

解题思路

最坏的情况下就是一直抽到概率为100%,次数是(100 - a + b - 1) / b + c,之后从后往前开始递推,小于c发就是p/100,否则就加上对应的b%增幅即可(注意要和100%取大),当前次数的答案就是1加上失败的概率乘多抽一次的期望,最后的答案就是第一抽的时候的期望

代码实现

#include <bits/stdc++.h>int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int t;std::cin >> t;while (t--) {int a, b, c;std::cin >> a >> b >> c;int maxn = (100 - a + b - 1) / b + c;std::vector<double> dp(maxn + 1, 1.0);for (int i = maxn - 1; i >= 1; i--) {double p;if (i <= c) {p = a / 100.0;} else {p = std::min((a + (i - c) * b) / 100.0, 1.0);}dp[i] += (1.0 - p) * dp[i + 1];}std::cout << std::fixed << std::setprecision(6) << dp[1] << "\n";}
}

D. Greedy Counting

题目大意

设数组a的贪心子序列为“碰见一个大的就选”所得到的子序列,求a的所有子数组的贪心子序列长度之和。

解题思路

右侧第一个比x大的数字显然能让存在x的子序列长度再增加,于是先用单调栈预处理出x右侧第一个比x大的数字,再从右侧dp,记录用当前位置开始的子序列能贡献出多少最后求和即可

代码实现

#include <bits/stdc++.h>using i64 = long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int t;std::cin >> t;while (t--) {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; i++) {std::cin >> a[i];}std::vector<int> stk, next(n, n);for (int i = n - 1; i >= 0; i--) {while (!stk.empty() && a[stk.back()] <= a[i]) {stk.pop_back();}if (!stk.empty()) {next[i] = stk.back();}stk.push_back(i);}i64 ans = 0;std::vector<i64> dp(n);for (int i = n - 1; i >= 0; i--) {if (next[i] == n) {dp[i] = n - i;} else {dp[i] = (n - i) + dp[next[i]];}ans += dp[i];}std::cout << ans << "\n";}
}

E. Ever Forever

题目大意

维护一个字符串集合,每次加入或删除时都要输出有几对字符串满足一个字符串是另一个的后缀。

解题思路

字符串哈希存入所有字符的后缀,之后暴力模拟比较即可

代码实现

#include <bits/stdc++.h>using i64 = long long;
using u64 = unsigned long long;
const int MOD1 = 1e9 + 7, MOD2 = 1e9 + 9;class StringHash {public:int P1, P2;std::vector<u64> h1, h2, p1, p2;StringHash() {std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());P1 = std::uniform_int_distribution<int>(128, 10000)(rng);P2 = std::uniform_int_distribution<int>(128, 10000)(rng);}template <typename Sequence>void build(const Sequence& seq) {int n = seq.size();h1.resize(n + 1, 0);h2.resize(n + 1, 0);p1.resize(n + 1, 1);p2.resize(n + 1, 1);for (int i = 1; i <= n; i++) {h1[i] = (h1[i - 1] * P1 + seq[i - 1]) % MOD1;h2[i] = (h2[i - 1] * P2 + seq[i - 1]) % MOD2;p1[i] = (p1[i - 1] * P1) % MOD1;p2[i] = (p2[i - 1] * P2) % MOD2;}}std::pair<u64, u64> get(int l, int r) {u64 hash1 = (h1[r] - h1[l - 1] * p1[r - l + 1] % MOD1 + MOD1) % MOD1;u64 hash2 = (h2[r] - h2[l - 1] * p2[r - l + 1] % MOD2 + MOD2) % MOD2;return {hash1, hash2};}
};int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);std::set<std::pair<u64, u64>> st;std::map<std::pair<u64, u64>, int> mp;int n;std::cin >> n;StringHash sh;i64 ans = 0;while (n--) {std::string op, s;std::cin >> op >> s;sh.build(s);std::vector<std::pair<u64, u64>> suff;int len = s.size();for (int i = 0; i < len; i++) {suff.push_back(sh.get(i + 1, len));}std::pair<u64, u64> hash = suff[0];if (op == "+") {int A = mp[hash], B = 0;for (auto x : suff) {mp[x]++;B += st.count(x);}ans += A + B;st.insert(hash);} else {int A = mp[hash], B = 0;for (auto x : suff) {mp[x]--;B += st.count(x);}st.erase(hash);ans -= (A + B - 2);}std::cout << ans << " \n"[n == 0];}
}

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

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

相关文章

Java笔记-15、Web后端基础 分层解耦

三层架构 满足单一职责原则。Controller控制层:接收前端发送的请求,对请求进行处理并响应数据。 Service业务逻辑层:处理具体的业务逻辑。 Dao数据访问层(持久层):负责数据访问操作,包括数据的增删改查。浏览器发过来请求,首先访问Controller层,Controller调用Service…

框架ThinkPHP

引子:本章主要介绍ThinkPHP(PHP开发框架)的简单使用和一些安全问题。免责声明:本文章仅用于交流学习,因文章内容而产生的任何违法&未授权行为,与文章作者无关!!! 附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正! 1.5 🐘框架&a…

我的“DeepSeek服务不忙了”,腾讯云671B满血模型无限量调用攻略!

DeepSeek R1虽然免费,但是基本到了无法使用的状态。一两轮对话后,就开始服务忙了。好在这是一个开源模型,大量的第三方平台开始上线了。上一篇我们就讲过硅基流动。最近听闻腾讯云也上线了 DeepSeek-V3、DeepSeek-R1 满血版模型。而且可以免费不限量使用。具体规则如下: 添…

ACM寒假集训第五次专题任务

ACM寒假集训第五次专题任务 一、自然数的拆分问题 题目:解题思路: 使用了深度优先搜索,通过he判断何时输出,c标记长度控制输出,qs标记起始位置从小到大拆分。 AC代码: #include<iostream> using namespace std; int n,a[10],ans; void dfs(int he,int c,int qs) {i…

DeepSeekR1+Cherry Studio使用白嫖API和开源软件使用满血版模型!

使用Ollama本地运行,使用Ollama+ChatWise可视化运行,使用Ollama+ChatWise在Macbook Air M1 上运行。今天再来说一个方案。这个方案不是完全离线,但是模型能力会比离线的强。可以完全免费尝试,有几百到几千万的Token可以用。可以缓解DeepSeek R1官方服务繁忙无法使用的问题。…

DeepSeekR1 苹果macbook M1本地可视化运行!

过年了,就带了一台 macbook air 8g,DeepSeekR1的消息还是铺天盖地的来,我就想着在这台电脑上也装一个吧。经过简单的配置,最终也运行起来了,速度还可以。我这是首款M系列笔记本,也是现在最低配的 M 系列笔记本。这也就意味着所有M系列的苹果电脑都可以轻松运行DeepSeekR1…

11.A星寻路算法

14.A星寻路算法 题目 迷宫寻路需求,在一个迷宫游戏中,有一些怪物攻击主角,现在希望小怪物,能自动绕过迷宫中的障碍物,寻找到主角的所在。 思路 A星寻路算法(A*search algorithm),是一种用于寻找有效路径的算法。 简单的场景举例(简化问题),看一看A星寻路算法的工作过程。…

人間になりたい。

さよならはエモーション 僕は行く ずっと涙こらえ こらえ 忘れてたエモーション 僕は行く ずっと深い霧の 霧の向こうへ『……组建过,那就好。』 属于我的 Crychic,就在那个寒假啊。 或许更早些,始于一次英语单元测同时爆炸了的三个人,经过一次精彩地赶在元旦零点钟声前分解…

【THM】Security Principles(安全原则)-学习

了解安全三元组以及常见的安全模型和原则。本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/securityprinciples 本文相关内容:了解安全三元组以及常见的安全模型和原则。介绍 网络安全已成为一个流行词;每家公司都声称其网络产品或网络服务是安全的,但事实上…

小米 R3G 路由器刷机教程(Pandavan)

小米 R3G 路由器以其高性价比和稳定的性能备受用户青睐。然而,原厂固件的功能相对有限,难以满足高级用户的个性化需求。刷机不仅可以解锁路由器的潜能,还能通过第三方固件实现更丰富的功能,如 DNS 解析、KMS 服务器、USB 管理等。本文旨在为小米 R3G 路由器用户提供详细的刷…

windows知道服务器的内网IP地址如何查看服务器的计算机名称

windows知道服务器的内网IP地址如何查看服务器的计算机名称windows知道服务器的内网IP地址如何查看服务器的计算机名称 nbtstat百度百科 https://baike.baidu.com/item/nbtstat/7578115 windows在局域网内查看ip地址对应的计算机名或者根据计算机名查ip https://blog.csdn.net/…