首页 > 其他分享 >D. Color with Occurrences

D. Color with Occurrences

时间:2024-07-20 16:19:24浏览次数:13  
标签:pre now Color int length Occurrences include dp

链接

https://codeforces.com/problemset/problem/1714/D

题目

思路

思路1(未实现):首先判断可行性:每个子串都去匹配,然后添加差分数组,对原字符串的每个位置校验,如果每个位置都被覆盖至少一次说明可行;然后再删去最多的线段。

思路2(代码中):利用动态规划,借助数组dp[N]表示前i个字符构成的子串最少构建的步数。那么当从状态i-1->i时(就是末尾往后移动一位),就遍历匹配的字符串,如果得到的字符串x能配到后缀相等,那么创建k遍历[i-x.length(),i)当以k为结尾的子串可以被取到,并且dp[k]+1∀k∈[i-x.length(),i),dp[k]>-1最小值,那么就令dp[i]=dp[k]+1
记录前缀:采用pre[N],上述如果修改了dp[i]则同步修改pre[i]为k,遍历时跳转i=pre[i]即可

代码

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
#define IOS ios::sync_with_stdio(false), cin.tie(0) ,cout.tie(0)
using namespace std;
#define int long long
const int L = 110;
int dp[L], pre[L], usid[L];

signed main()
{
	IOS;
	int q; cin >> q;
	while (q--)
	{
		string t; cin >> t;
		t = '0' + t;
		int n; cin >> n;
		vector<string>ss;
		memset(dp, 0, sizeof(dp));
		memset(pre, 0, sizeof(pre));
		memset(usid, 0, sizeof(usid));
		for (int i = 1; i <= n; i++) { string s; cin >> s; ss.push_back(s); }
		for (int i = 1; i < t.length(); i++)
		{
			for (int j = 0; j < ss.size(); j++)
			{
				string now = ss[j];
				if (i < now.length())continue;
				if (t.substr(i - now.length() + 1, now.length()) == now)
				{
					for (int k = i - now.length(); k < i; k++)
					{
						if (dp[k] == -1)continue;
						if (dp[i] == 0 or dp[i] > dp[k] + 1)
						{
							dp[i] = dp[k] + 1;
							pre[i] = k;
							usid[i] = j;
						}
					}
				}
			}
			if (dp[i] == 0)dp[i] = -1;
		}
		if (dp[t.length() - 1] != -1)
		{
			cout << dp[t.length() - 1] << '\n';
			int now = t.length() - 1;
			while (now)
			{
				cout << usid[now] + 1 << ' ' << now - ss[usid[now]].length() + 1<<'\n';
				now = pre[now];
			}
		}
		else cout << -1<<'\n';

	}

	return 0;
}

标签:pre,now,Color,int,length,Occurrences,include,dp
From: https://www.cnblogs.com/zzzsacmblog/p/18313284

相关文章

  • 本地部署,Colorizer: 让黑白图像重现色彩的奇迹
    目录引言什么是Colorizer​编辑​编辑Colorizer的特点工作原理应用场景本地部署本地运行实验与结果结语Tip:引言自摄影术发明以来,黑白图像一直是记录历史和艺术创作的重要手段。然而,黑白图像虽然具备其独特的美感,但也失去了色彩信息,使观众难以全面感知图像中......
  • modifing windows color from registry
    WindowsRegistryEditorVersion5.00[HKEY_CURRENT_USER\ControlPanel\Colors]"ActiveBorder"="180180180""ActiveTitle"="153180209""AppWorkspace"="171171171""Background"="......
  • [题解]AT_abc215_g [ABC215G] Colorful Candies 2
    思路定义\(vis_i\)表示数\(i\)在序列中出现的次数。如果我们选出\(k\)个数,答案就是(其中\(m\)表示\(\max(c_i)\)):\[\sum_{i=1}^m\frac{\binom{n}{x}-\binom{n-vis_i}{k}}{\binom{n}{x}}\]显然,我们只枚举序列中存在的元素,时间复杂度\(\Theta(n^2)\),过不......
  • Win11系统提示找不到coloradapterclient.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个coloradapterclient.dll文件(挑选合适的版本......
  • C. Colorful Grid
    原题链接题解1.最小距离是n+m-22.后退多少就要前进多少,所以合法距离一定是偶数3.猜测并验证n+m,n+m+2,n+m+4是否可行4.如果n+m,我可以在终点设一个弯5.如果n+m+2,我可以在起点设一个弯6.两个弯可以组成任意偶数code#include<bits/stdc++.h>usingnamespacestd;intn,m,k;......
  • el-color-picker颜色取色器
    1.取色器基本样式elementUI中取Element-Theworld'smostpopularVueUIframework<el-color-pickerv-model="color1"></el-color-picker>原本样式2.修改样式成圆形::v-deep.el-color-picker{ .el-color-picker__color{ border-radius:50%; bo......
  • ColorEasyDuino上手指南
    介绍ColorEasyDuino是嘉立创推出的一块Aduino开发板(类似物),具有丰富的外设接口:uart、i2c、spi、adc、pwm等;开发板设计参考原型是ArduinoUno,采用的芯片是ATMEGA328P,它的外观设计比较紧凑,把所有的IO都引出供开发者使用,可玩性、可拓展性都特别强,再加上Arduino这个平台具有丰富的开发......
  • 【现代 CSS】标准滚动条控制规范 scrollbar-color 和 scrollbar-width
    Chrome在121版本开始,原生支持了两个滚动条样式相关的样式scrollbar-color和scrollbar-width。要知道,在此前,虽然有::-webkit-scrollbar规范可以控制滚动条,可是,::-webkit-scrollbar是非标准特性,在MDN文档中都明确了不应该在生产环境使用它。MDN-::-webkit-scrollbar......
  • 三、线刷ColorOS
    参考:如何从LineageOS切换到ColorOS1.安装高通驱动从大侠阿木提供的第三方工具集合中下载高通驱动包QDLoaderHS-USBDriver,安装时选择第一项WWW那个即可。检查是否安装成功:安装完成后重启,到“计算机管理”→“设备管理器”中,点击上方“查看”-“显式隐藏设备”,如果能在......
  • WPF button mouseover background change color
    <Applicationx:Class="WpfApp142.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-nam......