QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#128687 | #6406. Stage Clear | Energy_is_not_over | WA | 65ms | 16836kb | C++17 | 3.5kb | 2023-07-21 14:54:49 | 2023-07-21 15:05:08 |
Judging History
answer
//
// Created by Barichek on 21.07.2023 09:32:09
//
#include <bits/stdc++.h>
#define F first
#define S second
#define MP make_pair
#define PB push_back
#define all(a) a.begin(), a.end()
#define len(a) (int) (a.size())
#define mp make_pair
#define pb push_back
#define fir first
#define sec second
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef long double ld;
#ifdef Energy_is_not_over
#define DEBUG for (bool ____DEBUG = true; ____DEBUG; ____DEBUG = false)
#define LOG(...) print(#__VA_ARGS__" ::", __VA_ARGS__) << endl
template<class ...Ts>
auto &print(Ts ...ts) { return ((cerr << ts << " "), ...); }
#else
#define DEBUG while (false)
#define LOG(...)
#endif
const int max_n = -1, inf = 1000111222;
inline bool get_bit(int mask,int bit)
{
return (mask>>bit)&1;
}
const int N=36;
const int K=26;
ll sum_d_left[1ll<<(N-N/2)];
ll sum_d_right[1ll<<(N/2)];
ll dp[1ll<<K];
ll a[N];
ll d[N];
int e[N];
int rev_e[N];
const int gen_test=0;
int main() {
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,m;
if (gen_test==1){
const ll M=1e15;
mt19937_64 gen64(474747);
n=K;
m=72-K;
for (int i=1;i<n;i++){
ll aa,bb;
aa=gen64()%M+1;
bb=gen64()%M+1;
a[i]=aa;
d[i]=bb-aa;
}
for (int i=0;i<m;i++){
int u,v;
if (i<n-1){
u=i;
v=i+1;
}
else{
do{
u=gen64()%n;
v=gen64()%n;
}
while (u>=v);
}
e[u]|=(1ll<<v);
rev_e[v]|=(1ll<<u);
}
}
else{
cin>>n>>m;
for (int i=1;i<n;i++){
ll aa,bb;
cin>>aa>>bb;
a[i]=aa;
d[i]=bb-aa;
}
for (int i=0;i<m;i++){
int u,v;
cin>>u>>v;
u--;
v--;
e[u]|=(1ll<<v);
rev_e[v]|=(1ll<<u);
}
}
assert(n<=N);
if (n<=K){
for (int mask=0;mask<(1ll<<(N/2));mask++){
for (int i=0;i<(N/2);i++){
if (get_bit(mask,i)){
sum_d_right[mask]=sum_d_right[mask^(1ll<<i)]+d[i];
break;
}
}
}
for (int mask=0;mask<(1ll<<(N-N/2));mask++){
for (int i=0;i<(N-N/2);i++){
if (get_bit(mask,i)){
sum_d_left[mask]=sum_d_left[mask^(1ll<<i)]+d[N/2+i];
break;
}
}
}
for (int mask=0;mask<(1ll<<n);mask++){
dp[mask]=-1e18;
}
dp[(1ll<<0)]=0;
for (int mask=0;mask<(1ll<<n);mask++){
ll cur_sum_d = sum_d_right[mask&((1ll<<(N/2))-1)] + (n<=(N/2)?0:sum_d_right[(mask&(((1ll<<n)-1)-((1ll<<(N/2))-1)))>>(N/2)]);
for (int i=0;i<n;i++){
if (!get_bit(mask,i) && (rev_e[i]&mask)!=0){
LOG("upd",bitset<10>(mask),i,dp[mask],cur_sum_d-a[i]);
dp[mask^(1ll<<i)]=max(dp[mask^(1ll<<i)],min(dp[mask],cur_sum_d-a[i]));
}
}
}
cout<<-dp[(1ll<<n)-1]<<"\n";
}
else{
assert(0);
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 3ms
memory: 7576kb
input:
4 4 4 2 5 3 2 6 1 2 1 3 2 4 3 4
output:
4
result:
ok 1 number(s): "4"
Test #2:
score: 0
Accepted
time: 5ms
memory: 7780kb
input:
15 14 254040392438309 117083115436273 500005748229691 557255157630172 821034233718230 865199673774998 659892147898798 987564141425694 81172575487567 811635577877255 751768357864605 341103322647288 454926350150218 140191090713900 921608121471585 659295670987251 223751724062143 505619245326640 8907765...
output:
1665396301509143
result:
ok 1 number(s): "1665396301509143"
Test #3:
score: 0
Accepted
time: 16ms
memory: 11328kb
input:
18 17 636830992776530 847574431876821 330869946457865 78274534165482 450581372553540 11565219334965 8736347226844 17186323694285 870805093198860 559070167736042 674369178493171 930151818400874 641605209598997 222521062460239 450936030349531 469197172169023 831295459816974 626096008793091 53095460351...
output:
2375957544280218
result:
ok 1 number(s): "2375957544280218"
Test #4:
score: -100
Wrong Answer
time: 65ms
memory: 16836kb
input:
20 19 539893468691183 767805205447882 240338186903141 960937349402327 942645580569365 896509929612645 542601575005817 191461109090531 540992546866047 765080044816119 904535155855114 858111921213175 452499200048240 115895143306864 983856946412026 838504718536099 586421298181479 265212699386882 677124...
output:
539893468691183
result:
wrong answer 1st numbers differ - expected: '800919806038419', found: '539893468691183'