F题题解

逻辑大师

https://ac.nowcoder.com/acm/contest/76691/F

F题目题解

注意:每题只能选择一个选项,正确答案要保证这组解满足所有题目的限制条件。

对于一道题目可能会存在多个答案符合条件,但是我们只能选择一个。

对于最终的正确答案一定保证同时满足十个题目的限制条件。

因此此题非人力可为,只能用机器采取暴力搜索的办法。

暴力搜索十个题目的答案,时间复杂度为O(4^10)。

#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define PII pair<int, int>
#define int long long
const int N = 1e6 + 10;
const int INF = 1e18;
vector<int> ans;
int book[5];
bool ans2() {
    if (ans[2] == 1 && ans[5] == 3) return true;
    if (ans[2] == 2 && ans[5] == 4) return true;
    if (ans[2] == 3 && ans[5] == 1) return true;
    if (ans[2] == 4 && ans[5] == 2) return true;
    return false;
}
bool ans3() {
    if (ans[3] == 1 && ans[3] - ans[6] && ans[3] - ans[2] && ans[3] - ans[4])
        return true;
    if (ans[3] == 2 && ans[6] - ans[3] && ans[6] - ans[2] && ans[6] - ans[4])
        return true;
    if (ans[3] == 3 && ans[2] - ans[3] && ans[2] - ans[6] && ans[2] - ans[4])
        return true;
    if (ans[3] == 4 && ans[4] - ans[3] && ans[4] - ans[6] && ans[4] - ans[2])
        return true;
    return false;
}
bool ans4() {
    if (ans[4] == 1 && ans[1] == ans[5]) return true;
    if (ans[4] == 2 && ans[2] == ans[7]) return true;
    if (ans[4] == 3 && ans[1] == ans[9]) return true;
    if (ans[4] == 4 && ans[6] == ans[10]) return true;
    return false;
}
bool ans5() {
    if (ans[5] == 1 && ans[8] == 1) return true;
    if (ans[5] == 2 && ans[4] == 2) return true;
    if (ans[5] == 3 && ans[9] == 3) return true;
    if (ans[5] == 4 && ans[7] == 4) return true;
    return false;
}
bool ans6() {
    if (ans[6] == 1 && ans[8] == ans[2] && ans[8] == ans[4]) return true;
    if (ans[6] == 2 && ans[8] == ans[1] && ans[8] == ans[6]) return true;
    if (ans[6] == 3 && ans[8] == ans[3] && ans[8] == ans[10]) return true;
    if (ans[6] == 4 && ans[8] == ans[5] && ans[8] == ans[9]) return true;
    return false;
}
bool ans7() {
    int mi = min({book[1], book[2], book[3], book[4]});
    if (ans[7] == 1 && book[3] == mi) return true;
    if (ans[7] == 2 && book[2] == mi) return true;
    if (ans[7] == 3 && book[1] == mi) return true;
    if (ans[7] == 4 && book[4] == mi) return true;
    return false;
}
bool ans9() {
    int da = (ans[1] == ans[6]);
    if (ans[9] == 1) {
        int da1 = (ans[6] == ans[5]);
        if (da1 - da) return true;
    }
    if (ans[9] == 2) {
        int da1 = (ans[10] == ans[5]);
        if (da1 - da) return true;
    }
    if (ans[9] == 3) {
        int da1 = (ans[2] == ans[5]);
        if (da1 - da) return true;
    }
    if (ans[9] == 4) {
        int da1 = (ans[9] == ans[5]);
        if (da1 - da) return true;
    }
    return false;
}
bool ans10() {
    int cha = max({book[1], book[2], book[3], book[4]}) -
        min({book[1], book[2], book[3], book[4]});
    if (ans[10] == 1 && cha == 2) return true;
    if (ans[10] == 2 && cha == 4) return true;
    if (ans[10] == 3 && cha == 3) return true;
    if (ans[10] == 4 && cha == 1) return true;
    return false;
}
void dfs() {
    if (ans.size() == 11) {
        if (ans2() && ans3() && ans4() && ans5() && ans6() && ans7() && ans9() &&
            ans10()) {
            for (int i = 1; i < ans.size(); i++) cout << char('A' + ans[i] - 1);
            cout << endl;
        }
        return;
    }
    for (int i = 1; i <= 4; i++) {
        ans.push_back(i);
        book[i]++;
        dfs();
        book[i]--;
        ans.pop_back();
    }
}
void solve() {
    ans.push_back(10);
    dfs();
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T = 1;
    //	cin>>T;
    while (T--) solve();
    return 0;
}

全部评论

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点???&nbsp;还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力…………&nbsp;感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务