站外题求助,玄关
  • 板块学术版
  • 楼主Alan1234567890
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/31 10:03
  • 上次更新2024/7/31 11:17:19
查看原帖
站外题求助,玄关
1251404
Alan1234567890楼主2024/7/31 10:03
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    string s[n];
    int vis[n];
    for(int i=0;i<n;i++){
        cin>>s[i];
        vis[i] = (s[i][0] == '!');
    }
    for(int i=0;i<n;i++){
        if(vis[i] == 0){
            for(int j=0;j<n;j++){
                if(s[j][0] != '!' && s[i].substr(1) == s[j]){
                    cout << s[i].substr(1) << endl;
                    return 0;
                }
            }
        }
    }
    cout << "satisfiable" << endl;
    return 0;
}

下面是题目: 【题目描述】 月球上的小 K 在玩一个游戏:她有若干个不同的命题,每一个命题都是一个仅含小写字母的字符串。 她还有若干个陈述,每一个陈述都指出某一个命题的正确与否。现在,她想知道这些陈述是否产生了矛 盾,你可以帮帮她吗? 具体的,每一个陈述形如 S或者!S ,其中 S是一个仅含小写字母的字符串。 S代表命题 S正确, 而!S 代表命题 S错误。 【输入格式】

第一行,一个数n 表示陈述的个数。 接下来n 行,每行一个仅含小写字母的字符串,代表一个命题。 【输出格式】 如果陈述没有矛盾,则输出 satisfiable 。 否则输出产生矛盾,且指出其正确的陈述最早出现的命题。 【样例输入】 6 !d a !a b !c d 【样例输出】 a 【数据规模】

S的长度不超过 10。 对于40% 的数据,n<=50 。 对于100% 的数据,n<2*10^5 。

2024/7/31 10:03
加载中...