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

oyjpArt ACM/ICPC算法程序設計空間

// I am new in programming, welcome to my blog
I am oyjpart(alpc12, 四城)
posts - 224, comments - 694, trackbacks - 0, articles - 6

SRM401 550 PTS ParticleCollision

Posted on 2008-05-07 02:32 oyjpart 閱讀(2232) 評論(0)  編輯 收藏 引用 所屬分類: ACM/ICPC或其他比賽

Problem Statement

    

Particles (which can be considered points in 3D-space for the purposes of the problem) can move in an electro-magnetic field. If a particle is charged, its trajectory can be described as spiral, and if it is uncharged, it is just a straight line. Given two particles (one charged and one uncharged) it should be determined whether they can possibly collide or not. Two particles can possibly collide if and only if their trajectories intersect.

Some steps have already been made by the physicist to simplify the problem, so the coordinates of the charged particle are represented as follows:

x1 = cos(PI * t)

y1 = sin(PI * t)

z1 = t

and for the uncharged particle:

x2 = vx * t + x0

y2 = vy * t + y0

z2 = vz * t + z0

Here t is a parameter which can be chosen arbitrarily and independently for both trajectories.

Your method will be given 6 integers - vx, vy, vz, x0, y0 and z0, describing the trajectory of the uncharged particle. It should determine whether the two given trajectories intersect or not. If they do, it should return a vector <double> containing exactly 3 elements x, y and z - the coordinates of the point where a collision can happen. If there is more than one such point, it should return a vector <double> containing exactly three zeroes. If collision of the two particles is impossible it should return an empty vector <double>.

Definition

    
Class: ParticleCollision
Method: collision
Parameters: int, int, int, int, int, int
Returns: vector <double>
Method signature: vector <double> collision(int vx, int vy, int vz, int x0, int y0, int z0)
(be sure your method is public)
    

Notes

- PI can be considered equal to 3.14159265358979323846.
- All return values with either an absolute or relative error of less than 1.0E-9 are considered correct.

Constraints

- vx, vy and vz will each be between -10 and 10, inclusive.
- x0, y0 and z0 will each be between -10 and 10, inclusive.

Examples

0)
    
0
0
0
0
0
0
Returns: { }
The second trajectory is a single point (0, 0, 0), which doesn't lie on the first trajectory.
1)
    
2
4
1
-1
-1
0
Returns: {0.0, 1.0, 0.5 }
There is a single intersection point with coordinates (0, 1, 0.5).
2)
    
4
4
2
5
4
0
Returns: {0.0, 0.0, 0.0 }
There are two intersection points.
3)
    
0
0
1
1
0
0
Returns: {0.0, 0.0, 0.0 }
There are infinitely many intersection points.

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.


要做這道題,要注意很多問題:
1.看清題,題目中說了t是independent
2.解一元二次方程要會吧!系數A,B,C的判定不要漏掉
3.特殊情況下A=B=C什么時候有解考慮清楚

這樣你就可以過題了!!!

#pragma warning ( disable : 4786 )

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <queue>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

const double PI = acos(-1.0);

#define sz(x) ((int)(x).size())
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define MAXINT 1000000000
#define EPS 1e-8
#define FOR(a,b,c) for(a=(b);(a)<(c);++(a))
#define REP(a,b) FOR(a,0,b)
typedef vector<int> VI;

inline int dblcmp(double a, double b) {
    if(fabs(a-b) < EPS) return 0;
    return a < b ? -1 : 1;
}

//typedef long long LL;

/*
cos(PI * t1)=vx * t2 + x0
sin(PI * t1)=vy * t2 + y0
t1=vz*t2+z0
*/


class ParticleCollision
{
public:
    int vx, vy, vz, x0, y0, z0;

    bool check(double t2) {
        double x2 = vx * t2 + x0;
        double y2 = vy * t2 + y0;
        double t1 = vz * t2 + z0;

        if(dblcmp(cos(PI * t1), vx * t2 + x0)==0
            && dblcmp(sin(PI * t1),vy * t2 + y0)==0
            && dblcmp(t1,vz*t2+z0)==0)
            return true;
        return false;

    }
    vector <double> collision(int _vx, int _vy, int _vz, int _x0, int _y0, int _z0)
    {
        vz=1;
        vx = _vx;
        vy = _vy;
        vz = _vz;
        x0 = _x0;
        y0 = _y0;
        z0 = _z0;
        vector<double> mul(3, 0.0);
        vector<double> empty;
        int i, j;
        double a = vx*vx + vy*vy;
        double b = 2 * vx * x0 + 2 * vy * y0;
        double c = x0 * x0 + y0 * y0 - 1;
    //    printf("a = %lf b = %lf c = %lf\n", a, b, c);
        double det = b*b-4 * a * c;
        if(dblcmp(a, 0.0) == 0) {
            if(dblcmp(b, 0.0) == 0) {
                if(dblcmp(c, 0.0) == 0) {
                    if(dblcmp(vz, 0.0) == 0) {
                        if(dblcmp(x0, cos(PI * z0)) == 0
                            && dblcmp(y0, sin(PI * z0)) == 0) {
                            vector<double> ret;
                            ret.push_back(x0);
                            ret.push_back(y0);
                            ret.push_back(z0);
                            return ret;
                        }
                    }
                    else return mul;
                }
                return empty;
            }
            double t = -c / b;
            if(check(t)) {
                vector<double> ret;
                ret.push_back(vx * t + x0);
                ret.push_back(vy * t + y0);
                ret.push_back(vz * t + z0);
                return ret;
            }
            return empty;
        }
    //    printf("det = %lf\n", det);
        int x = dblcmp(det, 0);
        if(x == 1) {
            int cnt = 0;
            vector<double> ret;
            for(i = 0; i < 2; ++i) {
                double t;
                if(i == 0) t = (-b - sqrt(det)) / 2 / a;
                if(i == 1) t = (-b + sqrt(det)) / 2 / a;
                
                if(check(t)) {
                    ret.push_back(vx * t + x0);
                    ret.push_back(vy * t + y0);
                    ret.push_back(vz * t + z0);
                    cnt++;
                }
            }
            if(cnt == 0) return empty;
            else if(cnt == 1) return ret;
            else return mul;
        }
        else if( x== -1) return empty;
        else {
            double t = (-b + sqrt(det)) / 2 / a;
            if(check(t)) {
                vector<double> ret;
                ret.push_back(vx * t + x0);
                ret.push_back(vy * t + y0);
                ret.push_back(vz * t + z0);
                return ret;
            }
            return empty;
        }
    }
   
 
};



// Powered by FileEdit
// Powered by TZTester 1.01 [25-Feb-2003]
// Powered by CodeProcessor
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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福利精品导航| 亚洲欧美日韩国产另类专区| 国产美女精品视频| 久久久久看片| 免费看精品久久片| 日韩亚洲欧美综合| 一本久道久久综合狠狠爱| 欧美日韩视频在线| 久久国产福利| 久久婷婷久久| 在线亚洲精品福利网址导航| 亚洲一区二区精品在线| 狠狠干综合网| 亚洲欧洲一区二区三区在线观看| 欧美人与禽猛交乱配视频| 亚洲欧美国产不卡| 久久九九电影| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲高清自拍| 亚洲免费观看高清完整版在线观看熊| 国产精品多人| 免费看的黄色欧美网站| 欧美另类极品videosbest最新版本| 中日韩美女免费视频网址在线观看| 亚洲综合色自拍一区| 揄拍成人国产精品视频| 一本大道久久精品懂色aⅴ| 国产午夜精品全部视频播放| 亚洲成人在线视频播放| 国产欧美日韩综合| 日韩一级免费观看| 亚洲国产婷婷| 亚洲欧美在线aaa| 日韩午夜免费视频| 久久国产精品久久国产精品| 一区二区日本视频| 久久久久国产免费免费| 亚洲欧美视频在线| 欧美激情性爽国产精品17p| 亚洲直播在线一区| 欧美国产一区在线| 欧美二区在线播放| 国内成+人亚洲| 亚洲影院色在线观看免费| 亚洲精品一区二区三区av| 午夜精品久久久久久久久 | 国产精品女主播| 亚洲欧洲综合另类| 亚洲国产精品久久精品怡红院| 亚洲欧美成人网| 亚洲免费综合| 欧美天堂在线观看| 日韩西西人体444www| 亚洲黄色成人网| 久久婷婷麻豆| 美女免费视频一区| 国模叶桐国产精品一区| 欧美专区在线| 久久久亚洲午夜电影| 国产美女精品一区二区三区| 亚洲一级在线观看| 性久久久久久| 国产精品自拍三区| 香蕉久久夜色| 久久久亚洲国产天美传媒修理工| 国产精品制服诱惑| 欧美亚洲综合在线| 久久午夜视频| 在线观看福利一区| 欧美成人免费在线视频| 亚洲高清二区| 这里只有精品视频在线| 欧美日韩精品| 亚洲一卡久久| 久久蜜桃香蕉精品一区二区三区| 国产一区二区久久精品| 久久精品九九| 亚洲电影毛片| 这里只有精品电影| 国产精品少妇自拍| 久久精品国产亚洲5555| 欧美成年人视频| 亚洲免费电影在线观看| 欧美日韩亚洲一区二区| 亚洲新中文字幕| 久久免费观看视频| 亚洲欧洲一区| 国产精品视频精品| 久久久亚洲高清| 日韩视频一区二区在线观看| 午夜精品www| 在线观看欧美日韩国产| 欧美激情综合网| 亚洲欧美日韩另类精品一区二区三区| 久久嫩草精品久久久久| 一本色道久久综合亚洲精品婷婷| 国产精品乱人伦一区二区| 久久国产精品亚洲va麻豆| 亚洲经典三级| 久久精品国产一区二区三区| 亚洲精品资源美女情侣酒店| 国产精品亚洲精品| 欧美成人免费一级人片100| 亚洲砖区区免费| 亚洲国产另类久久精品| 性色av一区二区三区红粉影视| 一区二区在线视频| 国产精品激情| 欧美二区在线观看| 欧美一区二区成人| 一区二区日韩免费看| 免费成人激情视频| 久久国产主播| 亚洲欧美日韩国产一区二区| 亚洲高清免费视频| 国产日韩精品视频一区| 欧美三级视频在线播放| 免费av成人在线| 久久xxxx精品视频| 亚洲天堂av在线免费| 最新国产の精品合集bt伙计| 久久久久国产一区二区| 亚洲永久字幕| 亚洲无吗在线| 夜夜爽av福利精品导航| 亚洲国产精品一区| 国产乱码精品一区二区三区不卡 | 麻豆精品传媒视频| 欧美一区二区视频在线观看| 一区二区三区欧美视频| 亚洲欧洲在线免费| 亚洲国产91精品在线观看| 久久久美女艺术照精彩视频福利播放 | 亚洲麻豆国产自偷在线| 在线观看视频日韩| 在线观看一区| 在线观看欧美一区| 在线日本成人| 在线观看欧美黄色| 亚洲高清久久久| 在线日韩一区二区| 亚洲第一页在线| 亚洲人久久久| 亚洲毛片一区| 野花国产精品入口| 亚洲性人人天天夜夜摸| 亚洲尤物精选| 欧美一二三视频| 欧美在线观看日本一区| 久久国产精品久久久| 久久国产精品一区二区| 久久久999| 蜜桃av噜噜一区| 亚洲国产福利在线| 亚洲精品一二| 正在播放欧美一区| 性做久久久久久| 久久阴道视频| 欧美久久久久| 国产精品毛片大码女人| 国产欧美69| 影音先锋亚洲视频| 亚洲三级影片| 午夜精品久久久久久久久久久久| 久久精品中文字幕一区二区三区| 老司机精品视频网站| 亚洲国产一区二区a毛片| a4yy欧美一区二区三区| 亚洲欧美文学| 欧美成人有码| 国产精品久99| 在线成人激情视频| 正在播放亚洲| 久久久久久夜| 亚洲裸体视频| 久久久久9999亚洲精品| 欧美日韩福利视频| 黄色综合网站| 亚洲一区在线免费| 免费国产自线拍一欧美视频| 亚洲日韩第九十九页| 欧美亚洲专区| 欧美日韩综合视频| 1024亚洲| 欧美在线视频观看| 亚洲三级网站| 久久久夜夜夜| 国产精品亚洲片夜色在线| 亚洲区免费影片| 久久久噜噜噜久久久| 一本一本久久a久久精品综合麻豆| 久久精品国产综合精品| 国产精品igao视频网网址不卡日韩| 韩日欧美一区二区| 香蕉久久夜色| 99精品欧美| 欧美欧美在线|