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

隨筆 - 87  文章 - 279  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 220431
  • 排名 - 118

最新評論

閱讀排行榜

評論排行榜

具體推導看書<<數值分析>>
code:

#include <iostream>
using namespace std;

const int MAXN = 100;

int n;
double x[MAXN], y[MAXN]; //下標從0..n
double alph[MAXN], beta[MAXN], a[MAXN], b[MAXN];
double h[MAXN];
double m[MAXN]; //各點的一階導數;

inline 
double sqr(double pa) {
    
return pa * pa;
}


double sunc(double p, int i) {
    
return (1 + 2 * (p - x[i]) / (x[i + 1- x[i])) * sqr((p - x[i + 1]) / (x[i + 1- x[i])) * y[i]
            
+ (1 + 2 * (p - x[i + 1]) / (x[i] - x[i + 1])) * sqr((p - x[i]) / (x[i + 1- x[i])) * y[i + 1]
            
+ (p - x[i]) * sqr((p - x[i + 1]) / (x[i] - x[i + 1])) * m[i]
            
+ (p - x[i + 1]) * sqr((p - x[i]) / (x[i + 1- x[i])) * m[i + 1];
}


int main() {
    
int i, j;
    
double xx;
    freopen(
"threeInsert.in""r", stdin);
    scanf(
"%d"&n);
    
for (i = 0; i <= n; i++) scanf("%lf%lf"&x[i], &y[i]);
    
// scanf("%lf%lf", &m[0], &m[n]);
    for (i = 0; i <= n - 1; i++) h[i] = x[i + 1- x[i];
    
//第一種邊界條件
    
//alph[0] = 0; alph[n] = 1; beta[0] = 2 * m[0]; beta[n] = 2 * m[n];
    
//第二種邊界條件
    alph[0= 1; alph[n] = 0; beta[0= 3 * (y[1- y[0]) / h[0]; beta[n] = 3 * (y[n] - y[n - 1/ h[n - 1]);
    
for (i = 1; i <= n - 1; i++{
        alph[i] 
= h[i - 1/ (h[i - 1+ h[i]);
        beta[i] 
= 3 * ((1 - alph[i]) * (y[i] - y[i - 1]) / h[i - 1+ alph[i] * (y[i + 1- y[i]) / h[i]);
    }

    a[
0= - alph[0/ 2; b[0= beta[0/ 2;
    
for (i = 1; i <= n; i++{
        a[i] 
= - alph[i] / (2 + (1 - alph[i]) * a[i - 1]);
        b[i] 
= (beta[i] - (1 - alph[i]) * b[i - 1]) / (2 + (1 - alph[i]) * a[i - 1]);
    }

    m[n 
+ 1= 0;
    
for (i = n; i >= 0; i--{
        m[i] 
= a[i] * m[i + 1+ b[i];
    }

    scanf(
"%lf"&xx);
    
for (i = 0; i < n; i++{
        
if (xx >= x[i] && xx <= x[i + 1]) break;
    }

    printf(
"%lf\n", sunc(xx, i));
    
return 0;
}
 
posted @ 2007-10-20 13:07 豪 閱讀(3601) | 評論 (4)編輯 收藏
Sailboat

Problem H: Sailboat

In the sailboat race, the contestant is requested to along with the prearrange path. Sailing ship's power comes from wind power and contestant's manpower. The wind power can completely used.

In a competition, the contestants are requested to along with a 1/4 circles with radius R, the sailboat will goto east from south. During this process, the wind direction is straight from west to the east with constant speed and power.

In order to maintain the travel direction, the athlete must adjust the sail to the vertical angle from movement direction in any time.

If the speed of sailboat is proportional to the power at movement direction, the proportional factor is k. Supposes the wind power is f, the athlete manpower is h, please given the time of sailboat from the beginning to the end.

Input

The first line of each case consists of 4 double number, that is radius of path: R, wind power: f,athlete manpower: h and proportional factor:k. In order to avoid the floating point error, you needn't output the answer directly. The next line is a integer n, the following n lines gives a double value which is candidate answer.

Output

For each candidate of each case, Only "Yes" or "No" should be printed. Output "Yes" if the relative error to your answer is less than 3%, otherwise "No". For example, if the model answer is 100, and the candidate is 98 or 102, you should output "Yes". Output one blank line between neighboring case

Sample Input

1.0 2.0 1.0 1.0
2
0.35
0.76

Sample Output

No
Yes

Problem Source: provided by skywind

#include <iostream>
#include 
<cmath>
using namespace std;

const int MAXN = 100;
const double PI = acos(-1.0);

double R, F, H, K, ans;
int n, cas;

double func(double x) {
    
return R / K / (H + F * cos(x));
}


double romberg(double a, double b, double EPS = 1e-6{
    
double t[MAXN][MAXN] = {0}, tmp;
    
int i, j, k, k2, m, m4;
    t[
0][0= (func(a) + func(b)) * (b - a) / 2;
    k 
= 1; k2 = 1;
    
while (1{
        tmp  
= 0;
        
for (i = 1; i <= k2; i++{
            tmp 
+= func(a + (2 * i - 1* (b - a) / (2 * k2));
        }

        t[
0][k] = (t[0][k - 1+ tmp * (b - a) / k2) / 2;
        
for (m = 1, m4=4; m <= k; m++, m4 *= 4{
            t[m][k 
- m] = (m4 * t[m - 1][k - m + 1- t[m - 1][k - m]) / (m4 - 1);
        }

        
if (fabs(t[k][0- t[k - 1][0]) < EPS) break;
        k
++; k2 *= 2;
    }

    
return t[k][0];
}


void solve() {
    
double tmp;
    scanf(
"%lf"&tmp);
    
if (fabs(tmp - ans) / ans < 0.03) printf("Yes\n");
    
else printf("No\n");
}


int main() {
    freopen(
"2457.in""r", stdin);
    
while (scanf("%lf%lf%lf%lf%d"&R, &F, &H, &K, &n) != EOF) {
        
if (cas) printf("\n");
        
else cas++;
        ans 
= romberg(0, PI/2);
        
while (n--{
            solve();
        }

    }

    
return 0;
}
posted @ 2007-10-20 01:02 豪 閱讀(704) | 評論 (0)編輯 收藏

Easy Problem

Time limit:1000 ms   Memory limit:65536 KB
Total Submit:1755 (462 users)   Accepted Submit:366 (332 users)

Description

In this problem, you're to calculate the distance between a point P(xp, yp, zp) and a segment (x1, y1, z1) − (x2, y2, z2), in a 3D space, i.e. the minimal distance from P to any point Q(xq, yq, zq) on the segment (a segment is part of a line).

Input

The first line contains a single integer T (1 ≤ T ≤ 1000), the number of test cases. Each test case is a single line containing 9 integers xp, yp, zp, x1, y1, z1, x2, y2, z2. These integers are all in [-1000,1000].

Output

For each test case, print the case number and the minimal distance, to two decimal places.

Sample Input

3
0 0 0 0 1 0 1 1 0
1 0 0 1 0 1 1 1 0
-1 -1 -1 0 1 0 -1 0 -1

Sample Output

Case 1: 1.00
Case 2: 0.71
Case 3: 1.00

Problem Source

The 32nd ACM-ICPC Beijing First Round Internet Contest

其實和二分差不多,劃個函數曲線出來,分三段,比劃一下就很容易理解了:)

#include <iostream>
#include 
<cmath>
using namespace std;

double dist(double l[], double r[]) {
    
return sqrt((l[0]-r[0])*(l[0]-r[0])+(l[1]-r[1])*(l[1]-r[1])+(l[2]-r[2])*(l[2]-r[2]));
}


int main() {
   
// freopen("1024.in", "r", stdin);
    int n, cas=0;
    
double l[3], r[3], p[3], p1[3], p2[3], d1, d2;
    scanf(
"%d"&n);
    
while (n--{
        scanf(
"%lf%lf%lf%lf%lf%lf%lf%lf%lf"&p[0], &p[1], &p[2], &l[0], &l[1], &l[2], &r[0], &r[1], &r[2]);
        
while (dist(l, r) > 1e-4{
            p1[
0= (l[0+ r[0]) / 2;
            p1[
1= (l[1+ r[1]) / 2;
            p1[
2= (l[2+ r[2]) / 2;
            p2[
0= (r[0+ p1[0]) / 2;
            p2[
1= (r[1+ p1[1]) / 2;
            p2[
2= (r[2+ p1[2]) / 2;
            d1 
= dist(p1, p); d2 = dist(p2, p);
            
if (d2 >= d1) {
                r[
0= p2[0]; r[1= p2[1]; r[2= p2[2];
            }
 else {
                l[
0= p1[0]; l[1= p1[1]; l[2= p1[2];
            }

        }

        printf(
"Case %d: %.2lf\n"++cas, dist(p,l));
    }

}

posted @ 2007-10-18 11:00 豪 閱讀(1216) | 評論 (0)編輯 收藏
昨晚去圖書館看了《計算機圖形學——OpenGL實現》關于Bresenham算法的另一種推導方式。
Bresenham最精妙之處在于通過方程變換,然后得到迭代方程,從而消除了浮點運算。

下面簡單寫寫自己對中點法推導的理解:

記:W = bx - ax, H = by - ay
         所以 (ax, ay)和(bx, by)的理想直線為:
         -W*(y-ay) + H*(x-ax) = 0

記:函數 f(x, y) = -2*W*(y-ay) + 2*H*(x-ax);
         f(x,y)有如下性質:
         f(x, y) < 0, 那么(x, y)在直線上方
         f(x, y) > 0, 那么(x, y)在直線下方

現考慮 點L(Px+1, Py), 點U(Px+1, Py+1), 則LU中點M(Px+1, Py+1/2) 有:
         如果f(Mx, My) < 0, 則M在理想直線上方, 所以選擇L
         如果f(Mx, My) > 0, 則M在理想直線下方, 所以選擇U
則:
         f(Mx,My) = -2*w*(Py+1/2-ay) + 2*H*(Px+1-ax)
當 x從Px+1移動到Px+2時, 考慮f變化M'和M'':
         M':在前一步沒有增加y, M' = (Px+2, Py+1/2)
         M'':在前一步增加了y, M' = (Px+2, Py+3/2)
對于 M':
         f(M'x, M'y) = -2*w*(Py+1/2-ay) + 2*H*(Px+2-ax) = f(Mx, My) + 2 * H
對于 M'':
         f(M''x, M''y) = -2*w*(Py+3/2-ay) + 2*H*(Px+2-ax) = f(Mx, My) - 2 * (W-H)
所以
         對于下一個“測試量”都有一個常數增量:前一次沒有增加y,增量為2*H,如果增加了y,則增量為-2*(W-H)

對于初始條件:x = ax, y = ay
         M = (ax+1, ay+1/2);
         f(Mx, My) = -2*W*(ay+1/2-ay) + 2*H(ax+1-ax) = 2*H-W

Code:
#include <stdlib.h>
#include 
<math.h>
#include 
<GL/glut.h>

void myInit() {
    glClearColor(
1.01.01.00.0);
    glColor3f(
0.00.00.0);
    
//glPointSize(2.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(
0.0640.00.0480.0);
}


void setPixel(int x, int y) {
    glBegin(GL_POINTS);
    glVertex2i(x, y);
    glEnd();

}


void lineBres(int xs, int ys, int xe, int ye) {
    
int W = xe - xs, H = ye - ys, f = 2 * H - W, tH = 2 * H, tHW = 2 * (H - W);
    
int x, y;
    
if (xs > xe) {
        x 
= xe;
        y 
= ye;
        xe 
= xs;
    }
 else {
        x 
= xs;
        y 
= ys;            
    }

    
while (x <= xe) {
        setPixel(x, y);
        x
++;
        
if (f<0{
            f 
+= tH;
        }
 else {
            y
++;
            f 
+= tHW;
        }

    }

}


void myDisplay() {
    glClear(GL_COLOR_BUFFER_BIT);
    lineBres(
2010300180);
    glFlush();
}


int main(int argc, char **argv) {
    glutInit(
&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE
|GLUT_RGB);
    glutInitWindowSize(
640480);
    glutInitWindowPosition (
100150);
    glutCreateWindow(
"Bresenham畫線");
    glutDisplayFunc(myDisplay);
    myInit();
    glutMainLoop();
    
return 0;
}

         
posted @ 2007-10-11 11:57 豪 閱讀(1166) | 評論 (0)編輯 收藏
擴展了一點,有興趣的可以去看看,MFC去,sigh~
http://m.shnenglu.com/qywyh/articles/32740.html
posted @ 2007-09-23 21:34 豪 閱讀(1427) | 評論 (0)編輯 收藏
僅列出標題
共18頁: 1 2 3 4 5 6 7 8 9 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美视频中文字幕在线| 亚洲激情女人| 韩国视频理论视频久久| 国产精品丝袜久久久久久app| 你懂的视频欧美| 欧美激情麻豆| 欧美日韩国产精品自在自线| 欧美系列亚洲系列| 国产精品无码永久免费888| 国产欧美短视频| 影音先锋亚洲精品| 日韩一级二级三级| 午夜久久电影网| 美女在线一区二区| 亚洲人人精品| 亚洲欧美视频在线| 另类春色校园亚洲| 欧美视频中文在线看| 国产午夜一区二区三区| 91久久久一线二线三线品牌| 亚洲少妇一区| 久久久免费精品| 亚洲在线成人| 久久综合狠狠综合久久综青草 | 在线成人激情视频| 亚洲人成欧美中文字幕| 亚洲欧美日韩一区| 欧美电影在线| 亚洲免费影视| 欧美日韩国产成人在线免费| 国产欧美日韩视频一区二区| 91久久一区二区| 欧美一区二区三区日韩| 亚洲国产综合91精品麻豆| 欧美一区二区三区精品电影| 欧美激情在线有限公司| 国内久久精品视频| 午夜精品福利一区二区三区av| 欧美国产第二页| 欧美亚洲一区二区三区| 欧美日韩在线不卡| 亚洲国产高清aⅴ视频| 欧美亚洲综合网| 亚洲精品综合| 欧美—级a级欧美特级ar全黄| 精久久久久久| 久久精品99国产精品| 一本色道久久88亚洲综合88| 欧美成人在线免费观看| 亚洲国产精品久久久| 久久视频一区二区| 欧美一区二区在线视频| 国产精品露脸自拍| 亚洲一区二区精品| 亚洲精品在线二区| 久久久91精品国产一区二区三区 | 亚洲色图综合久久| 久久久美女艺术照精彩视频福利播放 | 99re6这里只有精品| 亚洲天堂久久| 欧美暴力喷水在线| 亚洲欧美日韩一区二区在线| 欧美电影专区| 国产在线乱码一区二区三区| 一区二区三区色| 禁断一区二区三区在线| 欧美日韩一二三区| 亚洲第一中文字幕| 欧美在线一级视频| 99re66热这里只有精品3直播| 久久超碰97中文字幕| 欧美日韩免费高清| 亚洲电影专区| 亚洲高清在线观看一区| 欧美国产一区在线| 一区二区三区国产在线观看| 亚洲免费观看高清完整版在线观看熊 | 亚洲精品一区在线| 亚洲麻豆av| 国产精品成人一区二区| 亚洲欧美在线播放| 欧美一区二区三区免费在线看| 韩日成人在线| 亚洲国产欧美一区二区三区久久 | 性色一区二区| 伊人蜜桃色噜噜激情综合| 欧美国产高潮xxxx1819| 欧美日韩免费观看一区二区三区| 亚洲欧美日韩天堂一区二区| 久久激五月天综合精品| 亚洲三级色网| 亚洲永久字幕| 亚洲欧洲一级| 亚洲欧美在线播放| 亚洲激情亚洲| 亚洲欧美电影院| 亚洲欧洲一区二区三区| 亚洲亚洲精品在线观看| 欲色影视综合吧| 日韩视频免费观看高清完整版| 国产精品一二三| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产精品成人免费| 欧美激情视频免费观看| 国产精品美女久久久浪潮软件| 免费成人小视频| 国产精品一区毛片| 亚洲国产精品t66y| 国产午夜精品理论片a级大结局| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产欧美精品久久| 久久亚洲综合色一区二区三区| 国内精品亚洲| 99视频超级精品| 欧美aⅴ99久久黑人专区| 欧美国产日韩a欧美在线观看| 欧美伊人影院| 欧美亚洲成人网| 亚洲二区免费| 好吊日精品视频| 亚洲一区欧美| 亚洲手机成人高清视频| 老司机精品视频一区二区三区| 欧美一级二级三级蜜桃| 欧美巨乳波霸| 亚洲第一区中文99精品| 激情成人在线视频| 午夜精品一区二区三区四区| 亚洲视频精选在线| 欧美刺激午夜性久久久久久久| 免费影视亚洲| 亚洲福利免费| 免费观看一级特黄欧美大片| 久久精品在线| 国产亚洲欧美一区在线观看| 亚洲一区精品视频| 欧美亚洲一级片| 国产日韩一区欧美| 午夜精品电影| 久久免费少妇高潮久久精品99| 国产女同一区二区| 欧美一区不卡| 麻豆精品国产91久久久久久| 韩日精品中文字幕| 久久久久久久成人| 欧美粗暴jizz性欧美20| 亚洲欧洲在线免费| 欧美日本二区| 亚洲永久免费av| 久久综合色婷婷| 亚洲全黄一级网站| 欧美日本二区| 在线亚洲美日韩| 久久国产日韩| 亚洲国产老妈| 欧美日韩综合视频网址| 亚洲综合视频一区| 久久久久一区| 91久久精品一区二区三区| 欧美日韩一区二区三区高清| 亚洲视频一区在线| 久久久久国产一区二区三区| 亚洲成色www久久网站| 欧美精品久久久久久久免费观看| 亚洲精品美女久久7777777| 亚洲一区二区在线免费观看视频| 国产一区二区电影在线观看| 久久久久欧美精品| 亚洲精品一区二区三| 欧美亚洲视频| 亚洲精品乱码久久久久久黑人 | 国产一区二区剧情av在线| 久久视频一区| 日韩午夜在线| 久久综合五月天婷婷伊人| 亚洲精品一区二区网址| 国产精品视频久久久| 美女精品在线| 亚洲制服欧美中文字幕中文字幕| 久久久久国产精品一区| 欧美怡红院视频一区二区三区| 亚洲三级影院| 国产精品爽黄69| 欧美99久久| 亚洲欧美中文在线视频| 亚洲欧洲精品一区| 久热国产精品视频| 亚洲欧美日韩专区| 亚洲国产精品免费| 国产精品一区二区三区免费观看 | 久久网站热最新地址| 国产精品99久久99久久久二8| 免费国产一区二区| 欧美一区二区在线| 亚洲视频免费观看| 亚洲精品之草原avav久久| 国内自拍一区| 国产美女一区| 国产精品视频网址| 国产精品成人aaaaa网站|