hdu多校第九场 1005 (hdu6684) Rikka with Game 博弈
题意:
给一个小写字母组成的字符串,每回合轮到某人时,此人可以选择让某位+1(如果是z则变回a),或者直接结束游戏。
先手希望游戏结束时字符串字典序尽量小,后手希望游戏结束时字符串字典序尽量大,求游戏结束时的字符串。
题解:
定理0:先手只能操作z
证明:如果先手操作非z元素,后手直接结束游戏,对于先手而言,局面一定比先手直接结束游戏更劣。
定理1:后手不应操作字符串的前导y
证明:
(1)假设轮到后手时字符串呈如下状态:yyyyy*****
(2)如果后手操作了某个y,此时字符串变成了这样:yyzyy*****
(3)先手可以操作z:yyayy*****
(4)如果后手再操作此a后面的字符,则先手直接结束游戏,否则先手将刚刚被操作,变成z的字符再操作一次变成a,此时则回到了情况(3)或者后手也可以直接结束游戏,无论何种情况,局面对于后手而言都劣于(1)
定理2:如果字符串中的第一个z前面有字符且不全是y,则先手应该直接结束游戏
证明:
(1)不妨假设轮到先手时,字符串呈如下状态:yabz****
(2)如果先手操作了某个z,变成yaba****
(3)则由定理1,后手可以操作第一个非y字符,且这个字符一定在z前面,变为ybba****
(4)如果此时a直接结束游戏,对于先手局面一定比(1)更劣。如果先手选择操作,那么无论先手操作什么,后手都直接结束游戏,对于先手而言局面一定比(1)更劣。
定理3:如果字符串最前若干个是y,紧接着是z,如yyz***,则先手能获得的最好局面是yyb***
(1)如果先手操作后面的z,后手直接结束游戏,对于先手局面一定比yyb***更劣
(2)先手操作第一个z,变为yya***后,如果后手选择结束游戏,或者后手操作其他非y元素,先手结束游戏,则局面定比yyb***对后手更劣
(3)所以后手只能操作a,将之变为yyb***
(4)此时若没有z,则根据定理0先手应直接结束游戏,若后面有z,则根据定理2先手应直接结束游戏。
定理0,2,3列出了先手开局时所有可能遇到的三种情况,模拟即可。
#include<iostream>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
char s[];
scanf("%s",s);
for(int i=;s[i]!='\0';i++){
if(s[i]<'y'){
printf("%s",s+i);
break;
}
if(s[i]=='y')printf("y");
if(s[i]=='z'){
printf("b%s",s+i+);
break;
}
}
printf("\n");
}
return ;
}
hdu多校第九场 1005 (hdu6684) Rikka with Game 博弈的更多相关文章
- hdu多校第九场 1006 (hdu6685) Rikka with Coin 暴力
题意: 有一些1毛,2毛,5毛,1块的钢镚,还有一些价格不同的商品,现在要求你带一些钢镚,以保证这些商品中任选一件都能正好用这些钢镚付账,问最少带多少钢镚. 题解: 对于最优解,1毛的钢镚最多带1个, ...
- hdu多校第九场 1002 (hdu6681) Rikka with Cake 树状数组维护区间和/离散化
题意: 在一块长方形蛋糕上切若干刀,每一刀都是从长方形某条边开始,垂直于这条边,但不切到对边,求把长方形切成了多少块. 题解: 块数=交点数+1 因为对于每个交点,唯一且不重复地对应着一块蛋糕. 就是 ...
- hdu多校第一场1005(hdu6582)Path 最短路/网络流
题意: 在无向图上删边,让此图上从起点到终点的最短路长度变大,删边的代价是边长,求最小代价. 题解: 先跑一遍迪杰斯特拉,求出所有点的d[]值,然后在原图上保留所有的边(i,j)仅当i,j满足d[j] ...
- hdu多校第二场 1005 (hdu6595) Everything Is Generated In Equal Probability
题意: 给定一个N,随机从[1,N]里产生一个n,然后随机产生一个n个数的全排列,求出n的逆序数对的数量,加到cnt里,然后随机地取出这个全排列中的一个非连续子序列(注意这个子序列可以是原序列),再求 ...
- 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)
咕咕咕了太久 多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...
- Rikka with Game[技巧]----2019 杭电多校第九场:1005
Rikka with Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Othe ...
- 杭电多校第九场 hdu6425 Rikka with Badminton 组合数学 思维
Rikka with Badminton Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/O ...
- 杭电多校第九场 hdu6424 Rikka with Time Complexity 数学
Rikka with Time Complexity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K ( ...
- 杭电多校第九场 HDU6415 Rikka with Nash Equilibrium dp
Rikka with Nash Equilibrium Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 524288/524288 K ...
随机推荐
- python制作坦克对战
创建子弹类 import pygame class Bullet(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__i ...
- 数据结构(c语言版,严蔚敏)第1章绪论
第1章严蔚敏
- 【JZOJ6431】【luoguP5658】【CSP-S2019】括号树
description analysis 用栈维护一下树上路径未匹配的左括号,然后在树上找右括号匹配,设\(f[i]\)为\(i\)节点的贡献,\(g[i]\)是答案 为左括号可以直接继承父节点的信息 ...
- 【JZOJ3920】噪音
description FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i] ...
- Android中让View匀速旋转
项目需求,需要一个实现一个单帧的旋转动画,来提示当前进度,类似与圆圈型的progressbar. 首先定义anim文件: [html] view plaincopyprint? 1. < ...
- RzGroupBar
何分多层 procedure TForm1.FormCreate(Sender: TObject); begin RzGroup1.Items.Clear; RzGroup1.Items.Add.Ca ...
- linq中如何合并多个predicate条件
最近在做一个webAPI 的时候遇到一个需要合并多个predicate条件的问题,下面就是对题的情况.为了方便交流我对case进行了简化,请先看如下代码: using System.Collectio ...
- tp U函数 logs
注意 U 函数 项目今天已经搞定了本以为可以上线了没问题了,但是 当我把tp调试模式关闭后: define('APP_DEBUG',false); 页面完全加载不出来,于是开启: 'SHO ...
- error LNK2019: 无法解析的外部符号 "__declspec(dllimport) long __stdcall RtlGetVersion(struct _OSVERSIONINFOW
虽然ntdll.lib库也引用了,但还是提示找不到RtlGetVersion函数定义,工程中头文件的定义如下: NTSYSAPI NTSTATUS NTAPI RtlGetVersion( _ ...
- json path espressions的语法学习
json path espressions的语法学习 $:跟对象\元素 @:当前对象\元素 ?():应用过滤器(脚本)表达式 如: { "store": { "bo ...