QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#618579 | #7005. Rikka with Consistency | hhdhh | AC ✓ | 879ms | 7596kb | C++23 | 2.3kb | 2024-10-07 00:02:46 | 2024-10-07 00:02:47 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define rep(i, a, b) for(int i = (a); i <= (b); i++)
#define per(i, a, b) for(int i = (a); i >= (b); i--)
#define rept(i, a, ne) for(int i = (a); ~i ; i=ne[i])
#define debug(x) cout<<#x<<": "<<x<<endl
#define fi first
#define sec second
mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());
typedef long long LL;
typedef long double LD;
typedef unsigned long long ULL;
typedef vector<int> VI;
typedef pair<int,int>PII;
const int N=50+10;
bool bo[N][N][N];
LD d[N][N][N];
int a[N];
LD pd[N][N];
LD eps=1e-10;
struct A
{
int x,y,h;
LD d;
bool operator<(const A& a)const
{
return d>a.d;
}
};
void ud(priority_queue<A>&q,int x,int y,int h,LD di)
{
if (d[x][y][h]>di)
{
d[x][y][h]=di;
q.push({x,y,h,di});
}
}
void slove()
{
int n;
cin>>n;
rep(i,0,N-1)
rep(j,0,N-1)
rep(k,0,53)
{
bo[i][j][k]=0;
d[i][j][k]=1e18;
}
rep(i,0,n)
cin>>a[i];
a[n+1]=0;
priority_queue<A> q;
d[0][n][0] = 0;
q.push({0,n,0,0});
while (q.size())
{
auto [x,y,h,di] = q.top();
q.pop();
if (bo[x][y][h]) continue;
bo[x][y][h] = 1;
// cout<<x<<' '<<y<<' '<<h<<' '<<di<<endl;
if(x>0&&a[x]==h)
ud(q,x-1,y,h,(a[x-1]==a[x])+di);
if(x<n&&a[x+1]==h)
ud(q,x+1,y,h,(a[x]==a[x+1])+di);
if(y>0&&a[y]==h)
ud(q,x,y-1,h,(a[y-1]==a[y])+di);
if(y<n&&a[y+1]==h)
ud(q,x,y+1,h,(a[y]==a[y+1])+di);
if(h<max(a[x],a[x+1])&&h<max(a[y],a[y+1]))
{
LD nd=pd[a[x]][a[x+1]]+pd[a[y]][a[y+1]];
ud(q,x,y,h+1,nd+di);
}
if(h>min(a[x],a[x+1])&&h>min(a[y],a[y+1]))
{
LD nd=pd[a[x]][a[x+1]]+pd[a[y]][a[y+1]];
ud(q,x,y,h-1,nd+di);
}
}
cout<<d[n][0][0]<<endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout << fixed << setprecision(10);
int t=1;
cin>>t;
rep(i,0,50)
rep(j,0,50)
if(i!=j)
pd[i][j]=sqrtl((i-j)*(i-j)+1)/fabsl(i-j);
while(t--)
{
slove();
}
return 0;
}
//#pragma GCC optimize(2)
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 7572kb
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: 316ms
memory: 7588kb
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: 566ms
memory: 7496kb
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: 879ms
memory: 7596kb
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