poj3037 解題報告

2021-09-01 12:14:11 字數 1029 閱讀 6571

這道題也是我拿來測板子的
題意:給定乙個r*c(r<=100,c<=100)的矩陣,每個元素表示該點高度,給定初始速度v,當從一點移動到另一點後,速度變為原先的2^(該點高度-移動到的點的高度),花費時間是1/原先高度,求從1,1到r,c的最短時間

題解:可以推出,每個點速度是一樣的,這樣就直接最短路了

#include #include #include #include #include using namespace std ;

const int maxn = 105 ;

const int maxm = maxn * maxn * 20 ;

double inf = 9999999999.0 ;

double eps = 0.000000001 ;

struct type

;type edge[maxm] ;

int val[maxn][maxn] ;

int head[maxn*maxn] ;

int cnt[maxn*maxn] ;

int v , r , c , count ;

bool vis[maxn*maxn] ;

double dis[maxn*maxn] ;

double speed[maxn][maxn] ;

int dx[4] = ;

int dy[4] = ;

void addedge( int start , int end , double length )

double spfa( int start , int n )

}} }

return 0 ;

}int main()

spfa( 0 , r * c ) ;

printf( "%.2f\n" , dis[r * c - 1] ) ;

return 0 ;

}

**搓了點

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...

poj解題報告 2586

這題我是用的貪心演算法,其實不用也可以,列舉也能解決,因為情況不多。因為是每連續5個月必有虧損,而一年只有1 5,2 6,3 7,4 8 8 12共8種情況。現在設盈餘為s,虧損為d,可列出以下幾種情況。ssssdssssdss 4ssssddsssddss 3s 2d ssdddssdddss 2...

poj解題報告 2635

這題特別好理解,就是 坑啊。題意就是給乙個數,這個數是兩個大素數的積,再給出乙個數,如果最小的素數比給的數大,列印good,否則列印bad和最小的素數。這題用的方法是高精度求模 同餘模定理。還有素數打表,把10 6內的素數全部預打表,在求模時則列舉到小於l為止。注意打表不能只打到100w,要保證素數...