青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0

這是一道NOIp07年的原題,題目本身并不難。

題目看上去很熟悉,第一次看完題目后往貪心的方面去想的,設計了兩種貪心策略:1、每次從兩端選取最小的數字;2、從后向前倒推,使最后一次取到的數字最大。兩種貪心是不同的,而且都是錯的,競賽原題中給的樣例數據都過不去。但是如果不會DP的話,感覺上第二種貪心更易導致最優解(只是感覺)。

動態規劃:分析出實際上行與行之間是互不影響的,就是說對每行的決策可以單獨進行。給定一個區間[i,j],每次可能的決策是選擇a[i]或者a[j],這樣一個區間被分成了更小的一部分,考慮動態規劃。容易寫出狀態轉移方程:d[i][j]=max(d[i+1][j]+w[i],d[i][j-1]+w[j]),其中w[i]可以很容易推出來,不再給出。

此題需要注意的地方:1、需要預處理2^n,因為要被多次用到;2、要用高精度,高精度一般用得比較少,一開始我是把高精度結果按返回值處理,出了錯;后來改成傳記錄結果的地址,在高精度函數中直接修改數值,第8、9兩個點超時;分析了原因之后,發現是高精度時傳遞加數和乘數耗了太多時,就把加數、乘數、結果全部地址傳遞,vijos上全部數據9ms。導致我對于一直沒有太多注意的高精度感慨萬千。

以下是我的代碼:

#include<stdio.h>
#define size 81
#define max(a,b) (a>b?a:b)
typedef 
struct
{
    
int len;
    
long s[30];
}
high;
int n,m,a[size][size]={0};
high d[
120][120],Two_[size];
high zero
={1,{0}},one={1,{1}},two={1,{2}};
void add(high *c,high *a,high *b)
{// 高精度加上高精度 
    int l,i;
    l
=(a->len>b->len?a->len:b->len);
    
for(i=0;i<=l;i++)
      c
->s[i]=0;
    
for(i=0;i<l;i++)
    
{
       c
->s[i]+=a->s[i]+b->s[i];
       
if(c->s[i]>=100000)
       
{
          c
->s[i+1]++;
          c
->s[i]%=100000;
       }

    }

    c
->len=l;
    
if(c->s[c->len]!=0) c->len++;
}

void mul(high *c,high *a,long b)
{// 高精度乘上單精度 
    int i;
    
for(i=0;i<=a->len;i++)
      c
->s[i]=0;
    
for(i=0;i<a->len;i++)
    
{
       c
->s[i]+=a->s[i]*b;
       
if(c->s[i]>=100000)
       
{
          c
->s[i+1]+=c->s[i]/100000;
          c
->s[i]%=100000;
       }

    }

    c
->len=a->len;
    
if(c->s[c->len]!=0) c->len++;
}

int high_max(high *a,high *b)
{// 比較單精度數 
    long i;
    
if(a->len>b->len) return 1;
    
if(a->len<b->len) return 0;
    
for(i=a->len-1;i>=0;i--)
      
if(a->s[i]>b->s[i])
        
return 1;
      
else if(a->s[i]<b->s[i])
        
return 0;
    
return 1;
}

void print(high *a)
{// 輸出高精度 
    int i;
    printf(
"%ld",a->s[a->len-1]);
    
for(i=a->len-2;i>=0;i--)
    
{
       
if(a->s[i]<10000) printf("0");
       
if(a->s[i]<1000) printf("0");
       
if(a->s[i]<100)   printf("0");
       
if(a->s[i]<10)    printf("0");
       printf(
"%ld",a->s[i]);
    }

    printf(
"\n");
}

void init()
{// 打開文件 讀入 預處理2^n 初始化表 
    int i,j;
    scanf(
"%ld%ld",&n,&m);
    
for(i=1;i<=n;i++)
      
for(j=1;j<=m;j++)
        scanf(
"%ld",&a[i][j]);
    Two_[
0]=one;
    Two_[
1]=two;
    
for(i=2;i<=m;i++)
      mul(
&Two_[i],&Two_[i-1],2);
    
for(i=0;i<=m;i++)
      
for(j=0;j<=m;j++)
        d[i][j]
=zero;
}

high dp(
int nn)
{// 對第 nn 行動態規劃 
    int i,j;
    high t1,t2,t3,t4;
    
for(j=0;j<=m-1;j++)
      
for(i=1;i<=m-j;i++)
      
{
         mul(
&t1,&Two_[m-j],a[nn][i]);
         add(
&t2,&d[i+1][i+j],&t1);
         mul(
&t3,&Two_[m-j],a[nn][i+j]);
         add(
&t4,&d[i][i+j-1],&t3);
         
if(high_max(&t2,&t4))
           d[i][i
+j]=t2;
         
else d[i][i+j]=t4;
      }

    
return d[1][m];
}

void end()
{
    
int i;
    high t1,t2,ans
=zero;
    
for(i=1;i<=n;i++)
    
{
       t1
=ans;
       t2
=dp(i);
       add(
&ans,&t1,&t2);
    }

    print(
&ans);
}

int main()
{
    init();
    end();
return 0;
}

posted on 2010-01-06 19:43 lee1r 閱讀(801) 評論(0)  編輯 收藏 引用 所屬分類: 題目分類:動態規劃
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三区精品视频| 美女主播精品视频一二三四| 久久久久久夜| 香蕉久久一区二区不卡无毒影院| 在线亚洲欧美| 亚洲中字黄色| 久久精品亚洲热| 欧美成年人视频| 亚洲国产精品视频| 欧美成人国产va精品日本一级| 男男成人高潮片免费网站| 欧美国产日韩a欧美在线观看| 欧美激情精品久久久久久蜜臀| 亚洲黄色免费| 亚洲午夜在线观看| 伊大人香蕉综合8在线视| 欧美日韩 国产精品| 久久亚洲精品一区| 欧美久久久久久久久| 欧美凹凸一区二区三区视频| 欧美精品午夜视频| 国产精品美女久久久久久免费| 国产伦精品一区二区三区视频孕妇| 国产在线国偷精品产拍免费yy| 亚洲黄色精品| 欧美在线不卡视频| 亚洲国产精品黑人久久久| 中文日韩电影网站| 可以免费看不卡的av网站| 国产精品xxxav免费视频| 伊人婷婷久久| 午夜综合激情| 久久婷婷蜜乳一本欲蜜臀| 久久精品91久久香蕉加勒比| 欧美一区日韩一区| 亚洲人成艺术| 久久成人18免费网站| 欧美日韩国产三区| 一区二区视频免费在线观看| 一本久久a久久精品亚洲| 久久综合激情| 亚洲人成人99网站| 国产精品久久久久一区二区三区 | 国产精品99久久久久久www| 午夜精品久久久久久久99樱桃| 性视频1819p久久| 亚洲美女视频网| 狠狠色噜噜狠狠色综合久| av72成人在线| 久久在线视频在线| 欧美一区二区三区免费视| 欧美日韩在线免费观看| 亚洲国产一区二区a毛片| 久久视频国产精品免费视频在线| 在线综合亚洲欧美在线视频| 欧美精品尤物在线| 99亚洲一区二区| 亚洲欧洲日产国产综合网| 久久夜色精品一区| 在线日韩av永久免费观看| 久久久久国色av免费看影院 | 精品999在线观看| 久久久久免费视频| 欧美在线视频播放| 国内精品视频一区| 美女在线一区二区| 嫩草国产精品入口| 9久re热视频在线精品| 日韩天天综合| 国产精品一区在线播放| 欧美与欧洲交xxxx免费观看| 亚洲欧美综合另类中字| 国内精品视频久久| 亚洲国产成人在线| 国产精品草草| 久久久女女女女999久久| 久久手机精品视频| av成人免费观看| 亚洲自拍三区| 国产综合婷婷| 亚洲黄色在线| 国产日韩欧美电影在线观看| 久久这里只精品最新地址| 免费日韩av电影| 亚洲主播在线观看| 久久久天天操| 亚洲永久免费| 久久精品国产精品| aa亚洲婷婷| 久久久久久综合| 亚洲午夜激情网站| 久久免费高清视频| 亚洲欧美国产精品va在线观看 | 久久综合九色综合欧美就去吻| 久久精品综合| 亚洲激情国产| 亚洲区国产区| 国产欧美精品在线| 亚洲欧洲精品成人久久奇米网| 国产精品mm| 嫩草影视亚洲| 国产精品尤物| 亚洲精品日韩一| 在线成人亚洲| 亚洲欧美999| 日韩一区二区福利| 久久久久久久久岛国免费| 亚洲视频在线一区观看| 久久视频一区二区| 久久国产精品一区二区| 欧美区高清在线| 欧美成人综合在线| 国产一区二区三区网站| 一本一本久久| aa国产精品| 欧美精品一区在线播放| 欧美激情一区二区三区成人| 国产三级精品三级| 亚洲一区二区在| 亚洲色诱最新| 欧美激情一区在线| 欧美激情在线有限公司| 激情欧美亚洲| 久久久久久电影| 久久中文欧美| 国产一区二区三区日韩欧美| 一区二区毛片| 亚洲欧美成人| 国产精品久久久久久妇女6080| 亚洲免费精彩视频| 亚洲深夜福利视频| 欧美三级午夜理伦三级中视频| 亚洲啪啪91| 99在线精品视频| 欧美日韩hd| av成人黄色| 亚洲天堂免费在线观看视频| 欧美日本簧片| 一区二区三区四区五区精品视频| 亚洲精选中文字幕| 欧美精品一区在线| 一区二区精品| 久久精品视频在线免费观看| 国产精品视频在线观看| 亚洲综合大片69999| 欧美影院在线播放| 激情亚洲网站| 欧美精品日韩三级| 亚洲视频一区二区| 久久久久九九九| 亚洲韩国日本中文字幕| 欧美日韩国产首页在线观看| 宅男噜噜噜66一区二区66| 久久国内精品自在自线400部| 樱桃国产成人精品视频| 欧美大片一区二区三区| 亚洲图片在区色| 免费不卡亚洲欧美| 一区二区三区四区五区在线| 国产精品热久久久久夜色精品三区 | 亚洲欧洲一区二区三区久久| 久久久综合香蕉尹人综合网| 欧美成人69| 亚洲午夜精品一区二区三区他趣 | 国产欧美一区二区白浆黑人| 欧美中文在线观看国产| 亚洲第一区在线观看| 中国亚洲黄色| 国产伊人精品| 欧美激情网友自拍| 午夜精品www| 亚洲人成毛片在线播放女女| 欧美一级成年大片在线观看| 亚洲电影在线免费观看| 欧美三区在线观看| 久久久亚洲高清| 国产精品99久久久久久www| 蜜桃av久久久亚洲精品| 亚洲午夜国产一区99re久久| 韩国av一区二区三区| 欧美性猛交一区二区三区精品| 久久久久久久一区| 亚洲一区二区高清| 亚洲人精品午夜| 久久夜色精品国产欧美乱| 一本到高清视频免费精品| 在线成人www免费观看视频| 国产精品视频xxxx| 欧美日韩日日骚| 欧美成人一区二区三区| 久久xxxx精品视频| 亚洲永久免费| 一区二区欧美日韩视频| 亚洲国产三级| 亚洲成在人线av| 欧美国产日韩在线| 欧美成人精品影院| 蜜月aⅴ免费一区二区三区| 久久久精品日韩| 久久精品国产清自在天天线|