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

隨筆 - 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>
            欧美精品成人在线| 国产精品久久福利| 欧美国产日韩精品| 亚洲日本一区二区三区| 亚洲欧美日本精品| 99riav久久精品riav| 在线观看的日韩av| 狠狠色狠色综合曰曰| 欧美视频导航| 欧美婷婷在线| 国产欧美精品一区二区色综合 | 亚洲欧美在线一区| 久久激情网站| 亚洲精品国产精品国产自| 国产亚洲欧美日韩美女| 一区二区在线不卡| 欧美性大战久久久久久久蜜臀 | 美女主播视频一区| 免费视频一区二区三区在线观看| 亚洲一区二区成人| 99pao成人国产永久免费视频| 亚洲日本视频| 尤物在线精品| 亚洲国产91| 夜夜嗨一区二区| 欧美资源在线| 亚洲国产精品日韩| 亚洲天堂激情| 模特精品在线| 国产精品免费看片| 黄色av一区| 亚洲视频一区二区在线观看| 久色成人在线| 免费中文日韩| 欧美aⅴ99久久黑人专区| 亚洲另类春色国产| 欧美一区二区三区免费大片| 欧美剧在线观看| 伊人久久大香线蕉综合热线| 亚洲欧美另类综合偷拍| 欧美激情视频网站| 欧美在线免费观看| 国产精品乱子久久久久| 亚洲精品黄色| 欧美国产综合视频| 久久国产精品高清| 国产亚洲精品bt天堂精选| 一区二区三区久久久| 亚洲第一网站免费视频| 性欧美video另类hd性玩具| 欧美色精品天天在线观看视频| 91久久精品美女| 欧美xxxx在线观看| 久久国产精品久久久久久电车| 国产精品久久久久久亚洲毛片| 亚洲免费高清| 亚洲国产视频一区| 蜜臀久久久99精品久久久久久| 激情成人在线视频| 亚洲精品乱码久久久久久蜜桃麻豆| 久久久国产成人精品| 午夜精品一区二区三区在线 | 欧美日韩免费高清| 国内精品久久久久久| 午夜精品免费视频| 午夜天堂精品久久久久| 小嫩嫩精品导航| 欧美激情一区二区三区全黄| 久久一区中文字幕| 亚洲高清成人| 亚洲欧洲日本国产| 欧美激情四色| 在线亚洲观看| 一区二区精品在线观看| 国产精品羞羞答答xxdd| 久久gogo国模啪啪人体图| 亚洲在线视频一区| 国产午夜精品久久久久久久| 久久综合九色欧美综合狠狠| 久久久夜夜夜| 一本高清dvd不卡在线观看| 久久影院午夜论| 亚洲高清免费视频| 亚洲自拍都市欧美小说| 午夜亚洲伦理| 久久久精品视频成人| 最近看过的日韩成人| 99re66热这里只有精品3直播| 国产精品一区二区三区乱码 | 久久精品国产99| 女女同性精品视频| 亚洲私拍自拍| 久久本道综合色狠狠五月| 亚洲人成啪啪网站| 亚洲性视频h| 91久久精品网| 欧美一区二视频| 夜夜嗨av一区二区三区中文字幕 | 欧美日韩一区在线视频| 午夜精品久久久久影视 | 欧美日韩综合一区| 欧美在线视频播放| 国产精品入口麻豆原神| 欧美日韩视频在线一区二区观看视频| 亚洲在线一区二区三区| 欧美日韩成人综合| 91久久亚洲| 欧美亚洲日本国产| 欧美成人中文| 亚洲一区二区三区在线| 久久国产婷婷国产香蕉| 一区二区久久久久| 欧美在线三区| 亚洲午夜久久久| 狂野欧美性猛交xxxx巴西| 亚洲天堂成人在线观看| 蜜臀99久久精品久久久久久软件| 午夜精品免费视频| 免费观看久久久4p| 久久久久国产一区二区三区| 欧美午夜一区二区福利视频| 男人的天堂亚洲在线| 国产综合在线看| 亚洲欧美日本国产有色| 亚洲视频中文| 欧美伦理91| 欧美成人综合一区| 精品成人久久| 久久精品一级爱片| 欧美日本视频在线| 欧美国产日韩免费| 狠狠色狠狠色综合日日小说| 欧美一区二区三区久久精品| 亚洲欧美日韩第一区| 欧美三级不卡| 9久re热视频在线精品| 久久国产精品久久久| 国产精品jvid在线观看蜜臀| 亚洲精品影视| 日韩一本二本av| 欧美韩日精品| 亚洲精选在线观看| 一本大道av伊人久久综合| 欧美日韩性视频在线| 亚洲人成在线观看网站高清| 亚洲欧洲精品一区二区| 免费日韩av| 亚洲欧洲综合| 亚洲一区在线视频| 国产精品一区二区久久久| 欧美一区二区三区在线| 麻豆国产va免费精品高清在线| 在线日韩视频| 欧美黄色成人网| 中国成人黄色视屏| 久久精品30| 亚洲二区视频| 欧美日韩国产在线一区| 欧美午夜电影在线| 日韩视频一区二区三区在线播放免费观看 | 久久久精品一品道一区| 久久亚洲精品视频| 亚洲精品1区2区| 欧美偷拍一区二区| 欧美主播一区二区三区美女 久久精品人| 久久se精品一区二区| 亚洲国产精品久久久久久女王| 欧美精品国产精品| 亚洲欧美国产高清| 欧美成在线观看| 午夜性色一区二区三区免费视频 | 亚洲永久在线观看| 国产在线精品成人一区二区三区| 久久久久国产一区二区| 亚洲精品欧美一区二区三区| 欧美一区国产在线| 亚洲区中文字幕| 国产精品综合| 欧美99在线视频观看| 亚洲一区二区影院| 欧美激情视频网站| 久久成人精品无人区| 日韩图片一区| 精品动漫3d一区二区三区免费| 欧美成人资源网| 午夜久久美女| 鲁大师成人一区二区三区| 亚洲精品视频在线看| 国产精品嫩草影院一区二区| 欧美成人精品高清在线播放| 亚洲欧美激情视频| 91久久在线| 老**午夜毛片一区二区三区| 亚洲一区二区三区激情| 亚洲国产精品第一区二区| 国产视频在线观看一区二区| 欧美日韩一区二区在线视频| 久久国产婷婷国产香蕉| 欧美国产精品va在线观看| 欧美影院一区|