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

學習心得(code)

superlong@CoreCoder

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  74 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

公告

文字可能放在http://blog.csdn.net/superlong100,此處存放代碼

常用鏈接

留言簿(4)

我參與的團隊

搜索

  •  

最新隨筆

最新評論

  • 1.?re: Poj 1279
  • 對于一個凹多邊形用叉積計算面積 后能根據結果的正負來判斷給的點集的時針方向?
  • --bsshanghai
  • 2.?re: Poj 3691
  • 你寫的這個get_fail() 好像并是真正的get_fail,也是說fail指向的串并不是當前結點的子串。為什么要這樣弄呢?
  • --acmer1183
  • 3.?re: HDU2295[未登錄]
  • 這個是IDA* 也就是迭代加深@ylfdrib
  • --superlong
  • 4.?re: HDU2295
  • 評論內容較長,點擊標題查看
  • --ylfdrib
  • 5.?re: HOJ 11482
  • 呵呵..把代碼發在這里很不錯..以后我也試試...百度的編輯器太爛了....
  • --csuft1

閱讀排行榜

評論排行榜

#include <stdio.h>
#include 
<string.h>
#include 
<math.h>
#include 
<iostream>
#include 
<algorithm>

using namespace std;

#define eps 1e-4
#define PI 3.1415927
#define G 9.18
#define N 15
#define zero(x) (((x)>0?(x):-(x))<eps)
#define _sign(x) ((x)>eps?1:((x)<-eps?2:0))

struct point {
    
double x, y;
    
void out() {
        printf(
"%lf %lf\n", x, y);
    }

}
;

struct dam_borad {
    
double H, k;
    
int len, type;
    point cor[N];
}
dam[N];

double vx, vy, iniH, totTime;
int n, cases;

double xmult(point p1, point p2, point p0) {
    
return (p1.x - p0.x)* (p2.y-p0.y) - (p2.x - p0.x) * (p1.y - p0.y);
}


int dots_inline(point p1, point p2, point p3) {
    
return zero(xmult(p1, p2, p3));
}


int same_side(point p1, point p2, point l1, point l2) {
    
return xmult(l1, p1, l2) * xmult(l1, p2, l2) > eps;
}


int dot_online_in(point p, point l1, point l2) {
    
return zero(xmult(p, l1, l2)) && (l1.x-p.x) * (l2.x-p.x) < eps && 
                                     (l1.y
-p.y) * (l2.y-p.y) < eps;
}


int intersect_in(point u1, point u2, point v1, point v2) {
    
if!dots_inline(u1, u2, v1) || !dots_inline(u1, u2, v2))
        
return !same_side(u1, u2, v1, v2) && !same_side(v1,v2, u1, u2);
    
return dot_online_in(u1,v1, v2) || dot_online_in(u2,v1, v2) || dot_online_in(v1,u1, u2)
            
|| dot_online_in(v2,u1, u2);
}


point intersection(point u1, point u2, point v1, point v2) 
{
    point ret 
= u1;
    
double t = (( u1.x - v1.x) * (v1.y - v2.y) - (u1.y - v1.y) * (v1.x - v2.x)) / 
               (( u1.x 
- u2.x) * (v1.y - v2.y) - (u1.y - u2.y) * (v1.x - v2.x));
    ret.x 
+= (u2.x - u1.x) * t;
    ret.y 
+= (u2.y - u1.y) * t;
    
return ret;
}


int inside_polygon(point q, int n) {
    
int i , s[3= {111};
    
for(i = 0; i < dam[n].len && s[1| s[2]; i ++{
        s[ _sign(xmult(dam[n].cor[i
+1], q, dam[n].cor[i]))] = 0;
    }

    
return s[1]|s[2];
}


int cmp(dam_borad a, dam_borad b) {
    
return b.H - a.H < -eps;
}


void read() {
    scanf(
"%lf %lf %lf"&vx, &vy, &iniH);
    scanf(
"%d"&n);
    
for(int i = 0; i < n; i ++{
        scanf(
"%lf"&dam[i].H);
        scanf(
"%d"&dam[i].len);
        
for(int j = 0; j < dam[i].len; j ++{
            scanf(
"%lf %lf"&dam[i].cor[j].x, &dam[i].cor[j].y);
        }

        dam[i].cor[dam[i].len] 
= dam[i].cor[0];
        scanf(
"%d"&dam[i].type);
        scanf(
"%lf"&dam[i].k);
    }

}


void init() {
    sort(dam, dam 
+ n, cmp);
    totTime 
= 0;
}


void drop() {
    
int damNum = 0;
    point now, nowV;
    
double nowH;
    now.x 
= now.y = 0;
    nowV.x 
= vx;
    nowV.y 
= vy;
    nowH 
= iniH;
    
    
if(nowH < -eps) {
        totTime 
= -1;
        
return;
    }

    
    
while(damNum < n) {
        
if( dam[damNum].H < eps) break;
        
double detH = nowH - dam[damNum].H;
        
if(detH < -eps) {
            damNum 
++;
            
continue;
        }

        
double time = sqrt(2 * detH / G);
        point nowp, newp, end;
        
        newp.x 
= now.x + time * nowV.x;
        newp.y 
= now.y + time * nowV.y;
        
if( inside_polygon(newp, damNum) ) {
            
            nowH 
= dam[damNum].H;
            totTime 
+= time;
            
if( dam[damNum].type == 0 ) {
                
double tp1 = cos(dam[damNum].k), tp2 = sin(dam[damNum].k);
                
double tempvx = nowV.x * tp1 - nowV.y * tp2;
                
double tempvy = nowV.x * tp2 + nowV.y * tp1;
                nowV.x 
= tempvx;
                nowV.y 
= tempvy;
            }
 else if( dam[damNum].type == 1{
                nowV.x 
= dam[damNum].k;
            }
 else if( dam[damNum].type == 2{
                nowV.y 
= dam[damNum].k;
            }

            
            
if(fabs(nowV.x) < eps && fabs(nowV.y) < eps) {
                totTime 
= -1;
                
return;
            }

            end.x 
= newp.x + 1000 * nowV.x;
            end.y 
= newp.y + 1000 * nowV.y;
            now 
= newp;
            
for(int i = 0; i < dam[damNum].len; i ++{
                
if( dot_online_in(newp, dam[damNum].cor[i], dam[damNum].cor[i + 1]) ) {
                    point tp;
                    tp.x 
= newp.x + nowV.x; tp.y = newp.y + nowV.y;
                    
if( dot_online_in(tp, dam[damNum].cor[i], dam[damNum].cor[i + 1]) ) {
                        
if( dot_online_in(dam[damNum].cor[i], newp, end) ) {
                            now 
= dam[damNum].cor[i]; break;
                        }
 else {
                            now 
= dam[damNum].cor[i+1]; break;
                        }

                    }
 else {
                        
continue;
                    }

                }

                
if( intersect_in(newp, end, dam[damNum].cor[i], dam[damNum].cor[i + 1]) ) {
                    now 
= intersection(newp, end, dam[damNum].cor[i], dam[damNum].cor[i + 1]);
                    
break;
                }

            }

            
if( fabs(nowV.x) < eps ) totTime += fabs(now.y - newp.y) / fabs(nowV.y);
            
else totTime += fabs(now.x - newp.x) / fabs(nowV.x);
        }

        
        damNum 
++;
    }

    
if(nowH > 0{
        totTime 
+= sqrt(2 * nowH / G);
    }

}


void out() {
    printf(
"Case %d: ", cases++);
    
if(totTime > -eps)
            printf(
"%.2lf\n", totTime);
    
else     printf("Forever!\n");
}


int main() {
    
int t;
    scanf(
"%d"&t);
    cases 
= 1;
    
while(t --{
        read();
        init();
        drop();
        
out();
    }

}

posted on 2010-07-14 22:43 superlong 閱讀(326) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   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>
            一区二区三欧美| 亚洲人成在线播放网站岛国| 日韩香蕉视频| 免费成人av在线| 国产亚洲精品激情久久| 欧美一区二区黄色| 欧美激情一区二区三区在线视频 | 亚洲欧美日本日韩| 亚洲福利电影| 亚洲综合色丁香婷婷六月图片| 国产午夜精品理论片a级探花| 欧美激情在线狂野欧美精品| 午夜精品久久久久久久久久久久 | 日韩视频在线一区| 亚洲欧美日韩网| 亚洲视频网站在线观看| 日韩视频精品在线| 日韩视频在线观看| 亚洲天堂成人| 欧美一区二区三区婷婷月色| 亚洲一区在线免费| 先锋影音久久久| 欧美亚洲一区二区三区| 久久久久久久一区| 亚洲黄色天堂| 亚洲午夜免费福利视频| 久久精品国产69国产精品亚洲 | 欧美国产精品日韩| 免费成人高清| 欧美一区不卡| 国产精品免费小视频| 亚洲国产欧美不卡在线观看| 午夜精品久久久99热福利| 欧美激情综合| 免费亚洲电影在线| 黄色亚洲精品| 久久综合色播五月| 亚洲性视频网址| 欧美日韩第一区日日骚| 亚洲国产精品ⅴa在线观看| 免费人成精品欧美精品| 久久人人超碰| 亚洲免费观看在线视频| 亚洲精品乱码久久久久久日本蜜臀| 午夜精品久久久久久久久| 在线一区二区三区四区五区| 欧美大片网址| 欧美一区二区福利在线| 亚洲欧美国产毛片在线| 国产麻豆精品视频| 久久久久一区二区三区四区| 久久亚洲私人国产精品va| 亚洲精品一线二线三线无人区| 亚洲国产精品一区二区尤物区| 欧美精品一区在线| 久久精品人人做人人爽| 欧美好骚综合网| 久久免费视频在线| 午夜精品福利一区二区蜜股av| 国内偷自视频区视频综合| 亚洲经典视频在线观看| 国产精品亚洲第一区在线暖暖韩国 | 亚洲国产日韩欧美在线99| 欧美黑人在线观看| 久久人人爽爽爽人久久久| 欧美日韩免费高清| 蜜桃伊人久久| 国产日韩欧美另类| 一区二区免费在线视频| 韩日精品视频| 午夜视频在线观看一区| 亚洲精品视频免费在线观看| 欧美一区二区视频免费观看| 99在线热播精品免费| 久久久久欧美| 欧美亚洲综合网| 欧美v国产在线一区二区三区| 亚洲永久精品国产| 欧美日一区二区三区在线观看国产免 | 国产主播一区二区| 欧美久久影院| 亚洲电影网站| 久久成人18免费观看| 久久不见久久见免费视频1| 红桃视频亚洲| 亚洲黄色有码视频| 欧美日韩视频第一区| 午夜精品久久久久久99热软件| 亚洲在线免费| 亚洲高清在线播放| 在线视频你懂得一区| 激情综合在线| 亚洲三级网站| 国产一区二区三区直播精品电影| 免费不卡在线观看| 国产精品久久二区| 欧美黄免费看| 国产精品主播| 亚洲人体大胆视频| 国产在线精品成人一区二区三区| 亚洲区国产区| 在线播放日韩欧美| 中文一区在线| 亚洲精品综合| 久久久久欧美| 久久精品国产久精国产一老狼 | 欧美一区二区在线视频| 久久久久国产精品午夜一区| 亚洲视频欧美在线| 狼狼综合久久久久综合网| 小黄鸭视频精品导航| 欧美精品97| 欧美福利一区二区三区| 国产一区二区在线免费观看 | 国产精品国产三级国产普通话三级 | 亚洲一区精品电影| 亚洲精品国产精品久久清纯直播| 亚洲综合国产精品| 久久精品官网| 久久国产高清| 国产精品xxxxx| 亚洲精品欧美日韩专区| 在线国产精品播放| 久久久久国产精品一区三寸| 久久理论片午夜琪琪电影网| 国产日韩欧美亚洲一区| 一区二区三区鲁丝不卡| 99综合在线| 欧美激情一区二区久久久| 国产欧美日韩视频在线观看| 在线视频亚洲| 午夜精品av| 国产精品美女主播| 亚洲午夜视频在线| 欧美一区二区高清| 国产欧美一区二区精品仙草咪 | 欧美国产第二页| 在线精品福利| 蜜桃av噜噜一区二区三区| 美女精品自拍一二三四| 亚洲高清久久| 欧美黄色一区| 亚洲精品在线三区| 亚洲一区二区三区777| 国产精品高潮呻吟久久| 亚洲一区二区欧美日韩| 欧美一级一区| 一区二区三区在线观看欧美 | 欧美日韩日本国产亚洲在线| 日韩午夜电影在线观看| 亚洲一区二区三区欧美| 国产久一道中文一区| 欧美在线视频播放| 欧美黄色成人网| 亚洲最新中文字幕| 国产精品永久免费观看| 久久激情视频| 91久久久精品| 篠田优中文在线播放第一区| 极品日韩久久| 欧美另类高清视频在线| 午夜精品99久久免费| 欧美第一黄网免费网站| 亚洲一区三区视频在线观看| 国产在线观看精品一区二区三区| 欧美.com| 亚洲欧美日产图| 亚洲大胆人体视频| 午夜日本精品| 亚洲国产影院| 国产精品夜夜嗨| 久久久久久9| 日韩午夜av在线| 国产精品爽黄69| 男同欧美伦乱| 亚洲砖区区免费| 亚洲国产综合91精品麻豆| 欧美在线啊v| 亚洲视频欧美视频| 亚洲人成网站影音先锋播放| 国产精品一区一区三区| 欧美裸体一区二区三区| 欧美与欧洲交xxxx免费观看 | 久久免费视频在线| 一区二区三区导航| 一区二区在线观看视频| 国产精品久久久久999| 免费成人高清视频| 小黄鸭精品aⅴ导航网站入口| 亚洲国产欧美日韩| 免费久久99精品国产自在现线| 亚洲欧美日韩精品久久奇米色影视| 亚洲国内精品在线| 狠狠综合久久av一区二区老牛| 欧美性猛交一区二区三区精品| 欧美成人精品高清在线播放| 免费国产一区二区| 久久精品99国产精品| 亚洲一区二区不卡免费| 日韩视频永久免费|