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

隨筆 - 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>
            久久久久久久久久久成人| 亚洲国产精品va| 99精品99久久久久久宅男| 欧美在线不卡视频| 亚洲一区二区免费视频| 99精品视频免费在线观看| 国产一区二区三区最好精华液| 国产精品视频yy9299一区| 亚洲靠逼com| 久久gogo国模裸体人体| 亚洲桃花岛网站| 亚洲综合首页| 久久最新视频| 国产一本一道久久香蕉| 亚洲韩国一区二区三区| 正在播放亚洲| 在线亚洲一区| 久久蜜桃av一区精品变态类天堂| 久久精品亚洲精品| 欧美精品亚洲一区二区在线播放| 久久综合一区二区三区| 免费在线欧美黄色| 亚洲欧美制服中文字幕| 久久综合色婷婷| 亚洲精品一区中文| 亚洲一区免费观看| 欧美精品久久99| 国产午夜精品理论片a级探花| 狠狠入ady亚洲精品| 亚洲国产专区校园欧美| 久久se精品一区精品二区| 亚洲国产免费看| 亚洲免费视频成人| 欧美三级午夜理伦三级中文幕| 国产一在线精品一区在线观看| 亚洲电影免费在线| 亚洲制服少妇| 亚洲欧洲日本国产| 麻豆精品在线视频| 在线观看日韩一区| 久久久91精品| 欧美在线看片| 亚洲人成人一区二区在线观看| 理论片一区二区在线| 欧美小视频在线观看| 小黄鸭视频精品导航| 亚洲欧美三级在线| 在线观看国产精品网站| 亚洲国产综合在线看不卡| 欧美一区二区三区免费观看| 国产亚洲欧美另类一区二区三区| 午夜精品一区二区在线观看| 亚洲高清成人| 国产精品久久9| 欧美a级一区| 国产精品久久久久天堂| 免费在线观看日韩欧美| 亚洲性人人天天夜夜摸| 欧美天天综合网| 老司机久久99久久精品播放免费 | 亚洲国产成人在线| 国产色综合久久| 欧美大片va欧美在线播放| 免费观看久久久4p| 欧美福利一区二区| 亚洲第一黄色| 99这里只有精品| 一区二区三区日韩欧美| 欧美一区免费| 亚洲免费伊人电影在线观看av| 欧美日韩精品免费在线观看视频| 国产日韩欧美黄色| 国产精品久久久久影院色老大| 免费一级欧美在线大片| 久久疯狂做爰流白浆xx| 欧美一区二区视频免费观看| 91久久精品视频| 久久免费一区| 亚洲人成欧美中文字幕| 中文网丁香综合网| 久久嫩草精品久久久久| 国产一区三区三区| 国产精品国产一区二区| 一区二区三区精密机械公司| 欧美国产精品中文字幕| 久久久久国产精品一区二区| 亚洲第一福利视频| 久久影视精品| 久久久www| 最新国产成人在线观看| 亚洲国产一区二区精品专区| 欧美久久久久久蜜桃| 亚洲天堂激情| 欧美亚洲综合在线| 亚洲国产专区校园欧美| 夜夜夜精品看看| 国产日韩在线看片| 亚洲成色精品| 国产精品素人视频| 国产女人精品视频| 黄色欧美日韩| 国产欧美精品在线播放| 久久精品国产亚洲精品| 免费在线观看一区二区| 欧美激情第六页| 亚洲欧美国产精品桃花| 久久久91精品国产一区二区三区 | 美女999久久久精品视频| 亚洲另类黄色| 亚洲欧美中文日韩v在线观看| 精品av久久707| 亚洲视频1区| 韩国女主播一区| 亚洲国产婷婷| 韩国av一区二区三区四区| 亚洲国产精品福利| 国产欧美一区二区三区沐欲| 欧美国产日韩一区二区在线观看 | 亚洲美洲欧洲综合国产一区| 国产日韩欧美黄色| 亚洲精品一区二区在线观看| 国产日韩一区二区三区| 亚洲乱码国产乱码精品精可以看| 国产亚洲欧美一级| 一本色道久久88精品综合| 亚洲国产小视频| 欧美一级二级三级蜜桃| 一区二区精品国产| 免费成人高清视频| 久久中文字幕导航| 狠狠色狠色综合曰曰| 久久久精品一区二区三区| 久久色中文字幕| 欧美一级专区| 午夜精品久久久| 欧美无砖砖区免费| 久久久五月婷婷| 狠狠色综合网站久久久久久久| 欧美 日韩 国产精品免费观看| 浪潮色综合久久天堂| 久久本道综合色狠狠五月| 国产精品久久毛片a| 亚洲美女在线观看| 一区二区福利| 欧美高清影院| 91久久精品一区| 一本久久综合亚洲鲁鲁| 欧美wwwwww| 亚洲日本激情| 日韩天堂av| 欧美日韩国产精品一区二区亚洲| 欧美成在线视频| 亚洲国产欧美另类丝袜| 久热精品视频在线| 亚洲第一中文字幕| 亚洲精品一级| 欧美日韩一区二区在线观看| 亚洲国产老妈| 欧美顶级大胆免费视频| 亚洲精品视频一区| 欧美激情视频一区二区三区免费| 亚洲激精日韩激精欧美精品| 亚洲人成欧美中文字幕| 欧美久久一区| 正在播放日韩| 久久久久9999亚洲精品| 在线观看一区视频| 欧美成人综合网站| 日韩亚洲不卡在线| 久久精品视频在线播放| 亚洲国产精品热久久| 欧美日韩精品免费观看| 亚洲欧美日韩国产综合| 欧美sm视频| 亚洲视频欧美视频| 国内精品久久久久影院优 | 久久亚洲欧美国产精品乐播| 欧美激情一区二区三区成人| 亚洲午夜精品| 黑人中文字幕一区二区三区| 亚洲日本电影| 久久久久综合| 一区二区三区日韩精品| 国产在线成人| 欧美日韩性生活视频| 欧美在线精品一区| 日韩视频在线免费观看| 免费成人av在线看| 西西裸体人体做爰大胆久久久| 亚洲福利一区| 国产精品美女久久久| 久久久999成人| 亚洲一区二区三区激情| 亚洲激情在线观看视频免费| 久久精品人人爽| 亚洲欧美日韩国产成人| 一色屋精品视频在线看| 国产欧美精品日韩| 欧美三级特黄| 欧美日韩精品在线播放|