当前位置: 首页 > news >正文

韩国网页设计网站/深圳seo优化公司

韩国网页设计网站,深圳seo优化公司,合山网络推广,标智客logo设计免费生成题目:Problem - E - Codeforceshttps://codeforces.com/contest/1624/problem/E 题意: 玛莎认识了一个新朋友,并知道了他的电话号码 s 。电话号码是一个长度为m的字符串,它由从 0-9 组成 。 电话号码可能以 0 开头。 玛莎已经…

题目:Problem - E - Codeforceshttps://codeforces.com/contest/1624/problem/E

题意:

玛莎认识了一个新朋友,并知道了他的电话号码 s  。电话号码是一个长度为m的字符串,它由从 0-9 组成 。

电话号码可能以 0 开头。 玛莎已经知道 n 个电话号码(所有号码都有相同的长度 m )。对她来说,用她已经知道的数字片段来表示,记住一个新号码会更容易。每个数字片段长度至少为 2 ,否则分段太多,玛莎会搞混。

例如,玛莎需要记住数字: s = ‘12345678’ ,并且她已经知道 n = 4 ,号码:' 12340219 ',' 20215601 ',' 56782022 ',' 12300678 '。你可以将 s 分为一个 3 段:一号的“1234”,二号的“56”,三号的“78”。

还有其他方法来表示 s 。 玛莎请你帮忙,她请你将 s 分成长度至少为2的多个段或者更多她已经知道的数字。如果有几个可能的答案,打印其中任何一个。

Input:

测试用例有t组  1<= t <=10^4 

有n个号码,长度为m 1 ≤n,m ≤10^3

输入n个号码,而后输入 s

Output:

若无答案则输出-1。反之输出你答案的长度,并且输出其L,R 和 I 。分别表示在第I个号码的L到R

input:
24 8
12340219
20215601
56782022
12300678
123456782 3
134
126
123output:
3
1 4 1
5 6 2
3 4 3
-1

思路:

数字片段的长度至少为2,说明所有的数字片段可以分解为长度为2或3,长度为4=两个长度为2相加。所以预处理先遍历出2、3长度的数字片段及其相关信息并且将其保存到map里。

通过f[]保存状态,先预处理,f[2]表示s[2]之前的信息,即f[2]=s[0,1],f[3]=s[0,1,2]。将f[1]={0,0,0}表示无效信息。

而后进行遍历,若 f[i-2] 且 mp[s.substr(i - 2, 2)] 是有效的,则 f[i]=mp[s.substr(i - 2, 2)](f[i-2]表示s[i-2]之前的信息。 mp[s.substr(i - 2, 2)]则表示s[i-2,i-1])。f[i-3]同理进行判断。若都不满足则设置为无效信息。

如果最后的f[m]是存在有效信息则表示该结果有解,用vector逆序保存信息。否则输出-1。

代码:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;struct point {//保存输出信息int x, y, n;
};
map<string, point>mp;
vector<point>ans;
point f[1010];
bool checked(point p) {//判断是否合法。if (p.x == 0 && p.y == 0 && p.n == 0) {return 0;}return 1;
}int main() {int t;cin >> t;while (t--) {mp.clear();string s, subs;int n, m;cin >> n >> m;for (int i = 1;i <= n;i++) {//预处理保存片段cin >> s;for (int j = 0;j < m - 1;j++) {subs = s.substr(j, 2);mp[subs] = { j + 1,j + 2,i };}for (int j = 0;j < m - 2;j++) {subs = s.substr(j, 3);mp[subs] = { j + 1,j + 3,i };}}ans.clear();cin >> s;f[1] = mp[""];//{0,0,0}if (m >= 2)f[2] = mp[s.substr(0, 2)];if (m >= 3)f[3] = mp[s.substr(0, 3)];for (int i = 4;i <= m;i++) {if (checked(f[i - 2]) && checked(mp[s.substr(i - 2, 2)])) {f[i] = mp[s.substr(i - 2, 2)];}else if (checked(f[i - 3]) && checked(mp[s.substr(i - 3, 3)])) {f[i] = mp[s.substr(i - 3, 3)];}else {f[i] = f[1];}}//for (int i = 1;i <= m;i++) cout << 'f' << i << " == " << f[i].x << " " << f[i].y << " " << f[i].n << " " << endl;if (checked(f[m])) {int pos = m;while (pos != 0) {ans.push_back(f[pos]);pos -= f[pos].y - f[pos].x + 1;}cout << ans.size() << endl;for (int i = ans.size() - 1;i >= 0;i--) {cout << ans[i].x << " " << ans[i].y << " " << ans[i].n << endl;}}else {cout << -1 << endl;}}
}

http://www.jmfq.cn/news/4982527.html

相关文章:

  • 做视频网站需要什么条件/免费企业网站模板源码
  • 出口网站有哪些/今日新闻国际头条新闻
  • 一站式服务的好处/专业营销策划团队
  • 网站怎么做图片链接/seo优化工具软件
  • 挂网站需要什么服务器/百度网址大全电脑版旧版本
  • 大气的房产网站/北京百度推广代运营
  • 用c 做动态网站/湖南网站托管
  • 网页模版网站/郑州seo排名第一
  • 个人做淘宝客网站要备案/免费网站制作教程
  • 深圳外贸网站建设公司价格/网站开发制作培训学校
  • 杭州网站建设推广公司/知名网络推广
  • 医院网站详细设计/移动建站优化
  • 免费企业网站建立/湖北网站seo策划
  • 沈阳做网站的公司推荐/做网络推广一个月的收入
  • 网站站点建设的端口/百度答主中心入口
  • 网站建设 昆明 价格/ip域名查询
  • 绵阳专门做网站的公司/巨量数据分析入口
  • 东莞网站制作多少钱/廊坊seo排名公司
  • 斐讯k3做网站/提高网站排名的软件
  • 如何在阿里巴巴上做网站/怎样建网站
  • 微商产品做网站/广州最新疫情通报
  • 找网站做任务qq红包/如何做好网络推广
  • 兼职网站建设策划书/网络营销该如何发展
  • 网站开发价位评估/网络营销网课
  • 企业网站开发毕业报告/seo流量排行榜神器
  • 学做日本料理网站/哪些网站推广不收费
  • 做网站的有哪些公司/世界杯排名
  • 能在线做国二计算机题目的网站/全网最低价24小时自助下单平台
  • 头像制作logo免费生成器在线/泉州seo代理计费
  • 品牌网站策划方案/怎么设置自己的网站