Submission #3782302
Source Code Expand
#include<deque> #include<queue> #include<vector> #include<algorithm> #include<iostream> #include<set> #include<cmath> #include<tuple> #include<string> //#include<chrono> #include<functional> #include<iterator> #include<random> #include<list> #include<unordered_set> #include<array> #include<map> #include<iomanip> #include<assert.h> #include<bitset> #include<stack> using namespace std; typedef long long int llint; typedef long double lldo; #define mp make_pair #define mt make_tuple #define pub push_back #define puf push_front #define pob pop_back #define pof pop_front #define fir first #define sec second #define res resize #define ins insert #define era erase /* cout<<setprecision(20); cin.tie(0); ios::sync_with_stdio(false); */ const llint mod=1e9+7; const llint big=2.19e15+1; const long double pai=3.141592653589793238462643383279502884197; const long double eps=1e-15; template <class T,class U>void mineq(T& a,U b){if(a>b){a=b;}} template <class T,class U>void maxeq(T& a,U b){if(a<b){a=b;}} llint gcd(llint a,llint b){if(a%b==0){return b;}else return gcd(b,a%b);} //llint lcm(llint a,llint b){return a/gcd(a,b)*b;} template<class T> void SO(T& ve){sort(ve.begin(),ve.end());} template<class T> void REV(T& ve){reverse(ve.begin(),ve.end());} template<class T>llint LBI(vector<T>&ar,T in){return lower_bound(ar.begin(),ar.end(),in)-ar.begin();} template<class T>llint UBI(vector<T>&ar,T in){return upper_bound(ar.begin(),ar.end(),in)-ar.begin();} int main(void){ //最小全域木を作る、最小全域木でつながった中で任意の配分ができる //二分探索ではなく有理数でも解くことができる //3^n DP しかなくない? cout<<setprecision(20); double dp[32768]; llint i,j,n;cin>>n; double x[15],y[15]; double a[15]; for(i=0;i<(1<<n);i++){dp[i]=big;} for(i=0;i<n;i++){cin>>x[i]>>y[i]>>a[i];dp[1<<i]=0;} //全域木のコストを求める,葉に何かを入れるタイプの探索をする for(int bi=1;bi<(1<<n);bi++){ for(i=0;i<n;i++){ if(!(bi&(1<<i))){continue;} for(j=0;j<n;j++){ if(!(bi&(1<<j))){continue;} if(i==j){continue;} mineq(dp[bi],dp[bi-(1<<j)]+sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))); } } } for(int bi=1;bi<(1<<n);bi++){ double wata=0,mati=0; for(i=0;i<n;i++){if(bi&(1<<i)){wata+=a[i];mati+=1;}} dp[bi]=(wata-dp[bi])/mati; } for(int bi=1;bi<(1<<n);bi++){ for(int Anum=0;Anum<bi;Anum++){ while(-1){ int x=Anum&(~bi); if(x==0){break;} else{Anum+=x;} } int Bnum=bi-Anum; maxeq(dp[bi],min(dp[Anum],dp[Bnum])); } } cout<<dp[(1<<n)-1]<<endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Water Distribution |
User | WA_TLE |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 2693 Byte |
Status | AC |
Exec Time | 68 ms |
Memory | 640 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example0.txt, example1.txt |
All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, example0.txt, example1.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
000.txt | AC | 67 ms | 640 KB |
001.txt | AC | 65 ms | 512 KB |
002.txt | AC | 66 ms | 512 KB |
003.txt | AC | 66 ms | 512 KB |
004.txt | AC | 65 ms | 512 KB |
005.txt | AC | 65 ms | 512 KB |
006.txt | AC | 67 ms | 512 KB |
007.txt | AC | 67 ms | 512 KB |
008.txt | AC | 67 ms | 512 KB |
009.txt | AC | 66 ms | 512 KB |
010.txt | AC | 66 ms | 512 KB |
011.txt | AC | 65 ms | 512 KB |
012.txt | AC | 66 ms | 512 KB |
013.txt | AC | 66 ms | 512 KB |
014.txt | AC | 65 ms | 512 KB |
015.txt | AC | 65 ms | 512 KB |
016.txt | AC | 66 ms | 512 KB |
017.txt | AC | 65 ms | 512 KB |
018.txt | AC | 65 ms | 512 KB |
019.txt | AC | 65 ms | 512 KB |
020.txt | AC | 65 ms | 512 KB |
021.txt | AC | 66 ms | 512 KB |
022.txt | AC | 68 ms | 512 KB |
023.txt | AC | 65 ms | 512 KB |
024.txt | AC | 66 ms | 512 KB |
025.txt | AC | 65 ms | 512 KB |
026.txt | AC | 64 ms | 512 KB |
027.txt | AC | 65 ms | 512 KB |
028.txt | AC | 65 ms | 512 KB |
029.txt | AC | 64 ms | 512 KB |
030.txt | AC | 64 ms | 512 KB |
031.txt | AC | 65 ms | 512 KB |
032.txt | AC | 65 ms | 512 KB |
033.txt | AC | 65 ms | 512 KB |
034.txt | AC | 65 ms | 512 KB |
035.txt | AC | 64 ms | 512 KB |
036.txt | AC | 64 ms | 512 KB |
037.txt | AC | 65 ms | 512 KB |
038.txt | AC | 65 ms | 512 KB |
039.txt | AC | 64 ms | 512 KB |
040.txt | AC | 1 ms | 256 KB |
041.txt | AC | 1 ms | 256 KB |
042.txt | AC | 1 ms | 256 KB |
043.txt | AC | 2 ms | 256 KB |
example0.txt | AC | 1 ms | 256 KB |
example1.txt | AC | 65 ms | 512 KB |