Polynomial Round 2022 C. Ice and Fire (构造)

小 09 和他的朋友们正在玩游戏。共有 n 名玩家,玩家 i 的温度值是 i 。
环境类型表示为 0 或 1 。当两个棋手在一个特定的环境中对战时,如果环境的类型是 0 ,那么在这个环境中温度值较低的棋手总是获胜;如果环境的类型是 1 ,那么在这个环境中温度值较高的棋手总是获胜。 n−1 个环境的类型组成了一个长度为 n−1 的二进制字符串 s 。

如果有 x 个玩家参与游戏,那么总共会有 x−1 场战斗,而 x−1 个环境的类型将是 s 的前 x−1 个字符。当比赛中还剩下不止一名玩家时,可任意选择剩下的两名玩家进行对战。输掉比赛的玩家将被淘汰出局。战斗 i 的环境类型为 s i s_i si

对于从 2 到 n 的每个 x ,请回答以下问题:如果所有温度值不超过 x 的玩家都参加比赛,那么有多少玩家有机会获胜?

输入
每个测试包含多个测试用例。第一行包含一个整数 t ( 1 ≤ t ≤ 1 0 3 ) t ( 1≤t≤10^3 ) t(1t103) - 测试用例数。测试用例说明如下。
每个测试用例的第一行都包含一个整数 n ( 2 ≤ n ≤ 2 ⋅ 1 0 5 ) n ( 2≤n≤2⋅10^5 ) n(2n2105) - 玩家人数。
每个测试用例的第二行包含一个长度为 n − 1 n−1 n1 的二进制字符串 s 。
保证所有测试用例中 n n n 的总和不超过 3 ⋅ 1 0 5 3⋅10^5 3105

输出

对每个测试用例输出 n − 1 n−1 n1 个整数 —— 从 2 2 2 n n n 的每个 x x x 都输出有机会获胜的玩家人数。


很容易想到的是:如果串全为1,那么一定是n获胜,如果串全为0,那么一定是1获胜。

那么这时候推广到以1串作为后缀和以0串作为后缀。

如果现在串的后缀是长度为m的1串,现在我们一定只有 m + 1 m+1 m+1 个元素,那么在这 m + 1 m+1 m+1 个里面一定是最大的那个获胜,而有可能成为这个获胜者的人的数量就是 > m > m >m 的选手数量,不管前面怎么取,就算把所有的最大的数全部输掉,最坏的情况也会有 1 1 1 ~ m + 1 m+1 m+1 这些数,那么肯定一定还是 m + 1 m+1 m+1 这个数胜利。
并且在题目给出的条件:可以任意选择比赛人员,的情况下,我们一定可以让所有的m+1到n都被取到。

对于后缀为0的串的结果也是同理。


CODE:

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;char s[N];
int n;void solve(){scanf("%d%s",&n,s+2);int now = 1;for(int i = 2;i <= n;i++){if(s[i] == s[i-1])now++;    else now = 1;cout << i - now << " ";}puts("");
}int main(){int T;cin >> T;while(T--){solve();}return 0;
}

这道题提供了一种将总体规律转化为部分规律的做题方法(貌似昨天的题目也是这样构造的?)

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

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

相关文章

【Ubuntu系统hgfs共享文件夹不显示问题解决】

问题描述&#xff1a;为了实现本地物理机与虚拟机之间的文件传输&#xff0c;我们通常采用共享文件夹的方式。但是在Vmware虚拟机使用Ubuntu系统的过程中&#xff0c;由于某种特殊或意外原因&#xff0c;Ubuntu系统或发生/mnt/hgfs共享文件夹丢失不显示的问题。以下是本次问题发…

C语言易错提醒选择题精选

Ⅰ 易错题 1.设有double p;&#xff0c;为变量p声明一个引用名称rp,则定义语句为 double& rpp; 2.已知‘A’一‘Z’的ASCII码为65—90&#xff0c;当执行“char ch14*52&#xff1b;cout<<ch<<endl;”语句序列后得到的输出结H &#xff0c;72对应ASCII码中…

免费分享一套SpringBoot+Vue教务管理(课程管理)系统,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue教务管理(课程管理)系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue教务管理(课程管理)系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue教务管理(课程管理)系统 …

分布式开发

文章目录 分布式开发2024 分布式开发2024 分布式锁&#xff0c;有zk和redis二种实现方式 利用redis有一个框架Redisson 来实现 分布式事务的解决方案 分布式事务详解-Seata 通过springCloud的组件Seata来解决&#xff0c;这个是分布式项目问题解决框架通过自己来实现&#xff…

Python sqlite3库 实现 数据库基础及应用-数据维护:请编写一个具有新增和查询两种功能的程序

目录 【第12次课】实验十数据库基础及应用2-数据维护 程序代码&#xff1a; 程序运行举例: 【第12次课】实验十数据库基础及应用2-数据维护 数据库文件有两张表&#xff0c;其中“成绩表”有三个字段:学号、课程名、成绩。请编写一个具有 新增和查询两种功能的程序: (1)当输…

品鉴中的盲品挑战:如何凭借感官判断红酒的类型与品质

盲品挑战是一种品鉴方式&#xff0c;通过蒙住品鉴者的眼睛&#xff0c;仅凭感官来判断红酒的类型和品质。这种方式考验品鉴者的感官敏锐度和经验&#xff0c;也是提升品鉴能力的一种有趣方式。那么&#xff0c;如何在盲品挑战中凭借感官判断雷盛红酒的类型与品质呢&#xff1f;…

经典查找算法

1.顺序查找法 从序列的一端到另一端&#xff0c;找到元素返回对应下标&#xff0c;退出循环。 可能找的到&#xff0c;也可能找不到。 时间复杂度O(n) int find(vector <int>nums, int target) {for(int i0; i<nums.size(); i){if(nums[i]target) return i; }return…

Web APIs(获取元素+操作元素+节点操作)

目录 1.API 和 Web API 2.DOM导读 DOM树 3.获取元素 getElementById获取元素 getElementsByTagName获取元素 H5新增方法获取 获取特殊元素 4.事件基础 执行事件 操作元素 修改表单属性 修改样式属性 使用className修改样式属性 获取属性的值 设置属性的值 移除…

Git系列:git show 使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Visual Studio使用——vs解决方案显示所有文件

目录 引出vs解决方案显示所有文件Idea安装和使用0.Java下载 和 IDEA工具1.首次新建项目2.隐藏文件不必要显示文件3.目录层级设置4.Settings设置选择idea的场景提示代码不区分大小写 取消git的代码作者显示 总结 引出 Visual Studio使用——自定义代码片段 & 像使用IDEA一样…

台式电脑屏幕亮度怎么调节?让你的眼睛更舒适!

在日常使用台式电脑时&#xff0c;调节屏幕亮度是一项常见的需求。不同的环境和个人偏好可能需要不同的亮度设置。因此&#xff0c;了解台式电脑屏幕亮度怎么调节是非常重要的。本文将介绍三种常见的方法&#xff0c;帮助您轻松调节台式电脑屏幕亮度&#xff0c;以满足您的需求…

asp.net core mvc razor动态编译

开发mvc过程中razor页面需要重启才能编译&#xff0c;非常麻烦&#xff0c;能否实现动态编译&#xff0c;微软官方提供了一个包能实现 新建.net 6 mvc项目 安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 修改csproj <Project Sdk"Microsoft.NET.Sdk.Web…

目标检测——YOLOv9算法解读

论文&#xff1a;YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (2024.2.21) 作者&#xff1a;Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2402.13616 代码&#xff1a;https://github.com/W…

【微信小程序开发】深入探索事件绑定、事件冒泡、页面跳转的逻辑实现

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

每日一题11:Pandas:数据重塑-透视

一、每日一题 解答&#xff1a; import pandas as pddef pivotTable(weather: pd.DataFrame) -> pd.DataFrame:df_pivot weather.pivot(indexmonth, columnscity, valuestemperature)return df_pivot 题源&#xff1a;力扣 二、总结 Pandas 是一个强大的 Python 数据分析…

数据可视化(十):Pandas数据分析师职位信息表分析——箱线图、水平柱状图、学历城市双维分析等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

20240513每日后端---聊聊策略模式+责任链解决业务多if判断

责任链模式 责任链模式是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。 策略模式 策略模式是一种行为设计模式&#xff0c; 它能让你定义一系列算法&…

Rpcx (二):传输

一、Transport 传输 rpcx 可以通过 TCP、HTTP、UnixDomain、QUIC和KCP通信。你也可以使用http客户端通过网关或者http调用来访问rpcx服务。 TCP 这是最常用的通信方式。高性能易上手。可以使用TLS加密TCP流量。 Example: 101basic 服务端使用 tcp 做为网络名并且在注册中心…

C++之map和set 的封装

通过红黑树的学习&#xff08;C之红黑树-CSDN博客&#xff09;让我了解到map和set的底层如何实现&#xff0c;这一次我们来对map和set进行封装。 目录 1.map和set底层原理 2.map和set的定义 3.map和set的仿函数 4.map和set的插入 5.map和set的迭代器 5.1迭代器的构造 5.2…

Maven修改本地仓库的默认路径

前言 忽然发现当时下载Maven时候的默认路径没有与Maven放到同一个文件夹内&#xff0c;强迫症的我就想着修改一下Maven的路径&#xff01;也方便后续我的jar包管理&#xff0c;放到C盘下可能会导致占用C盘空间等等问题吧。以下是我的操作过程&#xff1a; 一、创建一个本地仓库…