0
1
mirror of https://git.sb/baoshuo/OI-codes.git synced 2024-11-27 16:36:28 +00:00

#1728. 【2022.11.02 联考】字符串还原(friends)

https://sjzezoj.com/submission/63180
This commit is contained in:
Baoshuo Ren 2022-11-02 17:09:09 +08:00
parent 07e69976a1
commit 45b3499a20
Signed by: baoshuo
GPG Key ID: 00CB9680AB29F51A
42 changed files with 206 additions and 0 deletions

83
S2OJ/1728/1728.cpp Normal file
View File

@ -0,0 +1,83 @@
#include <iostream>
#include <string>
#include <unordered_set>
using std::cin;
using std::cout;
const char endl = '\n';
const int N = 2e6 + 5;
class Hash {
private:
unsigned long long hash[N], p[N];
public:
Hash(std::string s = "", int base = 131) {
p[0] = 1;
for (int i = 1; i <= s.size(); i++) {
hash[i] = hash[i - 1] * base + s[i - 1];
p[i] = p[i - 1] * base;
}
}
unsigned long long get(int l, int r) {
return hash[r] - hash[l - 1] * p[r - l + 1];
}
const unsigned long long &operator[](int i) const {
return p[i];
}
};
int main() {
std::ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
std::string u;
cin >> n >> u;
if (n % 2 == 0) {
cout << "NOT POSSIBLE" << endl;
exit(0);
}
Hash hash(u, 131);
int mid = n >> 1;
unsigned long long lst = 0;
std::string ans;
for (int i = 1; i <= n; i++) {
if (i - 1 <= mid) {
if (hash.get(1, i - 1) * hash[mid - i + 1] + hash.get(i + 1, mid + 1) == hash.get(mid + 2, n)) {
if (lst && lst != hash.get(mid + 2, n)) {
cout << "NOT UNIQUE" << endl;
exit(0);
} else if (!lst) {
ans = u.substr(mid + 1, mid);
lst = hash.get(mid + 2, n);
}
}
} else {
if (hash.get(1, mid) == hash.get(mid + 1, i - 1) * hash[n - i] + hash.get(i + 1, n)) {
if (lst && lst != hash.get(1, mid)) {
cout << "NOT UNIQUE" << endl;
exit(0);
} else if (!lst) {
ans = u.substr(0, mid);
lst = hash.get(1, mid);
}
}
}
}
cout << (ans.empty() ? "NOT POSSIBLE" : ans) << endl;
return 0;
}

BIN
S2OJ/1728/data/friends1.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends1.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends10.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends10.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends11.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends11.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends12.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends12.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends13.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends13.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends14.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends14.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends15.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends15.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends16.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends16.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends17.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends17.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends18.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends18.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends19.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends19.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends2.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends2.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends20.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends20.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends3.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends3.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends4.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends4.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends5.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends5.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends6.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends6.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends7.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends7.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends8.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends8.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends9.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/friends9.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
S2OJ/1728/data/problem.conf (Stored with Git LFS) Normal file

Binary file not shown.