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

SRM459

Posted on 2010-01-20 19:24 rikisand 閱讀(359) 評論(0)  編輯 收藏 引用 所屬分類: TopcoderAlgorithm

幾次沒寫了,這兩天給補上~~

晚上果然不清醒,250的就卡了很久,然后直接看1000,算概率的,有個樣例沒看明白,其實早上一下就想明白了···500的十分鐘基本寫對了,沒來得及交~ 倆字 杯具~~

250pt

Problem Statement

Draw a square with side length sideLength on a plane. Then, inscribe a circle in the square. Inscribe another square in that circle, and yet another circle in the second square. Continue this process until K circles appear on the plane.
For example, if K=3, the picture would look like this:

For each circle, compute the area within the circle that does not belong to any other figure inside that circle. Return the sum of those areas. In the example above, the area to compute is colored in stripes.

Definition

Class:
RecursiveFigures

Method:
getArea

Parameters:
int, int

Returns:
double

Method signature:
double getArea(int sideLength, int K)

(be sure your method is public)

Notes

-
Your return value must have an absolute or relative error less than 1e-9.

-
The area of square with side length A is A*A.

-
The area of circle with radius R is pi*R*R.

-
The length of diameter of the circle inscribed in a square is equal to the square's side length.

-
The side length of the square inscribed in circle with radius R is equal to R*sqrt(2).

Constraints

-
sideLength will be between 1 and 100, inclusive.

-
K will be between 1 and 10, inclusive.

Examples

0)

10
1
Returns: 78.53981633974483

1)

10
2
Returns: 67.80972450961724

2)

10
3
Returns: 62.444678594553444

        double getArea(int side, int K)
        {
            double ans = 0.;int n=side;double r=side;
            for(int i=0;i<K;i++){
                ans += r*r*(1-acos(-1.)/4.); //正方形面積減去圓面積
                r /= pow(2.,0.5);
            }
            return n*n - ans;
        }

 

500pt

You are given six integers, minx, maxx, miny, maxy, minz and maxz. Return the number of triplets of integers (x,y,z) that satisfy the following three conditions:

  • x is between minx and maxx, inclusive.
  • y is between miny and maxy, inclusive.
  • z is between minz and maxz, inclusive.
  • x * y = z
Definition

Class:
ProductTriplet

Method:
countTriplets

Parameters:
int, int, int, int, int, int

Returns:
long long

Method signature:
long long countTriplets(int minx, int maxx, int miny, int maxy, int minz, int maxz)

(be sure your method is public)

Constraints

-
maxx will be between 1 and 1,000,000,000, inclusive.

-
maxy will be between 1 and 1,000,000,000, inclusive.

-
maxz will be between 1 and 1,000,000,000, inclusive.

-
minx will be between 1 and maxx, inclusive.

-
miny will be between 1 and maxy, inclusive.

-
minz will be between 1 and maxz, inclusive.

Examples

0)

2
2
3
3
6
6
Returns: 1

2 * 3 = 6.

1)

2
2
3
3
7
7
Returns: 0

2 * 3 is not 7.

2)

6
8
4
5
27
35
Returns: 4

(x,y,z) = (6,5,30), (7,4,28), (7,5,35) and (8,4,32) satisfy all conditions.

3)

1
458
1
458
1
458
Returns: 2877

4)

8176
184561
1348
43168
45814517
957843164
Returns: 2365846085
        int maximumSubset(vector <string> in)
        {
             vector<int> vec(2010,0); 
             int mx=0;
             for(int j=0;j<in.size();j++){
                stringstream ss(in[j]);string str1,str;int s;
                ss>>str1>>str>>s;double k=-1;
                for(int i=0;i<2008;i++){
                    k+=0.5;
                    bool tag=false;
                    if(str=="="){
                        if(s==k)tag=true;
                    }
                    else if(str==">="){
                        if(k>=s)tag=true;
                    }
                    else if(str==">"){
                        if(k>s)tag=true;
                    }
                    else if(str=="<="){
                        if(k<=s)tag=true;
                    }
                    else if(str=="<"){
                        if(k<s)tag=true;
                    } 
                    if(tag)vec[i]++;
                }
             }
                for(int i=0;i<2008;i++)if(vec[i]>mx)mx=vec[i];
             //for(int i=0;i<2008;i++){
                //k+=0.5;
                //for(int j=0;j<in.size();j++){
                //    stringstream ss(in[j]);string str1,str;int s;
                //    ss>>str1>>str>>s;
                //    bool tag=false;
                //    if(str=="="){
                //        if(s==k)tag=true;
                //    }
                //    else if(str==">="){
                //        if(k>=s)tag=true;
                //    }
                //    else if(str==">"){
                //        if(k>s)tag=true;
                //    }
                //    else if(str=="<="){
                //        if(k<=s)tag=true;
                //    }
                //    else if(str=="<"){
                //        if(k<s)tag=true;
                //    } 
                //    if(tag)vec[i]++;
                //}
                //if(vec[i]>mx)mx=vec[i];
             //}
             return mx;
        }

要計算最多能滿足的不等式,其實只需要枚舉所有0到1000的數看看每一個能滿足的最多不等式數量,由于k可以是小數,所以以步長0.5遞增即可

1000pt

A new ride is opened in an amusement park. It consists of N landings numbered from 0 to N-1. Some of the landings are connected with pipes. All of the landings are at different heights, so the pipes are all inclined and can only be traversed downwards.
A ride-taker begins his ride at some landing. The pipes are long enough that he cannot see where they lead before entering them. Therefore, at each landing, any descending pipe adjacent to it has an equal probability of being used by a ride-taker who reached this landing.
A ride is finished when a ride-taker reaches a landing which has no adjacent descending pipes. There are two types of such landings: exits and crocodile ponds. If the ride-taker reaches the exit landing, his ride is over and he safely returns home. If one reaches the crocodile pond, his trip is also over, but he never returns home.
You're given a vector <string> landings describing the ride. Element i of landings describes the i-th landing. If the landing is an exit, the i-th character of landings[i] will be 'E' and the rest of the characters will be '0's (zeroes). If it is a crocodile pond, the i-th character will be 'P' and the rest will be '0's. If the landing has at least one adjacent descending pipe, the j-th character of landings[i] will be '1' (one) if a pipe descends from the i-th landing to the j-th, and '0' (zero) otherwise.
A ride-taker began his ride at a randomly chosen landing, used a total of K pipes throughout his descent and safely returned home afterwards. Each of the landings has the same probability of being chosen as the initial landing of the ride. Compute the probability that he started the ride at landingstartLanding.

Definition

Class:
ParkAmusement

Method:
getProbability

Parameters:
vector <string>, int, int

Returns:
double

Method signature:
double getProbability(vector <string> landings, int startLanding, int K)

(be sure your method is public)

Notes

-
Your return value must have an absolute or relative error less than 1e-9.

Constraints

-
landings will contain exactly N elements, where N is between 2 and 50, inclusive.

-
Each element of landings will contain exactly N characters.

-
Each character in landings will be '0' (zero), '1' (one), 'E', or 'P'.

-
If the i-th element of landings contains an 'E', it will contain only one 'E' as its i-th character, and all other characters in that element will be '0'.

-
If the i-th element of landings contains a 'P', it will contain only one 'P' as its i-th character, and all other characters in that element will be '0'.

-
If the i-th element of landings doesn't contain an 'E' or a 'P', it will contain at least one '1' character. The i-th character of such element will always be '0'.

-
K will be between 1 and N-1, inclusive.

-
startLanding will be between 0 and N-1, inclusive.

-
There will be no cycles in landings, i.e. it's never possible to return to the same landing after descending through several pipes.

-
There will be at least one landing from which it is possible to reach an exit using exactly K pipes.

Examples

0)

{"E000",
 "1000",
 "1000",
 "1000"}
1
1
Returns: 0.3333333333333333

The ride contains 4 landings, one of which is an exit. Each of the other landings has a single pipe descending to the exit landing. Therefore, each of them could be the starting landing with equal probability of 1/3.

1)

{"E000",
 "1000",
 "1001",
 "000P"}
1
1
Returns: 0.6666666666666666

This time, there is an exit landing and a crocodile pond. Of the other two landings, the first has a descending pipe only to the exit, while the second is connected both to the exit and to the pond. So, the probability of reaching an exit starting from landing 2 is lower and the chances of ground 1 being the start of the journey increase.

2)

{"01000100",
 "00111000",
 "00001010",
 "000E0000",
 "0000E000",
 "00000P00",
 "000000P0",
 "01000000"}
1
2
Returns: 0.14285714285714288

Analyzing the graph above, we can see that landings 0, 1 and 7 could be the starting landings. One can reach an exit from landing 0 using 2 pipes with probability 2/6, from landing 1 with probability 1/6 and from landing 7 with probability 2/3. Therefore, the probability that the ride-taker began from landing 1 is equal to (1/6)/(2/3+2/6+1/6)=1/7.

3)

{"0100",
 "0010",
 "0001",
 "000E"}
0
2
Returns: 0.0

Obviously, the only way to get to the exit landing using 2 pipes is from ground 1. Therefore there is no chance that landing 0 was the initial ground.

4)

{"E00",
 "0E0",
 "010"}
0
1
Returns: 0.0

Note that some sections of the ride might be disconnected.

#define REP(i, n) for (int i = 0; i < (n); ++i)  
double dp[55][55];
vector<string> A ; int N;
int mp[55];
double cacl(int now,int steps){
    if(dp[now][steps]!=-1)return dp[now][steps];
    double& t = dp[now][steps];
    t=0.;int cnt=0;
    REP(i,N){
        if(A[now][i]=='1'){
            cnt++;t+=cacl(i,steps-1);
        }
    }
    t /= cnt;
    return t;
}
class ParkAmusement
{
        public:
        double getProbability(vector <string> land, int start, int K)
        {
            A=land;      N=land.size();
            REP(i,N+1)REP(j,N+1)dp[i][j]=-1;
            memset(mp,0,sizeof(mp));// 0 
            REP(i,N) 
                REP(j,N){
                    if(A[i][j]=='E'){
                        mp[i]=1;
                        REP(k,N+1)dp[i][k]=0.;
                        dp[i][0]=1.;
                    }
                    else if(A[i][j]=='P')
                    {
                        mp[i]=2;
                        REP(k,N+1)dp[i][k]=0.;
                    }
                } 
            for(int i=0;i<N;i++) 
                cacl(i,K); 
            double ans=0.;
            REP(i,N)ans+=dp[i][K];
            return dp[start][K]/ans;
        }

要求從某個出發安全完成的概率,應該等于從這里出發安全完成的概率比上從各個點出發安全完成概率和。因此要求從每一個點出發安全到達的概率。由于計算中可能出現重復計算,因此使用備忘錄memo[i][j] 計算從i出發經過j步驟安全到達的概率,而此點概率即為此點到其各個鄰接點的安全概率和除以鄰接點個數,所以很簡單,一遍就ac了,可惜晚上沒想明白~

 

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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一区二区三区免费区| 性欧美xxxx视频在线观看| 国产农村妇女毛片精品久久麻豆 | 国产麻豆午夜三级精品| 亚洲国产精品传媒在线观看| 欧美一级理论性理论a| 午夜精品在线| 亚洲国产日日夜夜| 欧美一级理论性理论a| 久久国产欧美精品| 国产欧美va欧美不卡在线| 久久精品视频网| 亚洲午夜高清视频| 欧美日韩在线精品一区二区三区| 亚洲国产精品激情在线观看| 91久久国产自产拍夜夜嗨| 亚洲欧美日韩国产成人精品影院 | 亚洲特色特黄| 亚洲第一黄色网| 久久人人超碰| 在线日韩av片| 欧美成人免费在线观看| 欧美日韩免费看| 久久久久久亚洲综合影院红桃 | 亚洲高清不卡av| 国产精品成人一区| 亚洲一区二区成人| 亚洲最新视频在线| 激情综合网址| 欧美激情日韩| 欧美日韩福利| 亚洲综合成人在线| 亚洲欧美成人网| 国产在线欧美| 欧美www视频在线观看| 免费亚洲电影在线| 一片黄亚洲嫩模| 中文精品视频| 国产亚洲精品v| 欧美激情免费在线| 国产亚洲一区二区三区在线播放| 亚洲精品在线电影| 国产精品美女诱惑| 快播亚洲色图| 欧美激情中文不卡| 亚洲综合首页| 欧美精品日韩综合在线| 欧美成人激情视频免费观看| 国产毛片精品国产一区二区三区| 91久久精品国产| 亚洲片在线观看| 亚洲综合色婷婷| 亚洲欧美日韩一区二区| 欧美日韩国产成人在线| 91久久中文| 亚洲美女视频| 欧美一区二区三区免费观看视频| 亚洲成人在线网| 久久久久久国产精品mv| 99国产精品视频免费观看一公开| 亚洲一区免费网站| 亚洲激情一区| 欧美成人69| 欧美一区亚洲| 欧美精品一区二区三区一线天视频| 亚洲免费在线观看视频| 欧美午夜激情在线| 欧美gay视频| 亚洲国产欧洲综合997久久| 久久综合激情| 久久久久久穴| 亚洲国产精品国自产拍av秋霞| 久久精品视频在线观看| 午夜久久影院| 欧美日韩精品系列| 一本一本久久| 一区二区三区日韩| 麻豆国产精品一区二区三区| 欧美一区二区黄| 狠狠噜噜久久| 午夜精品久久久久| 亚洲一区久久久| 国产亚洲成精品久久| 亚洲日本久久| 亚洲国产综合在线| 欧美乱人伦中文字幕在线| 亚洲视频在线二区| 久久久久久网站| 日韩小视频在线观看| 国产精品午夜在线观看| 99热在线精品观看| 久久理论片午夜琪琪电影网| 亚洲国产99精品国自产| 欧美日韩精品欧美日韩精品| 小处雏高清一区二区三区| 欧美成人国产一区二区| 亚洲午夜视频在线观看| 伊人婷婷欧美激情| 久久婷婷蜜乳一本欲蜜臀| 亚洲人成免费| 久久综合狠狠| 亚洲字幕一区二区| 亚洲国产一区二区视频| 国产精品日韩久久久久| 免费观看成人鲁鲁鲁鲁鲁视频| 一级日韩一区在线观看| 欧美va天堂在线| 欧美在线视频免费观看| 国产欧美视频一区二区| 欧美激情第4页| 亚洲精品日产精品乱码不卡| 久久精品综合| 亚洲电影在线看| 国产片一区二区| 欧美日韩在线观看视频| 美日韩丰满少妇在线观看| 香蕉久久夜色精品国产使用方法| 亚洲经典三级| 欧美大片一区二区三区| 久久精品一区四区| 欧美一级大片在线免费观看| 日韩图片一区| 亚洲欧洲综合| 91久久亚洲| 亚洲高清av| 影院欧美亚洲| 狠狠色狠狠色综合日日小说| 国产精品嫩草久久久久| 欧美视频一区二区三区| 校园激情久久| 午夜精品一区二区三区在线 | 亚洲欧美日韩中文播放| 亚洲理论在线| 亚洲欧洲一区| 亚洲日本无吗高清不卡| 国产精品久久7| 欧美日韩一区二区三区在线观看免 | 久久精品亚洲| 久久精品人人| 久久久综合网站| 久久综合网hezyo| 久久先锋影音| 女人香蕉久久**毛片精品| 麻豆精品网站| 亚洲国产精品久久久久久女王 | 欧美私人网站| 欧美色网在线| 国产精品色婷婷| 国产欧美一区二区精品忘忧草| 国产精品日韩一区二区| 国产精品自拍网站| 狠狠色综合网| 亚洲欧洲日韩综合二区| 夜夜嗨av一区二区三区| 亚洲性xxxx| 久久精品欧美日韩| 欧美大片一区| 99精品国产热久久91蜜凸| 中文亚洲欧美| 久久精品免视看| 欧美xx69| 国产精品大全| 18成人免费观看视频| 9色精品在线| 久久国产视频网站| 欧美激情无毛| 亚洲一区二区三区乱码aⅴ蜜桃女| 香蕉精品999视频一区二区 | 亚洲靠逼com| 午夜精品久久久久久99热| 久久综合久久久久88| 欧美日韩中文字幕| 国内一区二区三区在线视频| 最新高清无码专区| 午夜伦欧美伦电影理论片| 美女网站在线免费欧美精品| 久久成人精品一区二区三区| 免费不卡中文字幕视频| 99精品欧美一区二区三区| 欧美一级理论片| 欧美日韩久久不卡| 狠狠爱成人网| 亚洲欧美日韩爽爽影院| 欧美国产极速在线| 亚洲综合首页| 欧美日韩国产精品一区| 精品粉嫩aⅴ一区二区三区四区| av成人毛片| 欧美激情偷拍| 久久久91精品国产一区二区精品| 欧美日韩国产成人在线观看| 狠狠爱综合网| 欧美在线视频免费观看| 99成人免费视频| 欧美激情综合网| 亚洲国产人成综合网站|