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

糯米

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>
            午夜精品理论片| 欧美日本亚洲韩国国产| 久久婷婷丁香| 国产精品久久999| 欧美成人tv| 久久精品成人一区二区三区蜜臀| 99伊人成综合| 一区二区三区久久网| 亚洲精品在线视频| 亚洲免费久久| 久久精品伊人| 亚洲欧美综合精品久久成人| 最新日韩中文字幕| 亚洲国产欧美一区二区三区丁香婷| 国产精品一页| 国产精品自拍三区| 国产乱码精品一区二区三区不卡| 国产精品久久一级| 国产精品一区二区三区久久久| 国产精品豆花视频| 国产精品一区二区在线观看网站 | 一区二区久久久久| 在线视频欧美一区| 亚洲午夜精品久久久久久浪潮| 99热在这里有精品免费| 在线亚洲一区| 久久不射2019中文字幕| 久久综合色影院| 欧美日韩亚洲免费| 国产精品色午夜在线观看| 国产精品热久久久久夜色精品三区 | 久久青草久久| 欧美激情小视频| 欧美日韩在线不卡一区| 欧美午夜www高清视频| 国产精品一区二区黑丝| 黑人巨大精品欧美一区二区小视频 | 一区二区三区 在线观看视| 亚洲影院在线观看| 亚洲日本电影| 性感少妇一区| 久久久久久夜| 亚洲茄子视频| 亚洲一区日韩在线| 久久人人97超碰精品888| 亚洲专区在线| 美女精品一区| 国产精品爽爽爽| 亚洲国产日韩欧美综合久久| 国产精品99久久久久久人| 欧美伊人久久久久久午夜久久久久| 美女网站久久| 亚洲自拍都市欧美小说| 欧美+亚洲+精品+三区| 国产精品mv在线观看| 亚洲国产精品高清久久久| 午夜久久久久| 亚洲黄色影片| 99精品久久久| 国产在线精品一区二区中文| 日韩午夜电影| 免费一区二区三区| 亚洲精品国产精品乱码不99| 亚洲欧美一区二区激情| 欧美日本一区二区视频在线观看| 欧美怡红院视频| 国产精品v一区二区三区| 一区二区三区在线视频免费观看| 亚洲制服丝袜在线| 亚洲国产精品精华液2区45| 久久精品一区二区国产| 国产日韩av高清| 亚洲一区二区三区中文字幕| 亚洲第一免费播放区| 久久这里只有| 伊人成年综合电影网| 久久久国产精品一区二区中文 | 欧美国产日韩一区二区三区| 一区二区视频免费完整版观看| 亚洲综合色视频| 亚洲巨乳在线| 欧美精品久久一区二区| 亚洲看片网站| 亚洲黄一区二区| 欧美黄色一区二区| 亚洲精品日韩在线观看| 欧美电影在线观看完整版| 欧美在线视频一区二区三区| 国产日韩欧美综合精品| 久久精品国产第一区二区三区最新章节 | 日韩午夜电影| 亚洲最新中文字幕| 久久亚洲图片| 久久综合五月| 日韩一级不卡| 在线亚洲高清视频| 国产欧美日韩激情| 蜜臀久久99精品久久久久久9| 欧美在线一二三| 亚洲高清久久久| 亚洲精品国产精品乱码不99| 国产精品sss| 久久精品国产清高在天天线| 久久精品视频网| 99热这里只有成人精品国产| 在线视频欧美日韩精品| 国产精品成人免费| 久久精品国产99精品国产亚洲性色 | 亚洲国产精品毛片| 日韩午夜激情av| 国产精品一区二区三区观看| 久久综合成人精品亚洲另类欧美 | 亚洲专区国产精品| 亚洲大片精品永久免费| 亚洲高清激情| 国产精品久久久久久久久久久久久久 | 小处雏高清一区二区三区| 久久久久青草大香线综合精品| 亚洲精品护士| 欧美一区二区三区免费观看| 亚洲国产精品视频| 亚洲一区免费观看| 国产在线日韩| 免费成人毛片| 国产精品久久久999| 免费观看30秒视频久久| 欧美性色aⅴ视频一区日韩精品| 久久久水蜜桃av免费网站| 亚洲一区二区三区免费观看| 亚洲激情一区| 午夜在线成人av| 一区二区三区高清在线 | 久久久福利视频| 欧美系列精品| 亚洲国产精品成人va在线观看| 久久久蜜桃一区二区人| 亚洲永久免费视频| 欧美xxxx在线观看| 久久亚洲精品欧美| 国产精品久久午夜夜伦鲁鲁| 91久久在线| 亚洲激情国产| 老司机精品视频网站| 欧美在线视频在线播放完整版免费观看 | 欧美在线免费一级片| 一本到12不卡视频在线dvd| 久久综合国产精品| 麻豆成人av| 亚洲国产一区二区精品专区| 欧美激情免费在线| 9久草视频在线视频精品| 亚洲自拍三区| 国内成+人亚洲| 六月丁香综合| 最新成人av网站| 亚洲综合电影一区二区三区| 国产精品视频男人的天堂| 欧美专区日韩视频| 欧美午夜剧场| 亚洲欧美在线高清| 国产美女在线精品免费观看| 欧美一区二区三区免费视频| 牛人盗摄一区二区三区视频| 亚洲精品乱码| 欧美四级在线| 欧美中文字幕| 亚洲精品在线视频| 欧美一区网站| 亚洲美女区一区| 国产欧美综合一区二区三区| 麻豆精品91| 一本色道久久综合精品竹菊| 久久久久久噜噜噜久久久精品| 亚洲高清电影| 国产精品亚洲欧美| 欧美va天堂| 午夜精品理论片| 亚洲精品欧美日韩| 久久久久久一区二区| 99国产精品私拍| 好吊视频一区二区三区四区 | 在线午夜精品自拍| 黑人巨大精品欧美一区二区小视频| 欧美精品在线极品| 久久久免费精品视频| 亚洲性视频网站| 亚洲人成在线观看| 美日韩在线观看| 久久av一区二区三区漫画| 夜久久久久久| 亚洲国产日韩欧美在线99| 国产热re99久久6国产精品| 欧美日韩亚洲一区| 欧美成人在线网站| 久久视频一区二区| 午夜精品久久久久久久久| 一区二区三区高清| 亚洲免费激情| 亚洲另类在线视频| 91久久精品国产91性色|