「杂题乱刷2」CF1527B2

news/2024/9/19 12:46:41/文章来源:https://www.cnblogs.com/wangmarui/p/18417069

题目链接

CF1527B1(luogu)

CF1527B2(luogu)

CF1527B1(codeforces)

CF1527B2(codeforces)

解题思路

这篇题解分 B1,B2 两个部分来讲。

B1 sol:

考虑字符串中 \(0\) 的数量,设这个值为 \(sum\)

  • \(sum \equiv 0 \pmod{2}\),且字符串回文时,那么此时,后手可以一直模仿先手的操作,直到字符串含有最后一个 \(0\) 时,后手可以反转这个字符串,那么此时后手的代价比先手要少 \(2\),综上,后手此时必胜。

  • \(sum \equiv 1 \pmod{2}\),且字符串回文时,那么此时,字符串的长度一定奇数,且字符串中间的数字一定为 \(0\),那么此时,先手可以将中间的 \(0\) 变为 \(1\),此时若还有剩余的 \(0\),则先手必胜,否则后手必胜。

综上,这就是 B1 的做法。

B2 sol:

仍然考虑字符串中 \(0\) 的数量,设这个值为 \(sum\)

若字符串已经回文,则直接按照 B1 的做法来做。

否则,先手一定可以反转字符串,直到后手把这个字符串变为回文,那么此时:

  • \(n \equiv 0 \pmod{2}\),由于此时先手仍然可以一直模仿后手的操作,由于前期先手比后手付出的代价要少,因此可以得出先手必胜。

  • \(n \equiv 1 \pmod{2}\),如果字符串中间的数字不为 \(0\) 则先手仍然可以模仿后手的情况,此时先手必胜。否则,若此时 \(sum = 2\),则后手去掉最外侧的 \(0\),此时先手与后手平局,其余情况,我们发现先手的所需代价至少比后手少 \(1\),先手必胜。

参考代码

#include<bits/stdc++.h>
using namespace std;
//#define map unordered_map
#define re register
#define ll long long
#define forl(i,a,b) for(re ll i=a;i<=b;i++)
#define forr(i,a,b) for(re ll i=a;i>=b;i--)
#define forll(i,a,b,c) for(re ll i=a;i<=b;i+=c)
#define forrr(i,a,b,c) for(re ll i=a;i>=b;i-=c)
#define pii pair<ll,ll>
#define mid ((l+r)>>1)
#define lowbit(x) (x&-x)
#define pb push_back
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl '\n'
#define QwQ return 0;
ll _t_;
void _clear(){}
ll n;
string s;
bool check(string s)
{ll L=1,R=n;while(L<=R && s[L]==s[R])L++,R--;return L>=R;
}
/*
1101011011 0:111111 1:1100110110110011011101 0:11111101 1:11011111
*/
void solve()
{_clear();cin>>n>>s;s=' '+s;if(check(s)){ll sum=0;for(auto i:s)sum+=i=='0';if(sum%2==0){cout<<"BOB\n";return ;}if(sum==1){cout<<"BOB\n";return ;}cout<<"ALICE\n";return ;}ll sum=0;for(auto i:s)sum+=i=='0';if(n%2 && sum==2 && s[(n+1)/2]=='0')cout<<"DRAW\n";elsecout<<"ALICE\n";
//	exit(-1);
}
int main()
{
//	freopen("tst.txt","r",stdin);
//	freopen("sans.txt","w",stdout);IOS;_t_=1;cin>>_t_;while(_t_--)solve();QwQ;
}

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

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

相关文章

白云龙期货投资-第六讲

## 价量行情中的配合 1,价涨量增,顺势推动。 2,价量背离,趋势转变 (价与量在相对高位称为顶背离,在下跌末期为底背离。背离后如果想再次上涨或者下跌,一般价格都会出现一个盘整期,而成交量则出现缩量地量期)价量行情中的配合 1,价涨量增,顺势推动。 2,价量背离,趋势…

软件工程结对项目 3:python实现自动生成小学四则运算题目的程序

这个作业属于哪个课程 广工计院计科34班软工这个作业要求在哪里 作业要求团队成员1 庄崇立3122004633团队成员2 罗振烘3122004748这个作业的目标 结对合作完成小学四则运算题目的程序,熟悉项目开发流程,提高团队合作能力一、GitHub地址 二、需求 1.题目:实现一个自动生成小学…

结构、权限修饰符、类

结构、权限修饰符、类 结构(struct:自定义的数据结构) struct student {// 成员变量int number;char name[100];void func(){ // 成员函数(方法)number++;} };// 1. 形参为引用 void func1(student &stu){stu.number = 2000;strcpy_s(stu.name, sizeof(stu.name…

Leetcode 2183. 统计可以被 K 整除的下标对数目

1.题目基本信息 1.1.题目描述 给你一个下标从 0 开始、长度为 n 的整数数组 nums 和一个整数 k ,返回满足下述条件的下标对 (i, j) 的数目:0 <= i < j <= n - 1 且 nums[i] * nums[j] 能被 k 整除。1.2.题目地址 https://leetcode.cn/problems/count-array-pairs-di…

贪心算法-找不重叠的区间段

1.说明 有N个区间片段,查找其中不重叠的片段最大个数。例如(6 8),(2 4),(3 5),(1 5),(5 9),(8 10)这6个片段中,不重叠的片段最大个数为3,分别为(2 4),(6 8),(8 10)。 2.解析 先按照起始位置从小到大进行排序,使用贪心算法使有效片段尽可能小,即结束位置更靠前…

Nuxt Kit 中的页面和路由管理

title: Nuxt Kit 中的页面和路由管理 date: 2024/9/17 updated: 2024/9/17 author: cmdragon excerpt: 摘要:本文介绍了Nuxt Kit中页面和路由管理的高级功能,包括extendPages自定义页面路由、extendRouteRules定义复杂路由逻辑及addRouteMiddleware注册路由中间件。通过这些…

堆的应用

1.需要具备的知识 1.1以顺序存储方式存储完全二叉树 完全二叉树:节点从上到下,从左到右布局的二叉树,如下图所示。完全二叉树可以使用类似数组这种顺序存储的结构存节点,如下图。按照"层级遍历"方式遍历这棵树(还有"前序、中序、后序"遍历方式,这里不做…

Oliver编译安装(Windows10+VisualStudio2022)

Oliver是一个开源的非线性视频编辑器。主要基于Qt和FFmpeg开发。前置条件 电脑上需要的环境Qt(>=5.15) VisualStudio(2022,其他版也可) vcpkg软件安装安装Qt5.15令人糟糕的是,Qt如今变得不太容易安装。自从Qt5.15以后的版本,就取消了离线安装。所有的Qt后序版本就只能通过…

CVE-2021-24762 复现

CVE-2021-24762 复现一看是个wordpress,看了下版本6.0没洞,直接扔wpscan扫一下 发现了个插件一搜发现perfect-survey在1.5.2之前都有洞,直接搜exp打. 上官网找了个API重扫一遍,直接给出了CVE号!直接找个sqlmap的exp跑一下,注意第二个位置选n来设置cookie sqlmap -u "http…

Java后端对前端的数据进行校验

首先,作为一名后端程序员,大家一定要记住:不要相信前端传来的数据,后端程序员仿佛是国家的边境出入局的工作人员,承担这最后的防线,必须尽可能的防止错误信息的流入导致正确信息的流出。因此,后端程序员必须要对前端传来的数据进行校验。这里呢,发现一个很好的校验工具…

vp介绍

想要更多请到:https://budingcat.xyz 注册了解详情 可以点击工单进行沟通哦~

云计算与大数据概论--金功勋

week4的 week5 Hadoop介绍起源:Hadoop as a solution:Building blocks:Namenodeif other nodes fail:DataNode:Block 1Secondary Namenode:JobTracker:if fails:Topolosy clusterPig:Hive :PIGweek10 week13: