Submission #75559365
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define int ll
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
mt19937_64 rng(std::chrono::system_clock::now().time_since_epoch().count());
template<class T>
struct RMQ {
vector<vector<T>> jmp;
RMQ(const vector<T>& V) : jmp(1, V) {
for (int pw = 1, k = 1; pw * 2 <= sz(V); pw *= 2, ++k) {
jmp.emplace_back(sz(V) - pw * 2 + 1);
rep(j,0,sz(jmp[k]))
jmp[k][j] = min(jmp[k - 1][j], jmp[k - 1][j + pw]);
}
}
T query(int a, int b) {
assert(a < b); // or return inf if a == b
int dep = 31 - __builtin_clz(b - a);
return min(jmp[dep][a], jmp[dep][b - (1 << dep)]);
}
};
signed main() {
cin.tie(0)->sync_with_stdio(0);
int t;
cin >> t;
while(t--){
int n;
cin >> n;
vector<int>p(n+1);
vector<int>a(n+1);
vector<pii>arr(n+1);
for(int i = 1; i<=n; i++){
cin >> p[i];
arr[i] = {p[i],i};
}
RMQ rmq(arr);
for(int i = 1; i<=n; i++){
cin >> a[i];
}
auto merge1 = [&](vi a, int v) -> vi {
int n = sz(a);
vi b(n+1,(int)1e18);
for(int i = 0; i<n; i++){
b[i] = min(b[i],a[i]);
b[i+1] = min(b[i+1],a[i] + v);
}
return b;
};
auto merge = [&](vi a, vi b, int v) -> vi {
if(a.empty() && b.empty()) return {0,v};
if(b.empty())return merge1(a,v);
if(a.empty())return merge1(b,v);
int n = sz(a); int m = sz(b);
vi c(n+m,(int)1e18);
for(int i = 0; i<n; i++){
for(int j = 0; j<m; j++){
bool both = (i > 0 && j > 0);
c[i+j +both] = min(c[i+j+both],a[i] + b[j] + v * both);
c[i+j+1] = min(c[i+j+1], a[i] + b[j] + v);
}
}
return c;
};
auto self = [&](auto &&self, int l, int r) -> vi {
if(r <= l){
return {};
}
auto [_,m] = rmq.query(l,r);
vi left = self(self,l,m);
vi right = self(self,m+1,r);
return merge(left,right,a[m]);
};
vi res = self(self,1,n+1);
for(int i = 1; i<=n; i++){
cout << res[i] << " \n"[i==n];
}
}
return 0;
}
Submission Info
| Submission Time |
|
| Task |
F - Set |
| User |
kevinyang |
| Language |
C++23 (GCC 15.2.0) |
| Score |
4 |
| Code Size |
2665 Byte |
| Status |
AC |
| Exec Time |
17 ms |
| Memory |
4900 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
4 / 4 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt |
| All |
00_sample_00.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3492 KiB |
| 01_random_00.txt |
AC |
2 ms |
3508 KiB |
| 01_random_01.txt |
AC |
2 ms |
3648 KiB |
| 01_random_02.txt |
AC |
2 ms |
3460 KiB |
| 01_random_03.txt |
AC |
2 ms |
3612 KiB |
| 01_random_04.txt |
AC |
2 ms |
3624 KiB |
| 01_random_05.txt |
AC |
2 ms |
3624 KiB |
| 01_random_06.txt |
AC |
5 ms |
3904 KiB |
| 01_random_07.txt |
AC |
16 ms |
4900 KiB |
| 01_random_08.txt |
AC |
16 ms |
4800 KiB |
| 01_random_09.txt |
AC |
17 ms |
4776 KiB |