Kickstart-2018-RoundH-ProblemA——Big Buttons

2023-12-24 18:48

本文主要是介绍Kickstart-2018-RoundH-ProblemA——Big Buttons,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意:长度为N的字符串由R B两个字符组成,但是不能有给定的字符串前缀,问除去给定前缀的字符串之后组成的字符串种类有多少。
题目链接(科学上网)

Note:注意处理重复前缀,即:前缀是否有包含和被包含的关系

#include <string>
#include <iostream>using namespace std;#define LL long longLL pow(LL x, LL y){ ///幂LL ans=1;while(y>0){if(y&1){ans*=x;}x*=x;y>>=1;}return ans;
}int findWin(LL N, LL P, int NO){LL len,numbers=pow(2,N);string forbid,forbidStrs[105];int allForbidLen=0;for(int i=0;i<P;i++){cin>>forbid;bool flag=false;int l1,l2,l,j=0,t;for(j=0;j<allForbidLen;j++){ ///和所有已经在数组中的字符串比较前缀是否有包含关系l1=forbid.length(),l2=forbidStrs[j].length();l=l1>l2 ? l2:l1;for(t=0;t<l;t++){ ///比较前缀if(forbid[t]!=forbidStrs[j][t]){  break; } ///前缀不一样直接跳出}if(t==l){/// 有前缀相同,保留前缀较短的if(flag){ forbidStrs[j]=""; continue; } ///如果已经保存过了则把重复的前缀字符串置为空else {if(l1<l2){ forbidStrs[j]=forbid; }flag=true;}}}if(!flag){ ///没有相同前缀的字符串则加入数组forbidStrs[allForbidLen++]=forbid;}}for(int t=0;t<allForbidLen;t++){ ///正确的个数为 2^N-2^(N-len)-...len=forbidStrs[t].length();if(numbers>0&&len>0){numbers=numbers-pow(2,(N-len));}if(numbers<0){numbers=0;break;}}cout<<"Case #"<<NO<<": "<<numbers<<endl;return 0;
}int main()
{freopen("A.in","r",stdin);freopen("A.out","w",stdout);int T;LL N,P;cin>>T;for(int i=1;i<=T;i++){cin>>N>>P;findWin(N,P,i);}return 0;
}

这篇关于Kickstart-2018-RoundH-ProblemA——Big Buttons的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532771

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

vulhub GhostScript 沙箱绕过(CVE-2018-16509)

1.执行以下命令启动靶场环境并在浏览器访问 cd vulhub/ghostscript/CVE-2018-16509 #进入漏洞环境所在目录   docker-compose up -d #启动靶场   docker ps #查看容器信息 2.访问网页 3.下载包含payload的png文件 vulhub/ghostscript/CVE-2018-16509/poc.png at

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间 方法1 import datetimeorigin_date_str= "2019-07-26T08:20:54Z"utc_date = datetime.datetime.strptime(origin_date_str, "%Y-%m-%dT%H:%M:%SZ")loca

2018年年终体会~

说下最近的一件事情:2018年12月08日华为云培训云原生课程,我坚持了两周,中间休假了,回来就忘记了。错过了一天的打开。这次21天的云原生课程彻底失败。反思后,不是我不想学习,也不是我没有毅力,而是人总是容器在平凡中失去自己,失去自己的目标,就像《千与千寻》中一样,慢慢的生活磨砺自己,慢慢的平淡消耗你自己,你自己都忘记了,自己是为了什么,每年都会给自己立flag,可是很难坚持下去,就

2018Java高级工程师面试总结

2018Java高级工程师面试总结 java高级 2018-10-11 15:11:42 面试的岗位是Java后台开发,面的公司不多,主要有美团点评-网易-网易有道-携程-华为-中兴-科大讯飞-烽火通信这些公司。从前到后简单记录了自己面试时候遇到的问题,以及对面试给了一点点小的建议,给明年甚至以后的师弟师妹们一些参考。欢迎各位朋友一起交流。 关注我:私信回复“架构资料”获取往期Java高级架

Qt event-buttons()

event->buttons() & Qt::LeftButton 和 event->buttons() == Qt::LeftButton 在这里的效果一致,但这两个语句完全不等价(效果一致仅仅是一个特例)。event->buttons() 的返回值是 Qt::MouseButtons,这是一个 flag 类型,可以使用 | 进行按位或的操作。也就是说,event->buttons() 可能返回

NLP-预训练模型-2018:Bert字典

参考资料: 我的BERT!改改字典,让BERT安全提速不掉分(已开源)

2018中国金融科技竞争力100强榜单

2018--金融科技--榜单  2018--金融科技--评价标准   参考地址:https://biz.ifeng.com/a/20180630/45044607_0.shtml