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

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數(shù)據(jù)加載中……

POJ 2008 Moo University - Team Tryouts 牛題

思路:
這道題目的解法非常牛逼。剛一看題就知道做不出來了,所以就在這個博客
http://hi.baidu.com/findthegateopen/
找到了一份解題報(bào)告。下面的內(nèi)容都是基于原作者的代碼參考出來的。感謝原作者的代碼!

樸素的做法是O(N^3)的復(fù)雜度。usaco官方的算法是O(N^2)的復(fù)雜度。原作者的代碼跑了不到100ms,應(yīng)該說是相當(dāng)不錯了!

首先,要把所有牛放到坐標(biāo)系上來表示。目的,就是求出包含最多點(diǎn)的直角三角形。
直角三角形的兩條直角邊上都必須有點(diǎn),也就是一組牛中的具有最小height的點(diǎn)和具有最小width的點(diǎn)。
直角三角形的邊長也是固定的,cw = C/B,ch = C/A。這個還好說,從那個限制條件可以推出來的。初中都學(xué)過,呵呵。



Step1:求出經(jīng)過一個點(diǎn)的所有可能存在的三角形。
其實(shí)也就是在該點(diǎn)下方的灰色區(qū)域中選擇點(diǎn)來確定一個三角形。




Step2:求出經(jīng)過一個點(diǎn)的所有可能存在的三角形中,最多包含的點(diǎn)數(shù)。
解法相當(dāng)精妙。

求一個三角形內(nèi)的點(diǎn)數(shù),可以分解為一個矩形內(nèi)的點(diǎn)數(shù)減去一個梯形內(nèi)的點(diǎn)數(shù)。

用這個方法,求出最上面那個三角形的點(diǎn)數(shù)之后。可以繼續(xù)遞推得到下面其他三角形的點(diǎn)數(shù)。

也就是加上一個矩形,再減去一個梯形。
如果點(diǎn)按照高度排序以后,那么后面矩形里的點(diǎn)一定是后出現(xiàn)的。這樣就可以做到隨時增加矩形。
但是減去梯形這個操作,就難理解一點(diǎn),把點(diǎn)按照A*H + B*W來排序,就能保證后面梯形里的點(diǎn)一定是后出現(xiàn)的。

可見,A*H + B*W 值的大小決定了他們的位置分布。完全可以保證這個順序。
這種數(shù)形結(jié)合的方法實(shí)在是相當(dāng)精妙!

那我們就可以首先求出第一個三角形的點(diǎn)數(shù),然后接下來的三角形就根據(jù)減去梯形,和增加矩形的操作,來做小的調(diào)整就可以了。
在代碼里面的表現(xiàn)形式就是維護(hù)兩個指針,不斷向后移,中間剔除橫坐標(biāo)不在范圍之內(nèi)的點(diǎn)。
這個操作的復(fù)雜度是O(N)。
對所有點(diǎn)執(zhí)行一次,故算法的復(fù)雜度是O(N^2)。


代碼:
/*
 *    本代碼參考自 
http://hi.baidu.com/findthegateopen/
 *    中的代碼,感謝原作者的代碼!
 
*/

#include 
<stdio.h>
#include 
<stdlib.h>

#define MAX_N 1024

struct node {
    
int w, h, k;
}
;

struct node in[MAX_N], *sort_h[MAX_N], *sort_k[MAX_N];
int A, B, C, N, ch, cw, ans, box, slash, cnt;

int cmp_h(const void *a, const void *b)
{
    
return (*(struct node **)b)->- (*(struct node **)a)->h;
}


int cmp_k(const void *a, const void *b)
{
    
return (*(struct node **)b)->- (*(struct node **)a)->k;
}


__inline 
void update(int h, int w)
{
    
int k;

    
for ( ; box < N && sort_h[box]->>= h; box++)
        
if (sort_h[box]->>= w && sort_h[box]-><= w + cw)
            cnt
++;
    k 
= A * h + B * w + C;
    
for ( ; slash < N && sort_k[slash]->> k; slash++)
        
if (sort_k[slash]->>= w && sort_k[slash]-><= w + cw)
            cnt
--;
    
if (cnt > ans)
        ans 
= cnt;
}


__inline 
void calc(int i)
{
    
int h, w;

    box 
= 0;
    slash 
= 0;
    cnt 
= 0;
    h 
= sort_h[i]->h;
    w 
= sort_h[i]->w;
    
for ( ; i < N && sort_h[i]->>= h - ch; i++
        
if (sort_h[i]->>= w && sort_h[i]-><= w + cw)
            update(sort_h[i]
->h, w);
}


int main()
{
    
int i;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d%d%d"&N, &A, &B, &C);
    cw 
= C/B;
    ch 
= C/A;
    
for (i = 0; i < N; i++{
        scanf(
"%d%d"&in[i].h, &in[i].w);
        
in[i].k = A * in[i].h + B * in[i].w;
        sort_h[i] 
= &in[i];
        sort_k[i] 
= &in[i];
    }

    qsort(sort_h, N, 
sizeof(sort_h[0]), cmp_h);
    qsort(sort_k, N, 
sizeof(sort_k[0]), cmp_k);

    
for (i = 0; i < N; i++)
        calc(i);
    printf(
"%d\n", ans);

    
return 0;
}



posted on 2010-03-12 20:07 糯米 閱讀(1161) 評論(0)  編輯 收藏 引用 所屬分類: POJ

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品噜噜噜成人av农村| 久久先锋影音av| 亚洲欧美一区二区三区极速播放| 在线电影国产精品| 国产在线拍揄自揄视频不卡99| 国产精品一区二区男女羞羞无遮挡 | 久久久久久久一区二区| 亚洲免费网站| 欧美一区二区在线观看| 久久久久欧美精品| 欧美国产一区二区在线观看 | 久久夜色精品一区| 欧美91视频| 91久久午夜| 亚洲国产三级网| 亚洲在线黄色| 久久久欧美精品| 欧美性感一类影片在线播放| 国产一区二区久久精品| 亚洲国产精品久久91精品| 欧美3dxxxxhd| 99日韩精品| 午夜日韩福利| 老牛影视一区二区三区| 亚洲福利视频免费观看| 在线亚洲精品| 久久久噜噜噜久久中文字幕色伊伊| 久久精品国产免费| 欧美乱大交xxxxx| 国产精品国产精品| 一区二区视频免费完整版观看| 日韩亚洲精品视频| 久久久久久久久综合| 亚洲精品看片| 久久亚洲一区二区三区四区| 国产精品久久久久久久久久免费看 | 欧美有码在线视频| 亚洲国内自拍| 久久久精品欧美丰满| 国产精品豆花视频| 亚洲精品国产视频| 麻豆freexxxx性91精品| 夜夜狂射影院欧美极品| 另类综合日韩欧美亚洲| 国产精品久久久久久久久果冻传媒| 亚洲高清免费| 久久亚洲电影| 欧美一级网站| 国产精品乱码久久久久久| 一本久道综合久久精品| 久久亚洲不卡| 欧美一二三区在线观看| 欧美日韩一区二区三区在线| 亚洲人成网站在线播| 久久精品导航| 亚洲欧美成人综合| 国产精品伦理| 午夜久久久久久| 亚洲调教视频在线观看| 欧美性猛交xxxx乱大交蜜桃 | 久久综合久久美利坚合众国| 亚洲深夜av| 国产精品99免视看9| 亚洲视频你懂的| 日韩亚洲在线观看| 欧美揉bbbbb揉bbbbb| 亚洲精品国偷自产在线99热| 欧美高清一区二区| 免费观看成人| 亚洲国产成人高清精品| 免费观看在线综合色| 久久精品视频在线观看| 激情成人在线视频| 午夜精品久久久久久久99樱桃| 国产精品久在线观看| 亚洲午夜性刺激影院| 亚洲精品一区二区网址| 欧美日韩福利视频| 亚洲欧美日本日韩| 亚洲在线成人精品| 国产精品呻吟| 香蕉久久夜色| 欧美在线看片| 亚洲人成在线观看一区二区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产精品99久久久久久有的能看| 国产精品s色| 久久精品女人天堂| 久久综合激情| 亚洲美女色禁图| 亚洲性视频网站| 国产日本欧美视频| 免费在线日韩av| 欧美日韩精品欧美日韩精品| 欧美一区二区三区在线视频 | 亚洲影视在线播放| 狠狠色综合播放一区二区| 亚洲国产高清一区二区三区| 欧美日韩一区二区精品| 久久久久亚洲综合| 欧美激情精品久久久久久蜜臀| 99这里只有久久精品视频| 亚洲视频一区二区在线观看| 国产综合av| 亚洲精品乱码久久久久久蜜桃91 | 国产日韩欧美二区| 亚洲国产电影| 国产伦精品一区二区| 免费视频最近日韩| 国产精品久久久久7777婷婷| 久久精品成人| 国产精品国产福利国产秒拍 | 91久久国产自产拍夜夜嗨| 99精品视频免费| 在线日韩欧美视频| 欧美亚洲视频| 亚洲少妇在线| 亚洲手机视频| 亚洲自拍16p| 狠狠操狠狠色综合网| 在线亚洲一区观看| 亚洲三级国产| 久久久久久久97| 久久国产精品高清| 国产精品国产三级国产普通话三级 | 久久一区二区三区四区五区| 欧美视频成人| 91久久精品国产| 在线观看视频一区二区欧美日韩| 亚洲午夜视频在线观看| 一区二区三区久久| 欧美国产日韩一区二区| 欧美sm极限捆绑bd| 在线观看欧美日本| 久久久久久久波多野高潮日日| 欧美一区二粉嫩精品国产一线天| 欧美日韩日本国产亚洲在线 | 久久久精品国产免费观看同学| 久久国内精品视频| 国产日韩精品一区二区| 亚洲欧美另类综合偷拍| 亚洲一区二区少妇| 欧美午夜不卡视频| 亚洲午夜极品| 久久九九电影| 国产一级久久| 久久黄色网页| 欧美77777| 日韩视频在线免费观看| 欧美日产国产成人免费图片| 亚洲黄色在线视频| 亚洲视频在线观看三级| 国产精品久久久久影院亚瑟| 亚洲——在线| 久久婷婷丁香| 亚洲精品一区在线观看香蕉| 欧美精品午夜| 在线综合+亚洲+欧美中文字幕| 亚洲影视在线| 国产一区二区三区高清| 久久综合久久综合久久综合| 91久久视频| 亚洲欧美日韩中文视频| 国产一区视频网站| 久久国产精品免费一区| 免费视频一区二区三区在线观看| 亚洲欧洲一区二区三区久久| 欧美色图一区二区三区| 欧美一区二区三区四区在线观看| 一区在线免费| 欧美久久久久久久| 亚洲综合色婷婷| 久久影音先锋| 99re在线精品| 国产午夜精品一区二区三区欧美 | 国产精品v欧美精品v日本精品动漫 | 欧美成人r级一区二区三区| 亚洲国产欧美久久| 欧美三级网页| 久久精品中文字幕一区| 91久久香蕉国产日韩欧美9色| 亚洲影音先锋| 亚洲国产日韩欧美| 国产美女一区| 欧美成人免费视频| 性欧美大战久久久久久久免费观看 | 国产精品久久久久久久电影| 久久免费视频网| 正在播放亚洲一区| 欧美电影免费观看高清| 午夜精品久久一牛影视| 在线观看欧美一区| 国产精品亚洲成人| 欧美a一区二区| 欧美在线短视频| 国产精品99久久久久久久久| 亚洲国产欧美日韩精品| 久久久久久亚洲综合影院红桃 | 日韩视频永久免费| 狠狠色伊人亚洲综合网站色|