首页 > 其他分享 >ABC 268 D(无耻)

ABC 268 D(无耻)

时间:2022-09-18 20:55:05浏览次数:64  
标签:tmp begin ABC end int 用户名 无耻 268 Takahashi

image
$ -1 $ 天……

题面

Takahashi 有 $ N $ 个组成他的全名的单词(比如真实世界中,$ N = 2 $ ,字符串是“Naohiro”和“Takahashi”)。这些单词分别是 $ S_1, S_2, S_3, \cdots, S_N $ 。
现在,Takahashi 将把它们随意排列,用下划线组合起来(两个单词之间任意个下划线,创造一个 BBS World 账号。
BBS World 上(在 Takahashi 没来前)有 $ M $ 个用户。他们的用户名分别是 $ T_1, T_2, T_3, \cdots, T_M $ ,所以 Takahashi 的用户名不能和他们一样。另外,用户名的长度应该在 $ 3 $ 到 $ 16 $ 之间。
帮 Takahashi 决定一个用户名。

思路

$ N \le 8 $……
这范围也是没谁了……
全排列吧……


剩下的部分,我们就可以用 $ DFS $ 简单的解决了。
这部分请参照代码。


$ 10^5 $ 一一检查,时间不够咋办?
答案:二分。

代码

#include <bits/stdc++.h>
using namespace std;

int N, M;
vector<string> S, T;

void dfs(int cur, int remain, string ans = "") {
	if (remain < 0) {
		return;
	}
	if (cur == N) {
		if (ans.size() >= 3 && !binary_search(T.begin(), T.end(), ans)) {
			cout << ans;
			exit(0);
		}
		return;
	}
	if (ans.size() && ans.back() != '_') {
		dfs(cur, remain - 1, ans + '_');
	} else {
		dfs(cur + 1, remain, ans + S[cur]);
		if (ans.size()) {
			dfs(cur, remain - 1, ans + '_');
		}
	}
}

int main() {
	cin >> N >> M;
	string tmp;
	int rem = 16;
	for (int i = 0; i < N; i++) {
		cin >> tmp;
		S.push_back(tmp);
		rem -= tmp.size();
	}
	for (int i = 0; i < M; i++) {
		cin >> tmp;
		T.push_back(tmp);
	}
	sort(S.begin(), S.end());
	sort(T.begin(), T.end());
	do {
		dfs(0, rem);
	} while (next_permutation(S.begin(), S.end()));
	cout << -1;
	return 0;
}

不知道大家的初赛 RP 都是多少呢?

double RP = DBL_MAX;

标签:tmp,begin,ABC,end,int,用户名,无耻,268,Takahashi
From: https://www.cnblogs.com/AProblemSolver/p/16705749.html

相关文章

  • AtCoder Beginner Contest 268
    E-ChineseRestaurant(Three-StarVersion)假设旋转\(x\)次时,\(n\)个人失望值的总和为\(c_x\),那么只要能求出\(c_x,0\lex<n\)就可以包含所有情况,然后再取......
  • ABC269
    DContent给你若干个点和相邻点的定义,问你图中有几个连通块。Sol连通用并查集维护,就是这里的相邻有点怪。Code#includeusingnamespacestd;constint_=1005;int......
  • *ABC 236 D - Dance(dfs)
    https://atcoder.jp/contests/abc236/tasks/abc236_d题意:两个两个组队,开心值异或,求最大开心值。注意这句话:IfPersoniandPersonjpairup,whereiissmallertha......
  • ABC267 - C,D Solutions
    目录ABC267-C,DSolutionsC-Index×A(Continuousver.)ProblemStatementSolutionImplementationD-Index×A(NotContinuousver.)ProblemStatementSolutionImp......
  • ARC147F Again ABC String 解题记录
    题意:给定整数\(X,Y,Z\),称一个字符串\(S\)合法,当且仅当:\(|S|=n\)仅由字符\(\texttt{A,B,C}\)构成。对每个\(i\)满足:记\(A_i,B_i,C_i\)表示\(S\)前\(i\)......
  • ABC264 G - String Fair
    DP+最短路+哈希G-StringFair(atcoder.jp)题意给若干个只包含小写字母的长度<=3的字符串\(T_i\),每个字符串有权值构造一个非空字符串S,若S中包含上述子串,则......
  • ABC264 F - Monochromatic Path
    DPF-MonochromaticPath(atcoder.jp)题意在n*m(1<=n,m<=2000)的网格图中,每个格子有0,1两种,有两种操作将第i行元素反转,花费r[i]代价将第j行元素反转,花......
  • ABC #267 C、D、E、F
    C-Index×A(Continuousver.)(atcoder.jp)考虑维护一个长度为m的滑动窗口,滑动窗口从左往右移动的过程中,维护\(\sum_{i=1}^Mi*B_i\)。右端点往后移动一格到位置i,对......
  • 三个稠密矩阵A,B,C的乘积ABC,假设三个矩阵的尺寸分别为mn,np,pq,且m<n<p<q,以下计算顺序
    题目在深度学习中,涉及到大量矩阵相乘,现在需要计算三个稠密矩阵A,B,C的乘积ABC,假设三个矩阵的尺寸分别为mn,np,p*q,且m<n<p<q,以下计算顺序效率最高的是:()a.A(BC)b.(AB)C......
  • ABC261
    IntersectionTournamentResultNewFolder(1)FlippingandBonusManyOperationsSortingColorBallsReplaceGameonGraph......