• <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>

             

            SWITCH

            題目描述如下:

            There are N lights in a line. Given the states (on/off) of the lights, your task is to determine at least how many lights should be switched (from on to off, or from off to on), in order to make the lights on and off alternatively.
            Input
            One line for each testcase.
            The integer N (1 <= N <= 10000) comes first and is followed by N integers representing the states of the lights ("1" for on and "0" for off).
            Process to the end-of-file.
            Output
            For each testcase output a line consists of only the least times of switches.
            Sample Input
            3 1 1 1
            3 1 0 1
            Sample Output
            1
            0

            分析:該題看似簡單但卻隱藏著陷阱,題目要求尋找的是最少的切換數(shù),故從第二盞燈開始判斷處理得出的結(jié)論是不一定正確的。通過分析可以發(fā)現(xiàn)該題其實(shí)只存在兩種情況:奇數(shù)位置的燈開著或者偶數(shù)位置的燈開著。這樣可以直觀的處理該題:取奇數(shù)位置燈開著需要切換燈狀態(tài)數(shù)與偶數(shù)位置燈開著需切換燈狀態(tài)數(shù)的較小值。這樣的話需要掃描兩邊燈的狀態(tài)數(shù)組,開銷較大。進(jìn)一步分析,設(shè)a為奇數(shù)位置的燈開著需要切換的燈數(shù),b為偶數(shù)位置燈開著需要切換的燈數(shù)。其實(shí)a+b=n。這樣本題就只需要掃描一遍數(shù)組,且進(jìn)一步優(yōu)化后存儲(chǔ)燈狀態(tài)的數(shù)組也可以省了。具體代碼如下:

             

             1#include <stdio.h>
             2#include <stdlib.h>
             3
             4int main(void)
             5{
             6    int n;
             7    int prev;
             8    int tmp;
             9    int cnt;
            10    int a;
            11    while (scanf("%d"&n) == 1)
            12    {
            13        prev = -1;
            14        cnt = 0;
            15        a = n;
            16        while (n--)
            17        {
            18            scanf("%d"&tmp);
            19            if (tmp == prev)
            20            {
            21                if (tmp == 0)
            22                {
            23                    prev = 1;
            24                }

            25                else
            26                {
            27                    prev = 0;
            28                }

            29                ++cnt;
            30                continue;
            31            }

            32            prev = tmp;
            33        }

            34        if (cnt > a/2)
            35            cnt = a-cnt;
            36        printf("%d\n", cnt);
            37    }

            38    return 0;
            39}

            posted @ 2010-09-20 09:31 李東亮 閱讀(331) | 評(píng)論 (0)編輯 收藏

             

            The Circumference of the Circle

            本題在ZOJ上題號(hào)是1090,在POJ上是2242。題目描述如下:

            Description

            To calculate the circumference of a circle seems to be an easy task - provided you know its diameter. But what if you don't?

            You are given the cartesian coordinates of three non-collinear points in the plane.
            Your job is to calculate the circumference of the unique circle that intersects all three points.

            Input

            The input will contain one or more test cases. Each test case consists of one line containing six real numbers x1,y1, x2,y2,x3,y3, representing the coordinates of the three points. The diameter of the circle determined by the three points will never exceed a million. Input is terminated by end of file.

            Output

            For each test case, print one line containing one real number telling the circumference of the circle determined by the three points. The circumference is to be printed accurately rounded to two decimals. The value of pi is approximately 3.141592653589793.

            Sample Input

            0.0 -0.5 0.5 0.0 0.0 0.5

            0.0 0.0 0.0 1.0 1.0 1.0

            5.0 5.0 5.0 7.0 4.0 6.0

            0.0 0.0 -1.0 7.0 7.0 7.0

            50.0 50.0 50.0 70.0 40.0 60.0

            0.0 0.0 10.0 0.0 20.0 1.0

            0.0 -500000.0 500000.0 0.0 0.0 500000.0

            Sample Output

            3.14

            4.44

            6.28

            31.42

            62.83

            632.24

            3141592.65

            分析:本題是一道比較容易的題,具體就考察了幾個(gè)數(shù)學(xué)公式的使用。本題的關(guān)鍵是求出內(nèi)接三角形的外接圓直徑。而在圓的內(nèi)接三角形的性質(zhì)中有這樣一條:三角形的任何兩邊的乘積的等于第三邊上的高于其外接圓直徑的乘積。這樣問題就轉(zhuǎn)化為求接三角形的某一邊上的高,在知道三角形三個(gè)頂點(diǎn)的情況下,求其面積應(yīng)該是件容易事,求得面積后,高的問題也就迎刃而解。求面積時(shí),由于本人較懶,用的是海倫公式:S = ,其中p = (a+b+c)/2abc分別為三角形的三個(gè)變長,S=0.5*c*h,即可求得ha*b=h*d,那么直徑d也就出來了。具體代碼如下.

            #include <stdio.h>

            #include <stdlib.h>

            #include <math.h>

            int main(void)

            {

                   double x1, y1, x2, y2, x3, y3;

                   double l1, l2, l3;

                   double p;

                   double h;

                   double d;

                   while (scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3) == 6)

                   {

                          l1 = sqrt(pow(x1-x2, 2) + pow(y1-y2, 2));

                          l2 = sqrt(pow(x1-x3, 2) + pow(y1-y3, 2));

                          l3 = sqrt(pow(x2-x3, 2) + pow(y2-y3, 2));

                          p = (l1 + l2 + l3)/2;

                          h = sqrt(p*(p-l1)*(p-l2)*(p-l3))*2/l3;

                          d = l1*l2/h;

                          printf("%.2f\n", 3.141592653589793*d);

                   }

                   return 0;

            }

            posted @ 2010-09-19 22:44 李東亮 閱讀(1508) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共2頁: 1 2 

            posts - 12, comments - 1, trackbacks - 0, articles - 1

            Copyright © 李東亮

            国产精品久久网| 伊人久久成人成综合网222| 狠狠色噜噜色狠狠狠综合久久| 久久久噜噜噜久久中文字幕色伊伊 | 人人妻久久人人澡人人爽人人精品 | 久久亚洲中文字幕精品一区| 亚洲欧美国产日韩综合久久| 中文成人久久久久影院免费观看| 老男人久久青草av高清| 国产精品久久久久久久| 日产久久强奸免费的看| 久久精品国产亚洲AV高清热| 久久99国产精品成人欧美| 午夜精品久久久久久毛片| 日本精品久久久久久久久免费| 香蕉久久夜色精品升级完成| 久久se精品一区二区影院| 无遮挡粉嫩小泬久久久久久久| 国产成人精品久久| 久久久久99精品成人片直播| 中文字幕无码久久人妻| 精品国产婷婷久久久| 久久精品国产亚洲AV无码娇色 | 久久99热只有频精品8| 久久久WWW成人| 亚洲精品国产成人99久久| 久久精品无码专区免费青青| 久久人妻少妇嫩草AV蜜桃| 日韩精品无码久久一区二区三| 欧美伊香蕉久久综合类网站| 精品久久久久久国产潘金莲| 777午夜精品久久av蜜臀| 亚洲伊人久久综合影院| 久久久久亚洲精品男人的天堂| 久久久久免费精品国产| 久久国产乱子伦精品免费强| 久久人爽人人爽人人片AV| 久久午夜羞羞影院免费观看| 亚洲精品国产字幕久久不卡| 亚洲精品乱码久久久久久| 精品久久久久中文字幕日本|