第184场周赛
时间:2022-07-28
本文章向大家介绍第184场周赛,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
5380. 数组中的字符串匹配
题解:根据描述,加上简单题,以及数据规模很小,不妨有按照题目描述解法。
static bool cmp(string a,string b){
return a.length()<b.length();
}
vector<string> stringMatching(vector<string>& words)
{
sort(words.begin(),words.end(),cmp);
vector<string>ret;
for(int i=0;i<words.size();i++)
{
for(int j=i+1;j<words.size();j++)
{
int begin=-1;
if((begin=words[j].find(words[i],begin+1))!=string::npos)
{//此句为字符串匹配
ret.push_back(words[i]);
break;
}
}
}
return ret;
}
5381. 查询带键的排列
题解:根据描述,有了啊,有了啥?有了答案。
vector<int> processQueries(vector<int>& queries, int m) {
vector<int>p;
for(int i=1;i<=m;i++)p.push_back(i);//根据描述生成数组p
vector<int>ret;
for(int i=0;i<queries.size();i++){
vector<int>::iterator it = find(p.begin(), p.end(),queries[i]);
int tmp = *it;//1.保存移动的值
p.erase(it);//2. 删掉
ret.push_back(it-p.begin());//3. 插到最前面
p.insert(p.begin(),tmp);//
}
return ret;
}
1410. HTML 实体解析器
题解:本次周赛前三题都是模拟题呢?没有啥子变通,根据题意模拟就行啦,自己的代码功底(API)熟悉程度不行啊,哭唧唧。
string entityParser(string text) {
map<string,char>m = {{">",'>'},{"<",'<'},{"&",'&'},{""",'"'},{"&apos",'''},{"&frasl",'/'}};
string ret;
for(int i=0;i<text.length();i++){
if(text[i]!='&') ret+=text[i];
else{
int flag = 0;
string sub = text.substr(i,3);
for(auto j:m){
if(sub==j.first){
flag = 1;
ret+=j.second;
i+=3;
break;
}
}
sub = text.substr(i,4);
for(auto j:m){
if(sub==j.first){
flag=1;
ret+=j.second;
i+=4;
break;
}
}
sub = text.substr(i,5);
for(auto j:m){
if(sub==j.first){
flag=1;
ret+=j.second;
i+=5;
break;
}
}
sub = text.substr(i,6);
for(auto j:m){
if(sub==j.first){
flag =1;
ret+=j.second;
i+=6;
break;
}
}
if(flag ==0) ret+='&';
}
}
return ret;
}
5383. 给 N x 3 网格图涂色的方案数
题解:先看图
根据上图,可以将排列情况分为两种,ABA,ABC,前者颜色有重复,后者无,在这两种下面再添加元素有这么12种选择
ABC ACB BAC BCA CAB CBA ABA ACA BAB BCB CAC CBC
可分别加入到下面的如表格所示
ABA |
ABC |
---|---|
unrepeat:BAC |
unrepeat:BCA |
unrepeat:CAB |
unrepeat:CAB |
unrepeat:BAB |
|
repeat:BCB |
repeat:BAB |
repeat:CAC |
repeat:BCB |
在形如ABA这样的下面只能由3种unrepeat填充,2种repeat填充
在形如ABC这样的下面只能由2种unrepeat填充,2种repeat填充
每次填充依赖选择,当前可填充数目为
总结好规律后有下面代码:
int numOfWays(int n) {
if(n==0) return 0;
if(n==1) return 12;
long m = 6,k = 6;//k,m表示上一层repeat,unrepeat
long repeat,unrepeat;
for(int i=1;i<n;++i)
{
repeat = (2*(k+m))%1000000007;
unrepeat = (3*m+2*k)%1000000007;
m = unrepeat;
k = repeat;
}
return (unrepeat+repeat)%1000000007;
}
- Struts2 动态结果和带参数的跳转
- struts2 Result Type四个常用转跳类型
- Struts2 默认Action和模块包含
- struts2 访问Web元素的4种方法
- struts2 DMI
- 翻译qmake文档(四) Building Common Project Types
- 翻译qmake文档(三) Creating Project Files
- 翻译qmake文档(二) Getting Started
- QTableView 添加按钮
- QTableView 添加进度条
- c# 调用win32模拟点击的两种方法
- [原创翻译]Protocol Buffer Basics: C#
- 详解 Android Activity 生命周期
- 设计模式:装饰者模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法