QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#92358 | #547. BM 算法 | zhoukangyang# | WA | 143ms | 3720kb | C++17 | 1.4kb | 2023-03-30 16:09:45 | 2023-03-30 16:09:46 |
Judging History
This is the latest submission verdict.
- [2024-12-28 21:37:58]
- hack成功,自动添加数据
- (/hack/1317)
- [2023-08-10 23:21:45]
- System Update: QOJ starts to keep a history of the judgings of all the submissions.
- [2023-03-30 16:09:45]
- Submitted
answer
#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define ll long long
#define vi vector < int >
#define sz(a) ((int) (a).size())
#define ll long long
#define ull unsigned long long
#define me(a, x) memset(a, x, sizeof(a))
using namespace std;
const int N = 1e6 + 7, mod = 998244353;
inline int qpow(int x, int y = mod - 2) {
int ret = 1;
for(; y; x = (ll) x * x % mod, y >>= 1) if(y & 1) ret = (ll) ret * x % mod;
return ret;
}
int n, a[N];
int main() {
ios :: sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
L(i, 1, n) {
cin >> a[i];
}
vi ns = vi{1};
vi lst;
int lsp = 0, lsv = 0;
L(i, 1, n) if(sz(ns) <= i) {
int s = 0;
L(j, 0, sz(ns) - 1)
(s += (ll) a[i - j] * ns[j] % mod) %= mod;
if(!s) continue;
auto cur = ns;
if(lsp) {
int buf = (ll) (mod - s) * qpow(lsv) % mod;
if(sz(ns) < sz(lst) + i - lsp) ns.resize(sz(lst) + i - lsp);
L(j, 0, sz(lst) - 1) {
(ns[j + i - lsp] += (ll) lst[j] * buf % mod) %= mod;
}
}
if(!sz(lst) || sz(cur) - i < sz(lst) - lsp) {
lsp = i;
lsv = s;
lst = cur;
}
}
cout << sz(ns) - 1 << '\n';
L(i, 1, sz(ns) - 1)
cout << (mod - ns[i]) % mod << ' ';
// L(i, sz(ns), n) {
// int r = 0;
// L(j, 0, sz(ns) - 1) {
// (r += (ll)ns[j] * a[i - j] % mod) %= mod;
// }
// cout << r << endl;
// }
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 84ms
memory: 3596kb
input:
10000 481761257 325845401 89198273 331256176 423285801 510703206 160079009 805700484 2785453 119847482 4456012 47414124 382685410 463638256 314056646 483110670 723760177 473280072 294639899 965560586 243267953 822936984 475063108 193430844 842374415 125382693 569285769 643640101 548245375 253979925 ...
output:
2774 519996520 676098795 636816471 494383311 88254187 542188011 442632990 847848618 639292958 22724161 734302549 364991396 926096346 988368003 304154451 342281483 623977164 383132553 297361731 782343399 865656753 547123615 620909076 813317753 466953279 371327965 118623130 665641245 786523122 6711004...
result:
ok good job!
Test #2:
score: -100
Wrong Answer
time: 143ms
memory: 3720kb
input:
10000 957725520 854846291 969491053 356250398 691705616 213195336 580768790 67132468 874683049 587263928 159905787 591245052 44365380 800142401 225588361 208452961 739469465 130683730 284272807 107327163 183355931 936856467 6990073 292261808 892473264 530135765 586566900 505038785 964987342 62958872...
output:
5000 47421892 123918176 884034045 310541794 504438185 396741917 510663352 980663723 529573676 812683864 698115172 686340495 18939547 169626505 817639406 78579239 976772034 154995506 810781203 700554705 707629262 792222141 487447954 50106565 678367655 20634724 453212847 55819104 987218943 385428137 8...
result:
wrong answer mismatched on position 5001