ens-ulm-1

google hashcode 2014 source for team ens-ulm-1
git clone https://a3nm.net/git/ens-ulm-1/
Log | Files | Refs

commit bbdab32dfcd6baac68b3e285a35762ef0248c44b
parent 6b5a3888b30edb830f98a3507057d3d5723e1da1
Author: Jachiet Louis <louis@jachiet.com>
Date:   Sat,  5 Apr 2014 15:10:36 +0200

Complete complete

Diffstat:
contest/louis/algo.cpp | 3++-
contest/louis/ameliore.cpp | 17++++++++++++-----
contest/louis/louis.cpp | 6+++---
contest/mc/lecture.cpp | 4++--
4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/contest/louis/algo.cpp b/contest/louis/algo.cpp @@ -22,7 +22,8 @@ int main() // fprintf(stderr,"%d %d %d\n",i,chem[i].back(),arrivee); } } + fprintf(stderr,"%d !\n",score_solution(chem)); ameliore_louis(chem); - //affiche_sortie(chem); + // affiche_sortie(chem); } diff --git a/contest/louis/ameliore.cpp b/contest/louis/ameliore.cpp @@ -1,3 +1,5 @@ +#include <assert.h> + class sol_louis { public: @@ -15,11 +17,15 @@ public: sol_louis(vector<int> c[]) { for(int i = 0 ; i < 8 ; i++ ) - cibles[i] = c[i]; + { + cibles[i] = c[i]; + for(int c = 0 ; c < 100 ; c++ ) + cibles[i].push_back(rand()%n_sommets); + } note(); } - sol_louis(sol_louis & o) + sol_louis(const sol_louis& o) { score = o.score ; for(int i = 0 ; i < 8 ; i++ ) @@ -42,7 +48,7 @@ void ameliore_louis(vector<int> c[]) { sol_louis r_best(c) ; double temp = 1000 * 1000 ; - const int nb_iter_max = 100 ; + const int nb_iter_max = 100*1000 ; //for( int i = 0 ; i < 10 ; i++ ) { temp = 1000 * 1000 ; @@ -53,11 +59,12 @@ void ameliore_louis(vector<int> c[]) while( nb_iter < nb_iter_max ) { - fprintf(stderr,"cur_score %d[%d] | %d | %d \n",cur.score,cur.cibles[0].size(),r_best.score,score_solution(cur.cibles)); + if(nb_iter %200 == 0) + fprintf(stderr,"cur_score %d[%d] | %d | %d \n",cur.score,cur.cibles[0].size(),r_best.score); cur = best; cur.update(); - if( cur.score > best.score || ((double(rand())/RAND_MAX) > (cur.score-best.score) * temp / (1000*1000) )) + if( cur.score > best.score) { best = cur ; if( best.score > r_best.score ) diff --git a/contest/louis/louis.cpp b/contest/louis/louis.cpp @@ -60,14 +60,14 @@ int go_to( int depart, int arrivee) return use[depart][arrivee] ; } */ -vector<int> complete ( vector<int> c) +vector<int> complete ( vector<int> & c) { vector<int> r ; + r.push_back(c[0]); for(size_t i = 0 ; i+1 < c.size() ; i++ ) { - r.push_back(c[i]); while(r.back() != c[i+1]) - r.push_back(use[r.back()][c[i]]); + r.push_back(use[r.back()][c[i+1]]); } return r ; } diff --git a/contest/mc/lecture.cpp b/contest/mc/lecture.cpp @@ -61,12 +61,12 @@ vector<int> evalue_solution(vector<int> trajectoires[]) { pair<int, int> p = make_pair(trajectoires[i][j], trajectoires[i][j+1]); int a = id_arete[p]; if (!a) { - fprintf(stderr,"ERREUR !"); + fprintf(stderr,"ERREUR ! %d %d [%d -> %d]",i,j,trajectoires[i][j], trajectoires[i][j+1]); resultat.clear(); return resultat; } temps += cout[a]; - if (temps > t_autorise) { + if (temps >= t_autorise) { // undo temps -= cout[a]; break;