首页 > 其他分享 >CF1743D Problem with Random Tests

CF1743D Problem with Random Tests

时间:2024-06-04 22:24:55浏览次数:14  
标签:Tests 那么 string int 截取 Random 100 第一段 Problem

题目链接:https://codeforces.com/contest/1743/problem/D

这题比较考察做题的经验

因为或操作对一个数的值只增不减,所以我们要往高位考虑.我们截取的第一段需要满足最高位的1在原串中也是最高位的1,这样才能做到别的所有的数都不如他大.截取的第二段需要能首先满足把第一段截取出来的数的最高位0给搞成1,然后再继续考虑把低位的0也尽可能搞成1.

这道题说了所有测评数据随机,所有位上为‘1’和‘0’的概率都是1/2.

我们找截取的第一段非常容易,只需要把原串所有的前导0全部去掉即可(如果全部都是0那么就做个特判输出0即可).那么截取第二段我们需要寻找第一段中从高往低第一个出现的0.根据数据随机的这个定义,我们假设前面99位都是1,100位是0.那么这种数据出现的概率就是1/(2^100),他已经明确告诉你只有40组测试样例,那么这种数据出现的概率已经近似为0.那么0出现的位置一定不会太靠后.如果你是一位做题经验丰富的老手,那么你很容易就能想到只用枚举前100位的情况即可!但是这种做法,只适用于你知道有多少组测试数据的题目,如果测试数据有多少个不清楚,那这种方法成功的概率就很小.

至于两个字符串整体做或操作,用bitset可以很好的解决.


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    string s;
    cin>>n>>s;
    auto elz = [&](string s) ->string
    {
        if(s.find('1')!=string::npos)
        return s.substr(s.find('1'));
        else return "0";
    };
    s=elz(s);
    bitset<1000010> b1(s),b2(s);
    string ans=b1.to_string();
    for(int i=1;i<=100;i++)
    {
        ans=max(ans,(b1|(b2>>i)).to_string());
    }
    cout<<elz(ans)<<'\n';

}

标签:Tests,那么,string,int,截取,Random,100,第一段,Problem
From: https://www.cnblogs.com/captainfly/p/18231905

相关文章

  • How to use JavaScript BigInt and Number.prototype.toString to handle the super l
    HowtouseJavaScriptBigIntandNumber.prototype.toStringtohandlethesuperlargeintegerproblemsAllInOne如何使用JavaScriptBigInt和Number.prototype.toStringg处理超大整数问题errorsfunctionplusOne(digits:number[]):number[]{letn=parseI......
  • Docker + maven build problem — unix://localhost:80: Permission denied
    使用docker-maven-plugin进行构建镜像报错如下:com.spotify.docker.client.shaded.org.apache.http.impl.execchain.RetryExecexecuteINFO:I/Oexception(java.io.IOException)caughtwhenprocessingrequestto{}->unix://localhost:80:Permissiondenied解决方案:Ad......
  • Chapter 4 Problems
    T1证明\(\negA\rightarrowB,\negA\rightarrow\negB\vdashA\)可用定理:\(\vdash(\negA\rightarrowA)\rightarrowA\)Proof\[\begin{aligned}A_1:\quad&\negA\rightarrowB&\in\Gamma\\A_2:\quad&\negA\rightarrow......
  • A Simple Problem with Integers(C++)
     【题目描述】这是一道模板题。给定数列 a[1],a[2],…,a[n] ,你需要依次进行q 个操作,操作有两类:C、lrx :给定 l,r,x ,对于所有 i∈[l,r] ,将 a[i] 加上 x (换言之,将 a[l],a[l+1],…,a[r] 分别加上 x );Q、lr :给定l,r ,求 ∑ri=la[i] 的值(换言之,求 a[l]+a[l+......
  • [论文笔记] The Fact Selection Problem in LLM-Based Program Repair
    Introduction:当bug发生时,我们会拿到很多信息:上下文、报错信息等等,文章把这些东西定义为facts,自然产生一个问题:“哪种facts应该被组织进prompt?”这篇文章就这一点做出了一些探讨。之前的工作研究了很多独立的信息,比如上下文、GitHubissue(这也行?)、栈跟踪信息;这篇文章将它......
  • 【Python快速上手(三十)】- 详解Python random 模块和 statistics 模块
    目录Python快速上手(三十)-详解Pythonrandom模块和statistics模块1.Pythonrandom模块1.1生成随机数1.2随机选择和打乱1.3随机分布1.4种子和状态2.Pythonstatistics模块2.1均值和中位数2.2众数2.3方差和标准差2.4协方差和相关性2.5分位数和百分位数2.6......
  • random和range
    含义:random(1,10)不包含10,用于生成随机数。它可以生成浮点数或整数,取决于具体的使用方式。range(0,1)不包含1,用于生成一个整数序列。它可以生成一个指定范围内的连续整数序列。区别在于:random()生成的数是随机的,每次调用可能得到不同的结果。而range()生成的数是连续的......
  • 有容量限制的车辆路径规划问题(Capacitated Vehicle Routing Problem)
    在看matlab的时候发现了这篇文章https://www.frontiersin.org/articles/10.3389/fict.2019.00013/full仔细阅读一下。(英语渣渣,自学用)TheCapacitatedVehicleRoutingProblem(CVRP)isanNP-optimizationproblem(NPO)thathasbeenofgreatinterestfordecadesfo......
  • [论文笔记] Conversing with Copilot: Exploring Prompt Engineering for Solving CS1
    Abstract:Copilot及其他辅助编程的人工智能模型被广泛使用,这篇文章探索了Copilot在哪些任务上表现不佳,prompt在过程中的作用等几个问题。Introduction:Question1:Copilot在CS1programmingproblems上的表现如何?Question2:当Copilot最初失败后,prompt的修改如何......
  • CF1909I Short Permutation Problem 题解
    这是一道*1900的黑。考虑枚举\(m\),将\(<\fracm2\)和\(\ge\fracm2\)的数分开讨论。考虑相邻两个数\(a,b\(a>b)\)分别在\(\fracm2\)的两侧,则有\(b\gem-a\)。考虑将所有数按某种方法从小到大排序,以\(\min(x,m-x)\)为第一关键字,\(-x\)为第二关键字,则排列中......