梦熊知更鸟赛水题题解合集 (两个人的演唱会 使一颗心免于哀伤 空气蛹)

news/2025/10/23 22:16:47/文章来源:https://www.cnblogs.com/TTC84/p/19161769

前话:

为什么现在才发?

答:因为没打比赛。

为什么要发:

答:因为我是小鸟厨子

知更鸟小姐可爱捏~

两个人的演唱会:

一道简单的贪心,它有策略吗?(雾)

如果只是一个数列,我们怎么办。
让一个数为起点,一直把后面的合法的数加到这个段内,一直到不能加,重复操作即可,这是一个很直接的思路,那么我们证明它的正确性。

假设我们将一段内某一子序列全部划出,并划为单独一段或者与后一段相连,显然,让它单独成段更劣,所以考虑让它和后一段相连是否能让后一段的贡献更大(就是是否可以使后一段与后面合并,减小段数),显然,若分出一段包含一个大于后一段最大值或者小于后一段最小值的数,一定不会让后一段更优,反而可能将后一段部分子序列变得不合法。如果包含的数都在后一段\([min,max]\)之间,对段内无影响(因为影响它的是极差,即最大值和最小值)。上述分类包含全部情况,故我们的贪心策略成立。

所以问题简化版已经搞定,对于推广到环上,如果你看过环形DP等类似问题,那么一定可以迅速想到解法。
复制原序列,并接在后面,然后枚举切开环的点,每一段长度等于原序列的区间都可能贡献答案,求最小值即可。

代码:

#include<bits/stdc++.h>
#define I_Love_Robin 0
using namespace std;
int const N=6e7+10;
int cnt,l,r;
int a[N];
int n,m;
int pos[N];
int main(){ios::sync_with_stdio(false);cin.tie(0);// freopen("text.in","r",stdin);// freopen("text.out","w",stdout);int T;cin>>T;while(T--){cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) a[i+n]=a[i];cnt=l=r=0;while(r<=2*n){int mx,mn;mx=mn=a[l];cnt++;while(mx-mn<=m && r<=2*n){pos[r]=cnt;r++;mx=max(mx,a[r]);mn=min(mn,a[r]);}l=r;}int ans=INT_MAX;for(int i=1;i<=n;i++){ans=min(ans,pos[i+n-1]-pos[i]+1);}// for(int i=1;i<=2*n;i++) cerr<<pos[i]<<" ";// cerr<<endl;cout<<ans<<"\n";}return I_Love_Robin;
}

空气蛹:

相比上题,这题思考量是有的,是一道贪心好题,为啥全是贪心

先看部分分,为什么有30%部分分是保证有空杯子?不知道,手模一下。
哦,原来直接输出总和就行。这个不用严谨证明了把,直接把空杯子当做中转直接动就行,没想到的一看就是微信小游戏玩少了

那我们就考虑对于所有问题直接构造空杯子,显然让最少和次少构造最优,输出总和减去溢出即可。

不要忘了已经有序的情况,不然会挂惨了的

代码:

#include<bits/stdc++.h>
#define int long long
#define I_Love_Robin 0
const int N=1e5+10;
using namespace std;
int n,m;
int a[N];
int ans;
signed main()
{ios::sync_with_stdio(false);cin.tie(0);int T;cin>>T;while(T--){ans=0;cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i],ans+=a[i];bool flag=true;for(int i=1;i<n;i++) if(a[i]>a[i+1]) flag=false;if(flag){cout<<ans<<"\n";continue;}sort(a+1,a+n+1);int lose=max((a[1]+a[2])-m,0ll);cout<<ans-lose<<"\n";}return I_Love_Robin;
}

使一颗心免于哀伤:

Birds are born with no shackles
Then what fetters my fate?
Blown away, the white petals
Leave me trapped in the cage.
……
Let my heart bravely spread the wings
Soaring past the night
To trace the bright moonlight~~~

豪庭,太豪庭了awa

好了好了,该切水题了,不要和流萤约会了

一道挺好的博弈论题。

我们和自己玩两把,再手玩样例看看,发现第一个样例十分有启发性,当只剩下一种颜色时,不需要操作就结束了,再玩第二个样例,发现小鸟一步就赢了,即直接把一段黑棋全部拿走。由此我们发现,排除不操作就结束的欺负鸟的情况,在棋盘不出现黑白交错摆放时,小鸟只需要一步拿走所有黑棋即可。

根据这个线索,我们继续人格分裂一下,发现必胜态是小鸟有一段连续黑棋,而周日的白棋没有连续段(即最长段只有一颗棋子),这时候小鸟和周日交替单颗棋子,最后一定会让周日就剩一串连续的白棋时小鸟直接取胜。那么反过来就是必败态。

双方都是最优策略,所以都要创造对于自己的必胜态,发现没有必胜态时,拿走一段连续的全部棋子显然不优,因为这给对手创造了连续段,拿走超过一颗也不优,因为你拿的越多,你就越快出现没有连续段的情况,所以双方最优策略就确定了,就是每次拿走一颗棋子,直到到达某一方必胜态。

答案显而易见,谁棋子多谁能耗死对方,数棋子即可。

注意前两个特判

代码:

#include<bits/stdc++.h>
#define I_Love_Robin 0
using namespace std;
int const N=1e5+10;
string a;
int n;
int main(){int T;cin>>T;while(T--){cin>>n;cin>>a;bool flag=true;for(int i=0;i<n-1;i++)if(a[i]!=a[i+1]){flag=false;break;}if(flag){if(a[1]=='1') cout<<"Sunday"<<"\n";else cout<<"Robin"<<"\n";continue;}int cnt=0;for(int i=0;i<n-1;i++) if(a[i]!=a[i+1]) cnt++;if(cnt<=2) {cout<<"Robin"<<"\n";continue;}int s=0,r=0,i=0;for(int i=0;i<n;i++){if(a[i]=='1') r++;else s++;}if(r>s) cout<<"Robin"<<"\n";if(r<=s) cout<<"Sunday"<<"\n";}return I_Love_Robin;
}

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

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

相关文章

CF2154D

给定一棵大小为 \(n\) 的树,需要构造不超过 \(3n\) 条指令(有以下两种,且不能有连续两次 \(2\) 操作),使得一个在 \(1\) 的棋子一定能走到 \(n\)。\(1\),表示棋子会移动到一个和它相邻的节点,没有则不移动。 \(…

Plya 定理学习笔记 | ABC428G 题解

Plya 定理学习笔记 | ABC428G 题解 用来对在若干置换下本质不同的方案数计数。(这里会有一些证明,但是先咕掉((首先是 Burnside 引理: 结论是,假设群 \(G\) 作用于集合 \(X\) 上。 令 \(O_x\) 表示 \(x\in X\) 的…

HTML中的a和img的用法

HTML中标签a的用法HTML的链接用a定义,在第一个尖括号后面用"href="指定,如下例: 《a href="https://www.runoob.com"》 去菜鸟教程 《/a》 (注:尖括号<>用《》代替) 效果:去菜鸟教程 …

并查集(DSU)

基础封装 通常意义上我们默认增加“路径压缩”优化,时间复杂度为:查询 O(1)\mathcal O (1) ,合并接近于 O(α(n))\mathcal O(\alpha(n)) (这里 α\alpha 代表的是反阿克曼函数,一般看作是一个极小的常数)。 stru…

告别繁琐排版!揭秘2025年公众号推文排版top1神器

作为一名深耕新媒体领域8年的老编辑,我亲历了从手动排版到智能编辑的完整进化过程。过去为了一篇推文,光是找素材、调格式就要耗费大半天时间。直到近期测试了多款AI编辑器,才发现原来推文创作可以如此简单高效。 今…

第十八天

今日核心任务是攻克数据结构中的二叉树,整个学习过程更像一场逻辑拆解与规律验证的实践,而非单纯的知识记忆。 上午从定义入手,明确二叉树“每个节点最多拥有两个子树”的核心规则,这一约束让它区别于普通树,也为…

[优先队列] P3611 [USACO17JAN] Cow Dance Show S 题解

神人题。 首先要二分一下\(k\)。然后呢?然后就不会了。 查看题解仔细思考后,发现模拟就行了。 开一个堆,把前 \(k\) 个牛放进去。 然后对于后面的牛,你每次把堆顶的牛拿出来,然后把后面的牛放进去。由于要等到堆顶…

搜维尔科技将携手Xsens|Haption|Tesollo|Manus亮相IROS 2025国际智能机器人与系统会议

展会预告 | IROS 2025 杭州见! IROS 2025将于10月21-23日在杭州国际博览中心举行。我司将携手Xsens新一代Link(动作捕捉系统)、Haption触觉力反馈遥操作系统、Manus数据手套与Tesollo灵巧手亮相展会,期待与各位产学…

leetcode1. 两数之和、15. 三数之和、18. 四数之和

leetcode1. 两数之和、15. 三数之和、18. 四数之和1. 两数之和 注意,这个要返回的是对应数字的下标。 2022/09的C++代码class Solution { public:vector<int> twoSum(vector<int>& nums, int target…

第十七天

今日核心任务是攻克数据结构中的二叉树,整个学习过程更像一场逻辑拆解与规律验证的实践,而非单纯的知识记忆。 从定义入手,明确二叉树“每个节点最多拥有两个子树”的核心规则,这一约束让它区别于普通树,也为后续…

vue3+elementPlus el-date-picker 自定义禁用状态hook 建立结束时间不能小于开始时间

vue3+elementPlus el-date-picker 自定义禁用状态hook 建立结束时间不能小于开始时间pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

66页实验题

import tensorflow as tf from tensorflow.keras.datasets import cifar10 1. 加载并预处理 CIFAR-10 数据集 (x_train, y_train), (x_test, y_test) = cifar10.load_data() 像素值归一化(0-255 → 0-1) x_train = x…

简单云计算算法--20251023

简单云计算算法--2025/10/23 No.1 LCR 158. 库存管理 II 仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id。 示例 1: 输入:st…

处理空输入踩的坑

处理一个外部传入的用户输入的时候,一开始只想着处理null,用"?.let{}"的模式处理。结果发现结果异常。 打断点发现传入值不是空,而是"" 由此发现kotlin处理空string的两个函数: isEmpty() Th…

【做题记录】贪心--提高组

A. Monotone Subsequence 有点 Ad-hoc。 第 \(i\) 次查询,直接询问当前未被删去的所有点。如果回答 \(\ge n+1\),那么直接输出;否则将回答的这些点标一个级别 \(i\)。最后一次询问之后还剩下的标为 \(n+1\)。根据鸽…

latex输入公式

输入不换行公式:点击查看代码 \begin{equation}\label{eq:2}u_{exact} = \sin(x) - \frac{1}{4} \sin(4x) + \frac{1}{8} \sin(8x) - \frac{1}{16} \sin(16x) + \frac{1}{24} \sin(24x) - \frac{1}{48} \sin(48x) + …

【为美好CTF献上祝福】 New Star 2025 逆向笔记

Re Week1 Strange Base 乍一看是个正常的 base64 加密点进 base64 函数一看,发现 base64 的表被换了。

XXL-JOB(5)

XXL-JOB(5) 表结构分析 xxl_job_lock:任务调度锁表; xxl_job_group:执行器信息表,维护任务执行器信息; xxl_job_info:调度扩展信息表:用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行…

蛋白表达原理与关键要素解析

一、蛋白表达的基本原理 蛋白表达(Protein Expression) 是指细胞根据遗传信息合成蛋白质的过程。在自然状态下,DNA 上的基因通过 转录(Transcription) 产生信使 RNA(mRNA),随后经过 翻译(Translation) 在核糖…