首页 > 其他分享 >Solution - Codeforces 1190C Tokitsukaze and Duel

Solution - Codeforces 1190C Tokitsukaze and Duel

时间:2024-11-14 21:07:19浏览次数:1  
标签:1190C Duel gr Tokitsukaze int 必胜 maxn && 操作

考虑到两人对应的操作是相同的,于是可以从对称的角度来思考。

考虑到在先手做出操作后,后手一个较为特殊的操作是不做任何影响,也就是重复先手的操作。
能够发现如果对于后手这不能必胜,那么他一定不会去产生影响,并又把这个局面留给先手,相当于是先后手的交换。
对于先手又是同样的,因为两人操作相同,对于他也是不必胜的,那么他也会重复操作留给后手,那么就平局了。

于是能够知道的是,如果初始状态就能必胜,那么先手必胜。
否则如果无论先手怎样操作,后手都能必胜的话,后手必胜。
否则就是先手存在一种方式,使得操作后后手不能必胜,那么两人就会一直重复第一次的操作,最终平局。

对于判断,可以提前预处理好前缀同色段的长度与后缀连续段的长度。
通过分讨操作所在的段的左右两方的是否同色,长度与 \(k\) 的大小关系,以及 \(s_1, s_n\) 的相等关系即可判断得出先 / 后手是否必赢。

时间复杂度 \(\mathcal{O}(n)\)。

#include<bits/stdc++.h>
constexpr int maxn = 1e5 + 10;
int n, k;
char s[maxn];
bool f[maxn], g[maxn];
int main() {
   scanf("%d%d%s", &n, &k, s + 1);
   f[0] = true;
   for (int i = 1; i <= n; i++) {
      f[i] = f[i - 1] && (s[i] == s[1]);
   }
   g[n + 1] = true;
   for (int i = n; i; i--) {
      g[i] = g[i + 1] && (s[i] == s[n]);
   }
   if (f[n - k] || g[k + 1]) {
      return puts("tokitsukaze"), 0;
   }
   for (int l = 1, r = k; r <= n; l++, r++) {
      if (f[l - 1] && g[r + 1] && s[1] == s[n]) {
         return puts("tokitsukaze"), 0;
      }
   }
   bool fl = true;
   for (int l = 1, r = k; r <= n; l++, r++) {
      for (char c : {'0', '1'}) {
         bool gl = l > 1 && (! f[l - 1] || c != s[1]);
         bool gr = r < n && (! g[r + 1] || c != s[n]);
         if ((gl && gr) || (gl && l - 1 > k) || (gr && n - r > k)) {
            fl = false;
            break;
         }
      }
   }
   puts(fl ? "quailty" : "once again");
   return 0;
}

标签:1190C,Duel,gr,Tokitsukaze,int,必胜,maxn,&&,操作
From: https://www.cnblogs.com/rizynvu/p/18546824

相关文章

  • 别样的 Duel 大战
    Lovely_CatHxy和Ghost_Huang已经大战数10局了,全部都是LCat胜利!!!都是hxy为什么偏偏你这么厉害呢(((CF1257Ftag:简单题*2000推一下式子,设\((i,j)\)表示前面选\([1,i]\)后面选\([j,n]\)。式子里面就尽量不要写和2有关的了。考虑分析1和3需要进入的点有多少个,然......
  • RLGF无人机深度强化学习任务的通用训练框架(SAC, DQN, DDQN, PPO, Dueling DQN, DDPG)
    RLGF是一个通用的训练框架,适用于无人机的深度强化学习任务。该框架集成了多种主流的深度强化学习算法,包括SAC(SoftActor-Critic)、DQN(DeepQ-Network)、DDQN(DoubleDeepQ-Network)、PPO(ProximalPolicyOptimization)、DuelingDQN(决斗深度Q网络)以及DDPG(DeepDeterministicPo......
  • duel 到的题目
    难度会/总\(\ast1900\)\(2/4\)\(\ast2000\)\(2/3\)\(\ast2100\)\(0/1\)\(\ast2200\)\(0/0\)\(\ast2300\)\(2/2\)\(\ast2400\)\(2/2\)总\(8/12\)duellink题目难度标签做法是否想出6522CF1168B\(\as......
  • 题解:Tokitsukaze, CSL and Stone Game
    ProblemLinkTokitsukaze,CSLandStoneGame题外话对于某些人说降绿甚至降黄,本人是很不同意的,毕竟多一道水蓝有什么不好题意翻译得很简洁,不再赘述。Solution不难发现有以下几种情况:只有两堆不等的,肯定选少的那堆,因为这样不易使得两堆相等。若两堆相等,一定破坏相等......
  • 【贪心】【堆】tokitsukaze and Soldier
    https://ac.nowcoder.com/acm/contest/22904/10041.为什么要排序?排序是为了先处理人数限制大的士兵。因为人数限制小的士兵会影响后续的选择,优先处理人数限制大的士兵可以让我们选出更多的士兵,最大化战斗力。如果不排序,可能会先处理人数限制小的士兵,导致过早地剔除高战斗力的......
  • 【处理元组有关的题型的技巧】codeforces 1677 A. Tokitsukaze and Strange Inequalit
    题意第一行输入一个正整数\(T(1\leqT\leq1000)\),代表共有\(T\)组测试用例,对于每组测试用例:第一行输入一个正整数\(n(4\leqn\leq5000)\),第二行输入\(n\)个正整数\(p_i(1\leqp_i\leqn)\)。对于\(1\leqi<j<k<l\leqn\),若有\(a_i<a_k,a_j>a_l\)成......
  • Tokitsukaze and Two Colorful Tapes
    看这篇题解就好了解释一下为什么山谷=山峰证明加强结论:对于每个环,山谷=山峰证:对于任何一种方案,这种方案下的任意一个环,我们断开某条边,他就会长成这个样子:起点和终点连起来,不难发现是山谷=山峰再假设我们已经定下了山谷和山峰的个数\(a\),那么\(2(x-y)\)的上界就是\([1,n]\)中......
  • A. Tokitsukaze and Strange Inequality(dp版)
    链接https://codeforces.com/problemset/problem/1677/A题目思路这题感觉还是挺有难度的(为啥题解都说不难Orz),给我启发最大的是这句话:具体怎么处理呢?把i按照n->1的顺序遍历,然后j从反方向遍历:i+1->n。求S[i][j]时用S[i+1][j],因为S对应的是以j为结尾的,然后在遍历中相当于不知......
  • DiviDuelo
    我们先模拟样例,会发现\(1\)是一个特别的数字,如果firstplayer拿到了\(1\)那么肯定就输了于是不难得出结论,如果\(n\)是一个完全平方数,那么firstplayer就G了那么考虑不是完全平方数,显然这里考虑gcd不是\(1\)非常困难,于是考虑secondplayer怎么样才能赢由于gcd要为\(1\),不难想到......
  • DiviDuelo
    https://codeforces.com/gym/105053/problem/D我发现了p^alpha=N,alpha%2!=0以及pq=N,(p,q为素数)的情况下先手玩家有必胜策略,然而我不知道如何用O(sqrt(N))的算法分解出上面的东西`#include<bits/stdc++.h>usingnamespacestd;std::vectorfactorize(intn){std......