QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#536104 | #7753. Energy Distribution | kkkgjyismine4 | WA | 0ms | 3936kb | C++23 | 1.3kb | 2024-08-28 18:34:34 | 2024-08-28 18:34:35 |
Judging History
answer
#include<bits/stdc++.h>
#define db double
#define N 20
using namespace std;
const db eps=1e-15;
int n,m;
db w[N][N],w1[N<<2][N],x[N];
db calc(){
if(m<n)return 0;
for(int i=1;i<=n;++i){
int id=-1;
for(int k=i;k<=m;++k)if(fabs(w1[k][i])>eps)id=k;
if(id==-1)return 0;
if(id!=i)swap(w1[i],w1[id]);
for(int k=i+1;k<=m;++k){
db v=w1[k][i]/w1[i][i];
for(int j=i;j<=n+1;++j)w1[k][j]-=v*w1[i][j];
}
}
for(int i=n;i>=1;--i){
x[i]=w1[i][n+1]/w1[i][i];
for(int j=i-1;j>=1;--j)w1[j][n+1]-=w1[j][i]*x[i],w1[j][i]=0;
if(x[i]<-eps)return 0;
}
for(int i=1;i<=m;++i){
db s=0;
for(int j=1;j<=n;++j)s+=w1[i][j]*x[j];
if(fabs(s-w1[i][n+1])>eps)return 0;
}
db ret=0;
for(int i=1;i<=n;++i)
for(int j=i+1;j<=n;++j)ret+=w[i][j]*x[i]*x[j];
return ret;
}
int main(){
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)cin>>w[i][j];
db ret=0;
for(int Mask=0;Mask<(1<<n);++Mask){
for(int i=1;i<=m;++i)
for(int j=1;j<=n+1;++j)w1[i][j]=0;
m=0;
for(int i=1;i<n;++i){
++m;
for(int k=1;k<=n;++k)w1[m][k]=w[k][i]-w[k][i+1];
w1[m][n+1]=0;
}
++m;
for(int i=1;i<=n+1;++i)w1[m][i]=1;
for(int i=1;i<=n;++i)
if((Mask>>i-1)&1){
++m;
for(int j=1;j<=n+1;++j)w1[m][j]=0;
w1[m][i]=1;
}
ret=max(ret,calc());
}printf("%.10lf\n",ret);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3820kb
input:
2 0 1 1 0
output:
0.2500000000
result:
ok found '0.2500000', expected '0.2500000', error '0.0000000'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3728kb
input:
3 0 2 1 2 0 2 1 2 0
output:
0.5714285714
result:
ok found '0.5714286', expected '0.5714290', error '0.0000004'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3936kb
input:
3 0 1 2 1 0 1 2 1 0
output:
0.5000000000
result:
ok found '0.5000000', expected '0.5000000', error '0.0000000'
Test #4:
score: -100
Wrong Answer
time: 0ms
memory: 3816kb
input:
4 0 3 1 0 3 0 1 0 1 1 0 2 0 0 2 0
output:
0.4285714286
result:
wrong answer 1st numbers differ - expected: '0.7500000', found: '0.4285714', error = '0.3214286'