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

隨筆-21  評(píng)論-10  文章-21  trackbacks-0
   這道題顯然考察積分,但有些積分是困難的(所以要平時(shí)多做題,能判斷哪些是自己能夠手算積出來(lái)的),
能積出來(lái)當(dāng)然盡量算出來(lái),但對(duì)于那些困難的,就可以模擬積分的過(guò)程, 這里微元可以選擇橫截面,對(duì)于每一個(gè)橫截面的面積 S 是 一個(gè)弓形,這是好求的,再沿軸線方向積分卻困難了,邊看代碼邊解釋?zhuān)?br>
waterloo的標(biāo)程

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <assert.h>
 4 
 5 #define N 1000
 6 
 7 double s,delta,k,hb,db,hn,dn,h,V,hs,v;
 8 
 9 //求每個(gè)橫截面微元弓形的面積
10 double area(double r, double s) {
11    double t = db/2-s;
12    double theta = t<r?acos(t/r):0;
13    double wedge = theta * r * r;
14    double triangles = r * cos(theta) * r * sin(theta);
15    return wedge - triangles;
16 }
17 //求橫放 液面高度為 s時(shí) 的體積
18 double volume(double s) {
19    if (s*2 > db) return V - volume(db-s);
20    double vb = area(db/2, s) * hb;
21    double vn = area(dn/2, s) * hn;
22    double vc = area(db/2, s) + area(dn/2, s);
23    int i;
24    /*================*/
25    /*精彩的地方
26 
27      因?yàn)榍蟛怀瞿莻€(gè)定積分,所以只能分成 N 段逼近,當(dāng)然 N 越大越準(zhǔn)確,越大時(shí)間越多
28      如果對(duì)被積函數(shù)的特性,如單調(diào)性, 斜率的變化情況快慢,大致曲線的形狀,越清楚,
29      就越準(zhǔn)確,像在這里,微元 area 以 r 作為變量,卻不是正比于 r^2,所以直接用
30      for (i=1;i<N; i++) {
31       vc +=  area((db + (dn-db)*i/N)/2, s);
32       }
33      vc *= (h-hn-hb)/N;
34      去模擬那個(gè)積分過(guò)程效果就要差的多,N==5000時(shí)才能得到正確答案,而下面得方法 N==20
35      就能得到正確答案,差距不是一點(diǎn)點(diǎn)!!
36    */
37    for (i=1;i<N;i+=2) {
38       vc += 4 * area((db + (dn-db)*i/N)/2, s);
39    }
40    for (i=2;i<N;i+=2) {
41       vc += 2 * area((db + (dn-db)*i/N)/2, s);
42    }
43    vc *= (h-hn-hb)/3/N;
44    /*====================*/ 
45    return vb + vn + vc;
46 }
47 
48 doit(){
49    int hnx = hn, hbx = hb, hx = h, dnx = dn;
50    V = 2 * volume(db/2);//總的容積
51    /*=======================*/
52    //這段處理時(shí)修改瓶子,使得“瓶子”總是裝滿液體的,這樣就可以用同一個(gè)公式求出液體的體積
53    if (k <= hb) {
54       hn = 0;
55       hb = k;
56       h = k;
57    } else if (k < h-hn) {
58       dn = db + (dn-db) * (k-hb) / (h-hn-hb);
59       hn = 0;
60       h = k;
61    } else {
62       hn = hn - h + k;
63       h = k;
64    }
65    v = 2 * volume(db/2);//液體的體積
66    /*========================*/
67    hn = hnx; hb = hbx; h = hx; dn = dnx;
68    //將瓶子還原回來(lái)
69    
70    /*==========================*/
71    //這個(gè)二分看得不怎么習(xí)慣
72    s = db/2;
73    for (delta=s/2;delta > .00001; delta /=2) {
74       if (volume(s) > v) s -= delta;
75       else s += delta;
76    }
77    /*======================*/
78    printf("%0.2lf\n",s);
79 }
80 
81 main(){
82    while (6 == scanf("%lf%lf%lf%lf%lf%lf",&k,&hb,&db,&hn,&dn,&h)) {
83       if (!(k||hb||db||hn||dn||h)) return;
84       doit();
85    }
86 }
87 

my code:

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 #define pi 3.1415926535897932384626433832795
 5 #define integral_Num 20//數(shù)據(jù)特殊才取20,照理還是取大點(diǎn)好
 6 #define eps 1e-8
 7 int sig(double x){return x < -eps ? -1 :  x > eps ; }
 8 double k ,hb ,db ,hn ,dn ,h, V;
 9 double area(double height, double r)
10 
11     if( sig(height - db/2 + r) < 0 ) return 0;
12     if( sig(height - db/2 - r) >= 0 ) return pi*r*r;
13     /*
14     這里要確保acos的值為-1.0 ~1.0之間, 甚至為1.0+1e-10都不行, 
15     此外 r 不能為 0,r == 0 的情況必須在上面就處理掉
16     */
17     double theta = acos( ( db/2 - height) / r );
18     return r * r * theta - r * r * sin(theta) * cos(theta) ;
19 }
20 
21 double volumn(double height)
22 {
23     int i;
24     double 
25         vb = area(height, db/2* hb,
26         vn = area(height, dn/2* hn,
27         vc = area(height, db/2+ area(height, dn/2);
28     for(i = 1; i < integral_Num; i+=2)
29         vc+=4 * area(height , 0.5 * db - 0.5 * (db - dn) * i / integral_Num );
30     for(i = 2; i < integral_Num; i+=2)
31         vc+=2 * area(height , 0.5 * db - 0.5 * (db - dn) * i / integral_Num );
32     vc*=(h - hb - hn) / 3 / integral_Num;
33     return vc+vn+vb;
34 }
35 void doit()
36 
37     double tk = k,  thb = hb,  tdb = db, thn = hn,  tdn = dn,  th = h;
38     if(k <= hb){ hn=0; hb=k; h=hb; }
39     else   if(k > h - hn) { hn=k+hn-h; h=k; }
40      //要防止 h - hn - hb == 0 的情況運(yùn)行到這一步
41         else   {dn = db + (hb - k)*(db - dn)/(h - hn - hb); h=k; hn=0; }
42   
43     double v, l = 0 , r=db, mid;
44         v=2*volumn(db/2);
45         k = tk, hb = thb, db = tdb, hn = thn, dn = tdn, h = th;
46         while(r - l >= 1e-3)
47         { 
48             mid=(r+l)/2;
49             if(volumn(mid) > v) r  = mid;
50             else l = mid;
51         }
52         printf("%.2lf\n",mid);
53 }
54 int main()
55 
56     /*freopen("C.1.dat","r",stdin);
57     freopen("ans.txt","w",stdout);*/
58     while(scanf("%lf%lf%lf%lf%lf%lf",&k, &hb, &db, &hn, &dn, &h) !=EOF)
59     { 
60         if(!(k || hb || db || hn || dn || h) )break;
61         doit();
62     }
63 }
64 




 

posted on 2009-02-27 22:45 wangzhihao 閱讀(429) 評(píng)論(1)  編輯 收藏 引用

評(píng)論:
# re: pku 3289 Moonshine 2013-06-02 00:38 | ys
這道題有積分公式,具體見(jiàn)poj 3929  回復(fù)  更多評(píng)論
  

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品免费看片| 欧美mv日韩mv国产网站app| 免费成人性网站| 亚洲午夜视频在线观看| 在线日本欧美| 国产欧美一区二区视频| 欧美日韩一区二区视频在线| 久久久www免费人成黑人精品 | 老司机精品视频一区二区三区| 99视频一区二区| 亚洲福利国产精品| 国产亚洲欧美一区| 国产精品另类一区| 欧美日韩高清在线播放| 久久综合久久久久88| 久久国产精品电影| 性欧美videos另类喷潮| 亚洲一区在线免费| 在线中文字幕一区| 一区二区欧美在线| a91a精品视频在线观看| 亚洲精品视频在线观看网站| 亚洲第一成人在线| 麻豆国产精品va在线观看不卡| 欧美在线播放| 午夜精品久久久久久久99樱桃| 在线一区观看| 亚洲图片在线| 亚洲永久精品国产| 亚洲男女自偷自拍| 亚洲欧美成人一区二区三区| 亚洲一区二区免费看| 亚洲系列中文字幕| 亚洲一区二区三区高清| 亚洲一区久久久| 午夜精彩国产免费不卡不顿大片| 亚洲欧美视频一区二区三区| 午夜久久久久久| 欧美在线视频观看免费网站| 久久成人一区二区| 久久国产天堂福利天堂| 久久久国际精品| 久久综合久久综合久久综合| 麻豆9191精品国产| 欧美激情一区在线观看| 亚洲国产日韩欧美在线99| 亚洲精品日韩在线观看| 中文欧美在线视频| 亚洲欧美日韩在线不卡| 久久精品av麻豆的观看方式 | 99re6这里只有精品| 日韩一区二区精品视频| 亚洲网址在线| 欧美自拍偷拍午夜视频| 乱人伦精品视频在线观看| 欧美成人免费在线视频| 亚洲精选大片| 亚洲欧美日韩国产中文在线| 久久精品一本久久99精品| 麻豆av一区二区三区| 欧美日韩国产二区| 国产模特精品视频久久久久 | 国产一区二区三区自拍| 在线欧美日韩精品| 一区二区三区色| 久久国产乱子精品免费女 | 欧美精品在线视频观看| 国产精品久久久久久久久免费桃花| 国产乱子伦一区二区三区国色天香 | 亚洲经典视频在线观看| 亚洲香蕉伊综合在人在线视看| 久久国产精品第一页| 亚洲高清中文字幕| 亚洲——在线| 欧美成人午夜视频| 国产精品一区二区你懂得| 亚洲电影网站| 香蕉乱码成人久久天堂爱免费| 免费观看在线综合| 亚洲视频欧美在线| 狼人天天伊人久久| 国产精品一区三区| 亚洲另类自拍| 久久综合九色欧美综合狠狠| 一本久久综合| 免费在线观看精品| 国产三级欧美三级| 亚洲视频中文字幕| 欧美大片在线看| 亚洲综合色网站| 欧美日韩123| 亚洲高清电影| 久久精品一二三区| 99精品视频免费全部在线| 久久综合狠狠综合久久综青草| 国产精品美女久久久久久2018 | 米奇777在线欧美播放| 国产精品一区二区你懂得| 亚洲美女视频网| 老鸭窝毛片一区二区三区| 亚洲影院免费观看| 欧美三区视频| 日韩视频在线一区二区| 免费观看在线综合色| 午夜精品久久久久久| 欧美特黄视频| 99视频一区二区| 亚洲国产精品激情在线观看| 久久久久久久网站| 国产一区999| 欧美怡红院视频一区二区三区| 9久re热视频在线精品| 欧美乱妇高清无乱码| 亚洲欧洲日韩在线| 欧美福利电影网| 久久久五月天| 精品盗摄一区二区三区| 久久精品免费观看| 午夜国产精品影院在线观看| 国产精品入口夜色视频大尺度| 在线亚洲国产精品网站| 亚洲欧洲视频在线| 欧美另类女人| 一区二区三区四区在线| 亚洲精品一区二区三区四区高清| 欧美大胆人体视频| 亚洲精品一区中文| 亚洲人成网站在线观看播放| 欧美激情女人20p| 99精品欧美一区二区三区综合在线| 欧美激情在线播放| 欧美国产精品日韩| 99精品黄色片免费大全| 亚洲精品一区二区三区蜜桃久| 欧美人与禽猛交乱配视频| 一本色道**综合亚洲精品蜜桃冫 | 久久女同精品一区二区| 国内精品一区二区| 欧美不卡视频一区发布| 美女网站在线免费欧美精品| 91久久精品一区二区三区| 亚洲国产日韩一区二区| 欧美日韩视频在线观看一区二区三区 | 亚洲免费网址| 国产一区二区无遮挡| 玖玖精品视频| 欧美丰满高潮xxxx喷水动漫| 一本色道久久综合亚洲精品按摩 | 午夜电影亚洲| 久久av一区二区三区漫画| 亚洲成人在线| 亚洲欧洲精品一区二区精品久久久| 欧美日韩国产综合新一区| 亚洲自拍都市欧美小说| 欧美一级片一区| 亚洲国产综合在线看不卡| 亚洲欧洲一区二区在线观看| 国产精品久久久久999| 久久免费精品视频| 欧美激情按摩在线| 午夜在线观看欧美| 久久免费观看视频| 中国成人黄色视屏| 欧美一区高清| 日韩午夜在线视频| 亚洲欧美国内爽妇网| 亚洲国产美女| 亚洲一区二区三区在线| 在线观看亚洲精品| 99热精品在线观看| 伊甸园精品99久久久久久| 亚洲精品中文字幕在线| 国产综合色产在线精品| 亚洲激情视频网站| 国产色产综合色产在线视频 | 久久av在线| 一区二区三区视频观看| 亚洲欧美日韩国产精品| 亚洲理论电影网| 欧美一区二区三区另类| 一级日韩一区在线观看| 久久精品在线免费观看| 亚洲在线中文字幕| 你懂的网址国产 欧美| 欧美尤物巨大精品爽| 欧美精品一区二区三区久久久竹菊| 久久国产加勒比精品无码| 欧美日韩国产综合久久| 米奇777在线欧美播放| 国产精品国产三级国产a| 亚洲成人自拍视频| 国产一区在线看| 在线视频精品| 亚洲伦理在线免费看| 久久久免费精品视频| 午夜精品久久久久久久男人的天堂 | 男女激情视频一区| 久久久www成人免费精品| 国产精品magnet| 最新日韩精品|