zoukankan      html  css  js  c++  java
  • 抗击疫情 从我做起 训练赛三

    C: 组合数

    题目描述
    从 1 到 N 的整数中挑选一些数,组成集合的方案数是可算的。如果加上 M 个限制:某 2 个数不能 同时选又要怎样计算?
    输入
    第一行包含 2 个整数 N 和 M,1≤N≤20,1≤M≤400。
    下面 M 行,每行 2 个不同的整数 a 和 b 表示这 2 个数不能同时选。1≤a,b≤N,有些限制可能出现多次。

    输出
    一个整数。
    样例输入
    【样例1】
    3 2
    1 2
    2 3
    【样例2】
    3 3
    1 2
    1 3
    2 3
    样例输出
    【样例1】
    5
    【样例2】
    4

    #include <bits/stdc++.h>
    
    #define x first
    #define y second
    using namespace std;
    pair<int, int>mp[500];
    int n, m, ans;
    
    signed main(){
        ios::sync_with_stdio(0);
        cin >> n >> m;
        for (int i = 0;i < m; i++) cin >> mp[i].x >> mp[i].y;
        for (int i = 0;i < 1 << n; i++){
            bool flag = true;
            for (int j = 0;j < m; j++){
                if ((i >> (mp[j].x - 1) & 1)&& ((i >> (mp[j].y - 1)) & 1)){
                    flag = false;
                    break;
                }
            }
            ans += flag;
        }
        cout << ans << endl;
        return 0;
    }
    View Code

    D: 单词谜

    题目描述
    有一种英文字谜游戏,一开始创作者选一个称为“根”的单词 R,然后可能多次打乱 R,连接到 R 单 词后面。例如:bbabababb,是根单词 bba,与乱序单词 bab、abb 连接组成。
    字谜参加者要面对一个字符串,找出最短的“根”单词。如果找不到输出-1。

    输入
    第 1 行:长度不超过 100,000 的小写英文字母组成的字符串。
    输出
    最短的根单词(是输入字符串的前缀)。如果找不到根单词,输出-1。
    样例输入
    【样例1】
    aaaa
    【样例2】
    ab
    【样例3】
    bbabab
    样例输出
    【样例1】
    a
    【样例2】
    -1
    【样例3】
    bba

    #include <bits/stdc++.h>
    
    using namespace std;
    string str1, str2, s;
    
    signed main(){
        ios::sync_with_stdio(0);
        cin >> s;
        for (int i = 1;i < s.size(); i++){
    
            if (s.size() % i == 0){
                str1 = "";
                bool flag = 1;
                for (int j = 0;j < i; j++)    str1 += s[j];
                sort(str1.begin(), str1.end());
    
                for (int j = 0;j < s.size(); j += i){
                    str2 = "";
                    for (int k = j;k < j + i; k++)
                        str2 += s[k];
                    sort(str2.begin(), str2.end());
                    if (str2 != str1){
                        flag = 0;
                        break;
                    }
                }
                if (flag){
                    for (int j = 0;j < i; j++)    cout << s[j];
                    return 0;
                }
            }
        }
        cout << "-1" << endl;
        return 0;
    }
    View Code
  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/12301573.html
Copyright © 2011-2022 走看看