天梯训练赛

暴力模拟大法好

正整数A+B

好好的题目坑这么多....
看上去挺麻烦的 但只要注意第一个空格 左边为a 右边为b 所有的操作都围绕空格

#include<bits/stdc++.h>

using namespace std;

int main() {
    string s;
    getline(cin, s);
    int len = (int) s.length(), now = 1;
    int a = 0, b = 0;
    int fa = 1, fb = 1, pos;
    for (int i = 0; i < len; ++i) {
        if (s[i] < '0' || s[i] > '9') {
            if (now == 1) {
                fa = 0;
            } else if (now == 2) {
                fb = 0;
                break;
            }
            if (s[i] == ' ' && s[i + 1] <= '9' && s[i + 1] >= '0') {
                pos=i+1;
                now=2;
            }
            if (s[i] == ' ' && (s[i + 1] > '9' || s[i + 1] < '0')) {
                fb=0;
                break;
            }
        } else if (s[i + 1] == ' '&&now==1) {
            if (fa == 1) {
                for (int j = 0; j <= i; ++j) {
                    a = a * 10 + s[j] - '0';
                }
            }
            now = 2;
            if (s[i + 2] < '0' || s[i + 2] > '9') {
                fb = 0;
                break;
            } else {
                pos = i + 2;
            }
            ++i;
        }
    }
    if(fb){
        for(int i=pos;i<len;++i){
            b=b*10+s[i]-'0';
        }
    }
    if(a<1||a>1000) fa=0;
    if(b<1||b>1000) fb=0;
    if(fa&&fb){
        printf("%d + %d = %d",a,b,a+b);
    }else{
        if(!fa){
            printf("? + ");
        }else{
            printf("%d + ",a);
        }
        if(!fb){
            printf("? = ?\n");
        }else{
            printf("%d = ?\n",b);
        }
    }
    return 0;
}

愿天下有情人都是失散多年的兄妹

做到不想说话....十行代码九个坑

#include<bits/stdc++.h>

using namespace std;
const int maxn = 1e4+5;
map<string,int>mp;
int Sex[maxn*3],n;
vector<int>G[maxn*3];
bool val[maxn*3];

void dfs(int pos,int u){
    val[u]=1;

    for(int v:G[u]){
        if(pos+1<=5) dfs(pos+1,v);
    }
}
bool dfs1(int pos,int u){
    if(val[u]==1) return true;
    val[u]=1;
    for(int v:G[u]){
        if(pos+1<=5) {
            if(dfs1(pos + 1, v)){
                return true;
            }
        }
    }
    return false;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n;
    string s,a,b;
    char ch;
    int cnt=0;
    for(int i=1;i<=n;++i){
        cin>>s;
        mp[s]=++cnt;
        cin>>ch;
        if(ch=='M'){
            Sex[cnt]=1;
        }
        cin>>a>>b;
        if(a!="-1"&&!mp[a]){
            mp[a]=++cnt;
            Sex[cnt]=1;//隐藏条件
        }
        if(a!="-1")
        G[mp[s]].push_back(mp[a]);
        if(b!="-1"&&!mp[b]){
            mp[b]=++cnt;
        }
        if(b!="-1")
        G[mp[s]].push_back(mp[b]);
    }
    int k;cin>>k;
    while(k--){
        cin>>a>>b;
        if(Sex[mp[a]]==Sex[mp[b]]){
            puts("Never Mind");
        }else{
            memset(val,0,sizeof(val));
            dfs(1,mp[a]);
            if(dfs1(1,mp[b])){
                puts("No");
            }else{
                puts("Yes");
            }
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/smallocean/p/10527527.html

时间: 2024-11-08 13:38:17

天梯训练赛的相关文章

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分相同,第一部分与第二部分对称. 现在给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法,求出以第i个点为中心的回文串长度,记录到数组p中 要满足题目所要求的内容,需要使得两个相邻的回文串,共享中间的一部分,也就是说,左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也是一样. 因为我们已经记录下来以

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&amp;#39;s problem(manacher+二分/枚举)

pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法.求出以第i个点为中心的回文串长度.记录到数组p中 要满足题目所要求的内容.须要使得两个相邻的回文串,共享中间的一部分,也就是说.左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也

最后一周第二天训练赛之第二题

试题: B - B Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice SPOJ ICODER Description Mathews uses a brand new 16-bit instruction processor. (Yeah i am being sarcastic!). It has one register (say R) and it su

Dream_Chaser队训练赛第一场 I题

Dream_Chaser队训练赛第一场 I题 题目来自2012成都区域赛 I - Count Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4472 Description Prof. Tigris is the head of an archaeological team who is currently in charge of a

2017后期 第 1 场训练赛

题目依次为 NKOJ 上 P3496 P4236 P3774 P2407 1.数三角形 方法很多, 比如推出三边 x y z 的限制关系, 然后加加减减得到计算式子 不过也可以用观察法, 暴力计算出 n 为 1 至 13 对应的结果为: 0 0 0 1 3 7 13 22 34 50 70 95 125 相邻两数差为: 0 0 1 2 4 6 9 12 16 20 25 30 这些相邻两数相邻差又为: 0 1 1 2 2 3 3 4 4 5 5 找到规律了, 如果结果第 i 项为第 i - 1

早晨训练赛第一场 B题 哈希

早晨训练赛第一场 B题 B - Trees in a Row Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 402B Description The Queen of England has n trees growing in a row in her garden. At that, the i-th (1 ≤ i 

zzuli训练赛_05_13-K

题意: 是输入N,2<=N<=100000,求N的质因子个数. 样例输入12 5 30 样例输出2 1 3 提示 12 = 2 * 2 * 3 5 = 5 30 = 2 * 3 * 5 解题思路: 就写个判断质数的函数,循环判断就可以,不过不是质数就加,是不同的质数. 具体代码: #include<iostream> #include<cmath> #include<cstring> using namespace std; bool temp[100000

校队训练赛,同时也是HDU4497(数论:素数分解+组合数学)

一.题目 http://acm.hdu.edu.cn/showproblem.php?pid=4497 二.思路 将满足条件的一组x,z,y都除以G,得到x‘,y',z',满足条件gcd(x',y',x') = 1,同时lcm(x',y',x') = G/L.特判,当G%L != 0 时,无解.然后素数分解G/L,假设G/L = p1^t1 * p2^t2 *````* pn^tn.满足上面条件的x,y,z一定为这样的形式.x' = p1^i1 * p2^i2 *```* pn^in.y' =

训练赛(1---5)D

一.题目 Description Sometimes you have to try fighting even though you know that your enemy is very powerful than you. Your hero with initial health H is about to fight against a venomous enemy who has a poisonous value of P. The enemy's poison deals i*