QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#624255 | #5540. City Hall | Oldera | WA | 223ms | 30684kb | C++17 | 5.6kb | 2024-10-09 15:21:21 | 2024-10-09 15:21:21 |
Judging History
answer
#pragma GCC optimize ("O3")
//#incluse <bits/stdc++.h>
#include <iostream> // Input/output stream objects
#include <fstream> // File stream objects
#include <sstream> // String stream objects
#include <iomanip> // Input/output manipulators
#include <string> // String class and functions
#include <vector> // Dynamic array
#include <list> // Doubly linked list
#include <set> // Set container
#include <map> // Map container
#include <queue> // Queue container
#include <stack> // Stack container
#include <algorithm> // Algorithms on sequences (e.g., sort, find)
#include <cmath> // Mathematical functions
#include <ctime> // Date and time functions
#include <cstdlib> // General purpose functions (e.g., memory management)
#include <cstring> // C-style string functions
#include <cctype> // Character classification functions
#include <cassert> // Assert function for debugging
#include <exception> // Standard exceptions
#include <functional> // Function objects
#include <iterator> // Iterator classes
#include <limits> // Numeric limits
#include <locale> // Localization and internationalization
#include <numeric> // Numeric operations (e.g., accumulate)
#include <random> // Random number generators
#include <stdexcept> // Standard exception classes
#include <typeinfo> // Runtime type information
#include <utility> // Utility components (e.g., std::pair)
#include <tuple>
#include <cstdio>
#include <bitset>
using namespace std;
// ************ Setting up ************
#define FPTU ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define BUG(x) {cerr << #x << " = " << x << endl;}
#define pii pair<int,int>
#define pip pair<int,pii>
#define ppi pair<pii,int>
#define ll long long
#define ull unsigned long long
#define usi unsigned int
#define pll pair<ll,ll>
#define plp pair<ll,pll>
#define ppl pair<pll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define oo 1000111000
#define ooo 1000111000111000111
#define inf 0x3f //4557430888798830399
#define fi first
#define se second
#define vt vector
#define pb push_back
#define all(arr) arr.begin(),arr.end()
#define bit(n, i) (((n) >> (i)) & 1)
#define db(x) cerr << #x << " = " << (x) << '\n';
ll rand_num(ll a,ll b) {
random_device rd; mt19937 mt(rd()); uniform_int_distribution<ll> dist(a,b);
return dist(mt);
}
int mod=1e9+7; // MODDDDDDDDDDDDD
template <typename T> void minimize(T &a, T b){ if(a>b) a=b; }
template <typename T> void maximize(T &a, T b){ if(a<b) a=b; }
template <typename T> void add(T &a, T b){ a+=b; if(a>=mod) a-=mod; }
template <typename T> T gcd(T a, T b){
while(a!=0&&b!=0) if(a>b) a%=b; else b%=a; return a+b; }
void read_file()
{
freopen("sample.inp","r",stdin);
freopen("sample.out","w",stdout);
}
// =========> <3 VietHai1709 <3 <=========
struct line{
ll a,b;
line(ll x=0,ll y=ooo)
{
a=x; b=y;
}
ll get(ll x)
{
return a*x+b;
}
};
struct ConvextHullTrick{
int n;
int flag;
vt<line> Line;
ConvextHullTrick(){
n=0;
flag=0;
Line.clear();
}
bool bad(line u,line v,line w)
{
return (double)(u.b-w.b)/(w.a-u.a)<=(double)(u.b-v.b)/(v.a-u.a);
//return (u.b-w.b)*(v.m-u.m)<=(u.b-v.b)*(w.m-u.m);
}
void add(line L)
{
while(n>=2 && bad(Line[n-2],Line[n-1],L))
{
Line.pop_back();
n--;
}
Line.pb(L);
n++;
}
ll query(ll x)
{
if(flag>n-1) flag=n-1;
while(flag+1<n && Line[flag].get(x)>Line[flag+1].get(x)) flag++;
return Line[flag].get(x);
}
};
void Dijktra(int st,vt<vt<pair<int,ll>>> Edge, vt<ll> &dis)
{
dis[st]=0;
priority_queue<pli,vt<pli>,greater<pli>> pq;
pq.push({0,st});
while(!pq.empty())
{
pli k=pq.top(); pq.pop();
int u = k.se;
ll w = k.fi;
if (w > dis[u]) continue;
for(auto &[v,x]: Edge[u]) {
if (dis[v] > w + x) {
dis[v] = x + w;
pq.push({dis[v], v});
}
}
}
}
ll dis(ll a,ll b){
return (a-b)*(a-b);
}
bool cmp(pair<int,ll> &a, pair<int,ll> &b){
return a.se<b.se;
}
void Minnnnnnn()
{
int n,m,s,t;
cin>>n>>m>>s>>t;
vt<ll> h(n+1);
for(int i=1;i<=n;i++) cin>>h[i];
vt<vt<pair<int,ll>> > ke(n+1);
while(m--){
int u,v;
cin>>u>>v;
ll w=dis(h[u],h[v]);
ke[u].pb({v,w});
ke[v].pb({u,w});
}
vt<ll> F(n+1,ooo);
vt<ll> G(n+1,ooo);
Dijktra(s, ke, F);
Dijktra(t, ke, G);
ll ans=ooo;
for(auto &[u,_]:ke[s]) ans=min(ans,G[u]*2);
for(auto &[u,_]:ke[t]) ans=min(ans,F[u]*2);
//cout<<setprecision(2)<<fixed<<ans/2.0<<'\n';
for(int i=1;i<=n;i++) if(i!=s && i!=t){
ConvextHullTrick myCHT;
vt<pll> a;
for(auto &[u,_]:ke[i]){
a.pb({h[u]*-2, h[u]*h[u] + G[u]*2});
}
sort(all(a)); reverse(all(a));
for(auto [x,y]:a) myCHT.add(line(x,y));
for(auto &[u,_]:ke[i]){
ans=min(ans, F[u]*2+h[u]*h[u]+myCHT.query(h[u]));
}
}
cout<<setprecision(2)<<fixed<<ans/2.0;
}
int main(){
FPTU; //fast
//read_file();
int __=1;
//cin>>__;
for(int _=1;_<=__;_++)
{
Minnnnnnn();
}
cerr << "Time elapsed: " << TIME << " s.\n";
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 4056kb
input:
5 6 1 3 5 100 8 2 10 1 2 2 3 2 5 1 4 4 5 3 5
output:
4.50
result:
ok found '4.5000000', expected '4.5000000', error '0.0000000'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3908kb
input:
5 5 1 5 1 2 10 10 4 1 2 2 3 2 4 3 5 4 5
output:
3.00
result:
ok found '3.0000000', expected '3.0000000', error '0.0000000'
Test #3:
score: 0
Accepted
time: 0ms
memory: 4124kb
input:
5 4 1 4 8 8 8 8 100 1 2 2 3 3 4 4 5
output:
0.00
result:
ok found '0.0000000', expected '0.0000000', error '-0.0000000'
Test #4:
score: 0
Accepted
time: 0ms
memory: 4064kb
input:
2 1 1 2 0 100000 1 2
output:
0.00
result:
ok found '0.0000000', expected '0.0000000', error '-0.0000000'
Test #5:
score: 0
Accepted
time: 74ms
memory: 26204kb
input:
632 199396 167 549 22513 93521 41403 35441 97617 53210 62622 4751 81863 14470 2994 93092 40432 30872 34423 36577 92540 92961 4110 14691 83321 10680 89112 80890 31108 24492 8973 42636 33792 27400 82361 85003 68940 31221 48625 276 52755 6649 34381 54399 6063 22628 17715 54052 58175 86609 82622 29917 9...
output:
0.00
result:
ok found '0.0000000', expected '0.0000000', error '-0.0000000'
Test #6:
score: 0
Accepted
time: 75ms
memory: 21976kb
input:
600 179700 396 574 83219 94660 9266 1939 32637 7117 33396 76947 42614 41001 87026 60210 25868 36044 35276 6147 36198 25195 50981 68230 32619 62563 28509 46643 43304 36195 99724 30903 77230 57923 36939 81397 17374 90947 48623 38120 48914 96481 98146 31707 9427 58735 82986 31328 94507 69081 51908 4188...
output:
0.00
result:
ok found '0.0000000', expected '0.0000000', error '-0.0000000'
Test #7:
score: 0
Accepted
time: 203ms
memory: 29596kb
input:
100000 200000 66364 98254 48399 8344 35365 18555 95271 13113 75220 25062 73969 71647 58212 68205 36310 45496 6965 59960 71592 81323 44341 95796 61521 63298 77830 16145 73103 83477 85246 53680 67289 68475 64978 43576 18969 28023 22848 55164 31276 12825 70999 49142 77203 40134 88148 59337 2357 70519 8...
output:
1019365473.00
result:
ok found '1019365473.0000000', expected '1019365473.0000000', error '0.0000000'
Test #8:
score: 0
Accepted
time: 195ms
memory: 30556kb
input:
100000 200000 21412 38673 24050 75090 3692 20770 26840 57646 61096 3013 66291 73437 83126 67768 92979 69169 9389 70447 17151 74737 33407 3128 78504 52736 45853 27090 64395 24808 83577 24168 38576 37445 71022 40066 34908 90579 58370 31436 69812 39811 83370 50254 6518 72740 79316 67247 22759 65630 564...
output:
0.00
result:
ok found '0.0000000', expected '0.0000000', error '-0.0000000'
Test #9:
score: 0
Accepted
time: 199ms
memory: 30560kb
input:
100000 200000 75283 45047 38593 5224 81049 28255 11324 43744 51172 60916 67783 62336 96782 50029 48743 18780 32756 4774 32484 95733 17336 38046 98145 49655 68352 58308 21594 64540 11719 57827 30130 70076 95133 29886 93864 22677 28498 60413 44567 78935 64952 88954 85786 34019 75159 69192 15108 54645 ...
output:
6010044.50
result:
ok found '6010044.5000000', expected '6010044.5000000', error '0.0000000'
Test #10:
score: 0
Accepted
time: 209ms
memory: 29876kb
input:
100000 200000 50293 63302 78731 76313 68601 46867 82806 57914 88495 43602 96202 44956 6593 96560 38650 61918 69911 48730 38668 8874 44449 25084 68496 18095 74789 52252 36631 68127 37908 63134 61923 68030 83186 81174 68083 78584 33622 74426 34099 32484 80162 10371 55894 65989 6374 76587 87442 50870 3...
output:
1926329544.00
result:
ok found '1926329544.0000000', expected '1926329544.0000000', error '0.0000000'
Test #11:
score: 0
Accepted
time: 223ms
memory: 30684kb
input:
100000 200000 81105 2350 9856 14867 98102 45742 76449 20173 90566 85519 8273 40573 98784 21094 38040 75579 21248 37555 32846 95358 92476 76093 99209 81806 76912 80248 93022 87883 85938 20897 20561 19811 59752 42986 36831 82149 73443 66562 96573 52522 68268 28832 46601 39663 61155 69950 13823 36697 9...
output:
1746699958.00
result:
ok found '1746699958.0000000', expected '1746699958.0000000', error '0.0000000'
Test #12:
score: 0
Accepted
time: 117ms
memory: 20212kb
input:
100000 99999 27499 37224 50619 546 34928 55892 95127 83241 56167 1411 64361 65091 69529 50805 18412 47138 24827 35822 53959 16642 73725 69209 23403 82125 61003 92477 62663 85774 63819 6812 16133 1840 57576 82545 80082 56754 8563 84660 57303 4822 32294 74865 59555 75395 7723 97981 7648 7614 39995 373...
output:
1479019958.00
result:
ok found '1479019958.0000000', expected '1479019958.0000000', error '0.0000000'
Test #13:
score: 0
Accepted
time: 92ms
memory: 23324kb
input:
100000 99999 57731 17782 55279 41436 80902 80600 52243 45703 2077 49134 70618 42937 43184 28403 94643 67960 79090 32887 25781 5974 92239 19915 75711 29995 69433 77210 10715 1476 69243 17422 48392 62130 70202 86152 46473 68342 55024 12135 59955 12466 35433 70410 30778 17201 73299 49206 22581 40598 68...
output:
0.00
result:
ok found '0.0000000', expected '0.0000000', error '-0.0000000'
Test #14:
score: 0
Accepted
time: 108ms
memory: 23268kb
input:
100000 99999 73910 93392 4580 92394 65741 34067 1188 10312 33818 93538 87742 1111 15249 59319 21489 41536 67159 80368 70337 71510 11825 37146 18247 31165 85234 45308 15731 10225 14274 82315 1863 67625 34018 45831 689 40731 74176 34334 70252 97644 93344 19553 54498 92189 83921 76131 84274 23497 64458...
output:
3378244.00
result:
ok found '3378244.0000000', expected '3378244.0000000', error '0.0000000'
Test #15:
score: -100
Wrong Answer
time: 1ms
memory: 3912kb
input:
100 183 81 44 0 0 0 4 8 4 0 0 0 0 4 4 4 4 0 4 4 0 4 0 4 0 0 6 4 0 0 0 4 4 4 4 4 4 0 0 0 5 0 2 4 0 0 6 4 6 4 4 0 4 4 4 0 4 0 4 0 4 0 0 0 7 0 0 0 0 4 4 4 4 0 0 4 0 0 4 0 4 0 0 0 0 0 0 4 0 4 0 4 4 0 0 3 0 1 1 0 0 7 4 66 97 46 99 7 64 87 90 3 66 25 64 64 68 64 72 67 87 26 66 5 62 52 87 8 64 33 87 73 87 ...
output:
14.00
result:
wrong answer 1st numbers differ - expected: '13.5000000', found: '14.0000000', error = '0.0370370'