D - Double Strings

题目链接:Problem - D - Codeforces

题目大意:给定n个字符串,判断每个字符串能否用其他两个字符串相加而得(两个字符串可以相同)

输出为一个二进制数,1表示第i个字符串可以由其他字符串相加而得,0反之

考虑用STL中的map记录该种字符串是否存在,每次枚举时用substr截取改字符串的前半段和后半段,均存在则输出1,反之输出0

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

#define ll long long

const int N = 200010, M = 200010, INF = 0x3f3f3f3f;
string s[N];
void solve() {
    map <string, bool> mp;
    int n;
    cin >> n;
    for (int i = 1; i <= n; ++ i) {
        cin >> s[i];
        mp[s[i]] = 1;
    }
    for (int i = 1; i <= n; ++ i) {
        bool f = 0;
        for (int j = 1; j < s[i].size(); ++ j) {
            string pres = s[i].substr(0, j), lasts = s[i].substr(j, s[i].size() - j);
            // 截取前半段和后半段,判断是否均出现在 mp 中
            if (mp[pres] && mp[lasts]) {
                f = 1;
                break;
            }
        }
        cout << f ;
    }
    cout << endl;
}
int main(){
	int T = 1;
	cin >> T;
	while (T -- ) 
		solve();
	
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Q21: Which of the following is a valid user-defined output stream manipulator header? a. ostream& tab( ostream& output ) b. ostream tab( ostream output ) c. istream& tab( istream output ) d. void tab( ostream& output ) Q22: What will be output by the following statement? cout << showpoint << setprecision(4) << 11.0 << endl; a. 11 b. 11.0 c. 11.00 d. 11.000 Q23: Which of the following stream manipulators causes an outputted number’s sign to be left justified, its magnitude to be right justified and the center space to be filled with fill characters? a. left b. right c. internal d. showpos Q24: Which of the following statements restores the default fill character? a. cout.defaultFill(); b. cout.fill(); c. cout.fill( 0 ); d. cout.fill( ' ' ); Q25: When the showbase flag is set: a. The base of a number precedes it in brackets. b. Decimal numbers are not output any differently. c. "oct" or "hex" will be displayed in the output stream. d. Octal numbers can appear in one of two ways. Q26: What will be output by the following statements? double x = .0012345; cout << fixed << x << endl; cout << scientific << x << endl; a. 1.234500e-003 0.001235 b. 1.23450e-003 0.00123450 c. .001235 1.234500e-003 d. 0.00123450 1.23450e-003 Q27: Which of the following outputs does not guarantee that the uppercase flag has been set? a. All hexadecimal numbers appear in the form 0X87. b. All numbers written in scientific notation appear the form 6.45E+010. c. All text outputs appear in the form SAMPLE OUTPUT. d. All hexadecimal numbers appear in the form AF6. Q28: Which of the following is not true about bool values and how they're output with the output stream? a. The old style of representing true/false values used -1 to indicate false and 1 to indicate true. b. A bool value outputs as 0 or 1 by default. c. Stream manipulator boolalpha sets the output stream to display bool values as the strings "true" and "false". d. Both boolalpha and noboolalpha are “sticky” settings.
05-24

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值