AT_xmascon22_g.Generator SAT
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个输入文件,每个文件包含 T 组测试用例。每组测试用例给定整数 N,S,请你回答以下问题:
定义整数序列 A0,A1,…,A4N−1,按照如下方式生成。数式和 C++ 伪代码如下所示:
- 令变量 s←S。
- 对于 i=0,1,…,4N−1,依次令 Ai←⌊i/4⌋+1。
- 对于 i=0,1,…,4N−1,依次令 s←(s×2022)mod998244353,如果 s≡0(mod2),则令 Ai←−Ai。
- 对于 i=0,1,…,4N−1,依次令 s←(s×2022)mod998244353,然后交换 Asmod(i+1) 和 Ai 的值。
#include <vector>
std::vector<int> Generate(int N, long long S) {
long long s = S;
std::vector<int> A(4 * N);
for (int i = 0; i < 4 * N; ++i) {
A[i] = i / 4 + 1;
}
for (int i = 0; i < 4 * N; ++i) {
s = (s * 2022) % 998244353;
if (s % 2 != 0) {
A[i] = -A[i];
}
}
for (int i = 0; i < 4 * N; ++i) {
s = (s * 2022) % 998244353;
int j = s % (i + 1);
int t = A[j];
A[j] = A[i];
A[i] = t;
}
return A;
}
在下面 N 个条件中,判断是否存在一种从 2N 种方案中选取 N 个“好的整数”的方式,使得以下每个条件都成立。如果存在这样的方式,请输出其中一组方案:
- 对于每组 A4j,A4j+1,A4j+2,A4j+3(j=0,1,…,N−1),其中至少有一个是“好的整数”。
这里,“好的整数”的选法指:对于每个 j=1,2,…,N,要么选择 +j 是好整数,要么 −j 是好整数(但不能同时选择),总共有 2N 种选法。
请判断是否存在满足上述条件的选法。如果存在,请输出其中一组方案。
输入格式
输入的第一行包含一个整数 T,表示测试用例的组数。接下来有 T 组测试用例,每组测试用例如下格式:
N S
输出格式
对于每组测试用例,输出一行:
若存在满足所有条件的方案,输出一个长度为 N 的字符串,第 j 位为 '+' 表示 +j 是好整数,为 '-' 表示 −j 是好整数。
如果不存在满足条件的方案,输出 0。
输入输出样例
输入#1
2 3 1 4 20221224
输出#1
++- +--+
说明/提示
样例解释 1
对于第 1 组测试用例:
- (A0,A1,A2,A3)=(−3,−3,−2,+3)
- (A4,A5,A6,A7)=(+2,+1,−1,+3)
- (A8,A9,A10,A11)=(+2,+1,−2,+1)
例如,若 +1,+2,−3 被选为好整数,即对应选择 ++-,则所有条件都能满足。
对于第 2 组测试用例:
- (A0,A1,A2,A3)=(+3,−2,+2,−3)
- (A4,A5,A6,A7)=(+4,+1,+3,−1)
- (A8,A9,A10,A11)=(+4,+2,+1,+4)
- (A12,A13,A14,A15)=(−1,−2,−3,−4)
例如,若 +1,−2,−3,+4 被选为好整数,即选择 +--+,则所有条件都能满足。
数据范围
- 1≤T≤10。
- 1≤N≤105。
- 0≤S<998244353。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?