zoukankan      html  css  js  c++  java
  • arc110b

    arc110b

    大意

    给定一个长为 (N) 且仅有 (0,1) 的串,问:

    给定串在 (10^{10})(110) 首尾相接连成的串中出现了几次(位置可以有重复!)

    思路

    第一次以为不能重复...不看样例的后果

    先考虑最特殊的情况,给定串为 (1) ,此时答案是 (2*10^{10})

    然后以第一个 (110) 的三个位置为开头,必须要能够匹配,否则不存在。

    不妨假设在第一个 (110)(0) 处开始,并完成了匹配。

    那么一次匹配跨越的 (110) 的个数显然为 (num=(2+n+2)/3) 向下取整。

    然后,我们删去第一个 (110) ,因为排除最特殊的情况后,一个 (110) 不可能同时作为开头两次。

    最后答案显然为 (10^{10}-num+1)

    代码

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    using namespace std;
    
    #define ll long long
    #define ull unsigned long long
    #define cint const int&
    #define Pi acos(-1)
    
    const int mod = 998244353;
    const int inf_int = 0x7fffffff;
    const ll inf_ll = 0x7fffffffffffffff;
    const double ept = 1e-9;
    
    string a;
    int n;
    char t[3] = {'1', '1', '0'};
    ll l = 0;
    
    int main() {
        bool flag=0;
        cin >> n >> a;
        if(a == "1" ) {
            cout << (ll)(2*1e10) << endl;
            return 0;
        }
        for(int i=0; i<3; i++) {
            for(int j=0; j<n; j++) {
                if(t[(i+j)%3] != a[j]) break;
                if(j == n-1) flag=1;
            }
            if(flag) {
                ll ans = 1e10 - (n+i+2)/3 + 1;
                cout << ans << endl;
                return 0;
            }
        }
        cout << 0 << endl;
        return 0;
    }
    

    -2,40min

  • 相关阅读:
    git 使用命令
    Mac上部署Jenkins,用git插件更新项目代码时报错的记录
    pycharm找不到本项目中的其他包或模块
    小米8线刷pixel experience全过程记录
    python环境清理
    怎么实现无遮罩屏蔽某些按钮的点击事件
    ios 上 WebCamTexture尺寸是16X16
    关于月份拆分
    关于const let的使用
    关于promise,const函数的使用
  • 原文地址:https://www.cnblogs.com/ullio/p/14117316.html
Copyright © 2011-2022 走看看