QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#637586 | #7005. Rikka with Consistency | tarjen | AC ✓ | 1840ms | 145004kb | C++20 | 2.0kb | 2024-10-13 13:26:27 | 2024-10-13 13:26:29 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long double lf;
lf read(){
int x;cin>>x;return (lf)x;
}
const lf inf =1e9;
lf dis[3000][3000];
struct point {
lf x,y;
};
int equal(lf x,lf y){
return fabs(x-y)<=1e-9;
}
lf dist(point a,point b){
return sqrtl((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
struct kkk{
int x,y;
lf len;
bool operator<(kkk k1)const{
return len>k1.len;
}
};
lf solve()
{
int n;cin>>n;
vector<int> a(n+1);
for(int i=0;i<=n;i++)cin>>a[i];
vector<point>p;
for(int i=0;i<n;i++){
p.push_back(point{(lf)i,(lf)a[i]});
if(a[i]<a[i+1]){
for(int j=a[i]+1;j<a[i+1];j++){
p.push_back(point{(lf)i+(lf)(j-a[i])/((lf)(a[i+1]-a[i])),(lf)j});
}
}
if(a[i]>a[i+1]){
for(int j=a[i]-1;j>a[i+1];j--){
p.push_back(point{(lf)i+(lf)(a[i]-j)/((lf)(a[i]-a[i+1])),(lf)j});
}
}
}
p.push_back(point{(lf)n,(lf)a[n]});
vector<pair<int,int>> vis;
priority_queue<kkk,vector<kkk>> qu;
qu.push(kkk{0,(int)p.size()-1,0.});
while(!qu.empty()){
kkk k1=qu.top();qu.pop();
if(dis[k1.x][k1.y]!=inf)continue;
vis.emplace_back(k1.x,k1.y);
dis[k1.x][k1.y]=k1.len;
for(int i=-1;i<=1;i++){
for(int j=-1;j<=1;j++)if((!(i==0&&j==0))&&(i+k1.x>=0&&i+k1.x<p.size()&&j+k1.y>=0&&j+k1.y<p.size())){
if(equal(p[i+k1.x].y,p[j+k1.y].y)){
qu.push(kkk{i+k1.x,j+k1.y,k1.len+dist(p[k1.x],p[i+k1.x])+dist(p[k1.y],p[k1.y+j])});
}
}
}
}
lf ans=dis[p.size()-1][0];
for(auto [x,y]:vis)dis[x][y]=inf;
return ans;
}
int main()
{
for(int i=0;i<3000;i++){
for(int j=0;j<3000;j++)dis[i][j]=inf;
}
ios::sync_with_stdio(false);
cin.tie(0);
cout<<fixed<<setprecision(10);
int T;cin>>T;while(T--)cout<<solve()<<"\n";
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 25ms
memory: 144460kb
input:
2 4 0 1 1 2 0 4 0 2 1 3 0
output:
12.1289902045 22.3136245686
result:
ok 2 cases
Test #2:
score: 0
Accepted
time: 240ms
memory: 144884kb
input:
500 34 0 12 2 25 18 11 17 7 24 20 19 18 34 26 14 15 11 16 3 19 6 21 34 33 12 6 29 10 27 22 5 7 7 25 0 40 0 18 15 11 15 10 9 26 34 13 35 12 27 36 33 3 7 28 6 24 12 30 38 39 14 14 12 13 24 35 28 35 11 22 19 39 8 6 18 3 0 43 0 25 1 23 21 5 16 36 22 3 31 34 9 3 41 17 11 39 22 0 16 39 15 10 8 33 24 21 20...
output:
1906.0227443439 1873.2359020590 2645.0638835510 541.3343735756 1235.7890705751 1951.6734665821 1213.9245379866 2017.5869647005 312.7644098498 3422.7892270310 138.6143738401 2149.9886075935 1046.3983990275 47.2354965428 2511.3020333589 60.5339378890 87.7918204661 2535.3037067975 13.6251184001 1041.33...
result:
ok 500 cases
Test #3:
score: 0
Accepted
time: 762ms
memory: 144952kb
input:
500 43 0 6 6 1 1 1 6 1 1 5 1 5 6 5 6 1 5 5 6 6 5 5 6 1 5 6 1 6 5 5 5 6 6 6 1 1 6 6 5 1 5 6 1 0 50 0 18 39 18 28 18 18 18 28 47 28 28 48 8 8 39 48 8 39 19 47 19 19 18 48 20 28 28 18 20 20 39 48 8 8 39 48 20 20 20 8 8 18 19 8 8 8 18 8 48 0 43 0 25 29 25 44 32 32 50 50 32 29 44 25 25 25 25 32 44 29 24 ...
output:
252.2065976424 2006.4352817213 1567.0389256057 247.4145601157 2355.1321913974 2039.2389722058 585.4789742390 1706.2900658340 2455.7783261244 1429.6683040297 386.2247435139 2328.3531873156 231.7998168538 1613.9361966964 1209.0836904200 933.4911595684 1443.0473731123 2567.8362512484 1821.0363941722 27...
result:
ok 500 cases
Test #4:
score: 0
Accepted
time: 1840ms
memory: 145004kb
input:
500 42 0 27 22 28 20 31 17 33 14 34 13 35 11 42 8 44 4 49 2 50 1 23 3 47 5 46 7 43 9 41 10 38 12 36 16 32 18 30 19 29 23 23 0 44 0 23 23 27 20 32 18 36 15 38 11 44 8 45 6 47 4 48 3 23 1 50 5 46 7 43 9 42 12 41 13 40 14 37 16 35 17 33 19 31 21 29 22 28 0 48 0 48 3 46 5 44 7 41 9 39 11 37 13 35 15 32 ...
output:
19134.1832142736 24340.1014771662 4598.0135761172 35163.5943454428 19719.4946797070 24330.9798185242 17290.0968115848 31672.4505810901 30612.7890458521 21650.2868919396 26014.0448811735 10391.5615138845 25028.3336779208 36818.6491796774 29255.2609754685 24770.6063188676 17962.4126290372 21344.119291...
result:
ok 500 cases