poj解題報告 3258

2021-06-28 15:31:11 字數 667 閱讀 1841

題意:一些石頭排成一條線,第乙個和最後乙個不能去掉,其餘的共可以去掉m塊,要使去掉後石頭間距的最小值最大。

這種數學題理解起來真不容易,不過想好了演算法就好做了。

**如下

#include#includeint a[50005];

int b[50005];

int cmp(const void *a,const void *b)

void main()

{ int i,l,n,m,high,low,mid,count;

while(scanf("%d%d%d",&l,&n,&m)!=eof)

{ for(i=1;i<=n;i++)

scanf("%d",&a[i]);

qsort(&a[1],n,sizeof(int),cmp);

a[n+1]=l;a[0]=0;

for(i=n+1;i>=1;i--)

a[i]=a[i]-a[i-1];

high=l;

low=0;

while(low<=high)

{ count=0;

mid=(low+high)/2;

for(i=1;i<=n+1;i++)

b[i]=a[i];

for(i=1;i<=n;i++)

if(b[i]

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,要保證素數...