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

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

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 220451
  • 排名 - 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 豪 閱讀(3603) | 評論 (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://www.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>
            欧美精品福利| 麻豆视频一区二区| 国产欧美一区二区三区久久| 亚洲一区久久久| 欧美综合国产| 亚洲国产小视频在线观看| 欧美精品久久久久久久| 欧美电影美腿模特1979在线看| 亚洲午夜激情网页| 蜜桃精品久久久久久久免费影院| 亚洲国产毛片完整版| 亚洲激情小视频| 一区二区动漫| 亚洲电影天堂av| 欧美精品在线观看| 久久综合99re88久久爱| 亚洲婷婷在线| 欧美一区二区三区免费观看视频| 亚洲人成艺术| 欧美人成在线视频| 欧美日韩一区在线观看视频| 欧美一级网站| 欧美一级午夜免费电影| 在线观看欧美亚洲| 国产精品美腿一区在线看| 欧美国产日本在线| 久久免费视频网| 欧美在线观看视频一区二区三区| 艳女tv在线观看国产一区| 久久尤物电影视频在线观看| 欧美一区二区大片| 亚洲男人影院| 亚洲综合视频在线| 亚洲综合色丁香婷婷六月图片| 欧美在线一级视频| 亚洲国产欧洲综合997久久| 另类图片国产| 久久婷婷国产麻豆91天堂| 亚洲国产一区二区三区高清| 性欧美video另类hd性玩具| 亚洲一区二区不卡免费| 久久天天躁夜夜躁狠狠躁2022| 欧美日韩在线第一页| 在线成人av| 欧美影院在线播放| 日韩一级裸体免费视频| 亚洲精品欧美在线| 一个色综合导航| 亚洲日本成人女熟在线观看| 久久成人综合网| 久久久久网址| 免费成人美女女| 国产日韩成人精品| 亚洲一区二区三区精品在线| 亚洲欧美大片| 亚洲精品美女在线| 男人天堂欧美日韩| 国产精品成人一区二区三区吃奶| 国产精品综合视频| 激情成人综合| 99视频一区| 午夜久久久久久| 久久久人人人| 亚洲欧洲视频在线| 亚洲欧美日韩国产一区二区| 久久久综合网站| 在线欧美日韩精品| 欧美成年人视频网站| 一区二区三区四区精品| 欧美日本在线| 亚洲在线第一页| 亚洲专区免费| 欧美成人中文| 久久人人爽国产| 在线成人激情视频| 欧美超级免费视 在线| 欧美大片免费观看| 一区二区三区精品国产| 日韩亚洲欧美一区二区三区| 99re成人精品视频| 亚洲国产欧美在线人成| 亚洲日本在线视频观看| 国产精品国产自产拍高清av| 亚洲丰满在线| 亚洲一品av免费观看| 欧美激情网友自拍| 一本一本大道香蕉久在线精品| 亚洲精品免费看| 国产精品日韩一区二区三区| 亚洲日本成人网| 久久国内精品视频| 亚洲第一久久影院| 欧美午夜视频在线| 亚洲精品色婷婷福利天堂| 亚洲人在线视频| 国产日韩欧美夫妻视频在线观看| 99v久久综合狠狠综合久久| 你懂的成人av| 欧美视频1区| 亚洲精选视频免费看| 国产精品国产三级国产aⅴ9色| 久久伊伊香蕉| 在线观看视频一区| 日韩视频中午一区| 韩国av一区二区三区四区| 亚洲一区免费网站| 久久精品一区蜜桃臀影院 | 亚洲调教视频在线观看| 国模一区二区三区| 久久激情综合网| 欧美激情精品| 老司机凹凸av亚洲导航| 国产精品成人一区二区| 亚洲高清资源综合久久精品| 国产色婷婷国产综合在线理论片a| 欧美激情一区二区在线| 欧美激情精品久久久久久变态| 亚洲一区二区三区中文字幕| 久久综合导航| 久久久久久久综合| 久久九九精品| 欧美成在线观看| 久久精品主播| 性做久久久久久| 欧美日韩理论| 亚洲国产另类精品专区| 在线欧美日韩国产| 久久一区二区三区av| 久久婷婷麻豆| 影音先锋亚洲精品| 久久精品国产成人| 久久黄金**| 国产精品欧美日韩一区| av成人免费在线观看| 亚洲一区二区三区在线视频| 欧美日韩一级黄| 一区二区三区.www| 国产精品99久久久久久久女警| 亚洲综合国产精品| 亚洲一区一卡| 国产精品久久久久影院亚瑟| 一本色道久久综合亚洲精品按摩| 夜色激情一区二区| 欧美日韩另类字幕中文| 亚洲精选大片| 亚洲一区二区三区久久| 国产精品美女主播| 欧美一区二区三区电影在线观看| 欧美一区二区视频在线| 国产乱码精品一区二区三区不卡| 亚洲免费中文| 久久影院午夜论| 亚洲精品中文在线| 欧美三级电影网| 亚洲欧美日韩一区二区三区在线观看| 欧美中文字幕| 亚洲国产美女久久久久| 欧美激情视频一区二区三区免费| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品日韩久久久| 欧美一乱一性一交一视频| 美日韩丰满少妇在线观看| 亚洲精品国精品久久99热一| 欧美日韩亚洲另类| 午夜一区在线| 亚洲第一区色| 亚洲欧美在线播放| 亚洲成人在线视频网站| 欧美久久久久久蜜桃| 亚洲在线播放| 欧美激情1区2区| 欧美亚洲免费电影| 亚洲精品国产精品国自产在线| 国产精品jvid在线观看蜜臀| 亚洲欧美卡通另类91av| 欧美91视频| 欧美一区二区三区视频| 亚洲福利视频一区| 久久精彩免费视频| 亚洲国产老妈| 久久亚洲精选| 亚洲性线免费观看视频成熟| 伊人蜜桃色噜噜激情综合| 欧美日韩色婷婷| 另类尿喷潮videofree| 亚洲一区二区三区乱码aⅴ| 欧美国产亚洲另类动漫| 欧美日韩视频| 蜜乳av另类精品一区二区| 亚洲在线免费观看| 亚洲精品一二区| 裸体一区二区| 欧美一级在线播放| 亚洲视频第一页| 91久久香蕉国产日韩欧美9色| 久久久久久久综合狠狠综合| 一本到12不卡视频在线dvd| 欧美顶级大胆免费视频| 久久久91精品国产一区二区三区 | 夜夜嗨av色综合久久久综合网|