日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hdu 5203(枚举)

發(fā)布時(shí)間:2025/3/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 5203(枚举) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:一個(gè)長(zhǎng)為n的木棍又n個(gè)長(zhǎng)度為1的小木棍組成,但有一些小木棍是壞的,給出了那些位置上的小木棍是壞的,現(xiàn)在要把長(zhǎng)木棍切割成4條,要求其中3條都是不包含壞木棍且長(zhǎng)度和最大,而且這3條好木棍可以組成一個(gè)三角形,問(wèn)有多少種切割方式。

解題思路:

首先可以很快的求出最短的壞木棍,接下來(lái)就會(huì)出現(xiàn)兩種情況,假設(shè)砍掉的壞木棍節(jié)點(diǎn)分別為L(zhǎng)和R;

1、L=1或R=n

這樣剩下的三段是由一整段木棒截來(lái),我們可以枚舉最左邊一段的長(zhǎng)度,這樣可以得到一個(gè)關(guān)于第二段木棍的不等式,稍微討論一下即可。


由組成三角形的條件可知

(x1+n-x1-x2)>x2  得x2<n/2,同樣可得x1<n/2

x1+x2>n-x1-x2  得x2>n/2-x1

即有  n/2-x1<x2<n/2

則符合條件的x2的個(gè)數(shù)為(n-1)/2-(n/2-x1)  //注意這里是小于不是小于等于,所以要多減個(gè)1


2、砍掉的壞木棍是中間的一截,這樣的情況就很容易了,枚舉即可。

#include<cstdio> #include<iostream> #include<algorithm> #include<cmath> using namespace std;int l,r,x,n,m; int ok(int a,int b,int c) {if(a<b) swap(a,b);if(a<c) swap(a,c);if(b+c>a) return true;else return false; } long long calc2(int x,int y) {long long tot=0;for(int i=1;i<x;i++)if(ok(i,x-i,y)) tot++;for(int i=1;i<y;i++)if(ok(i,y-i,x)) tot++;return tot; } long long calc1(int n) {long long tot=0;for(int i=1;i<=n-2;i++) if(2*i<n) {tot+=(n-1)/2-(n/2-i);}return tot; } int main() {while(scanf("%d%d",&n,&m)!=EOF){l=n,r=1;for(int i=1;i<=m;i++){scanf("%d",&x);l=min(l,x);r=max(r,x);}if(r==n) printf("%lld\n",calc1(l-1));else if(l==1) printf("%lld\n",calc1(n-r));else printf("%lld\n",calc2(l-1,n-r));}return 0; }

總結(jié)

以上是生活随笔為你收集整理的hdu 5203(枚举)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。