360公司2018春季招聘編程題

1.畫板

題目描述:
沫璃有一個畫板,畫板可以抽象成有100行每行100個像素點的正方形。沫璃在畫板上畫畫,她一共畫了n次,每次將一個矩形塗上顏色。沫璃想知道一共有多少個像素點被她塗過顏色。若一個像素點被塗了k次,那麼認爲有k個像素點被塗過顏色。

 

輸入描述
第一行一個數T(T<=100),表示數據組數。
對於每組數據,第一行一個整數n , (1<=n<=100)
接下來n行,每行4個整數x1, y1,x2, y2 (1 <= x1 <= x2 <= 100,

1 <= y1 <= y2 <= 100),表示矩形的兩個對角所對應的像素點的座標。

 

輸出描述

對於每組數據,輸出一行,表示沫璃一共塗了多少個像素點。

 

示例

輸入:

2

2

1 1 2 3

2 2 3 3

2

1 1 3 3

1 1 3 3

輸出:

10

18

 

方案:每塗一個矩形(假設對角座標爲(x0,y0),(x1,y1)),其內的像素點個數爲

(x1-x0+1) * (y1-y0+1);

#include <iostream>

using namespace std;

int main(){

    int T;

    cin>>T;

    while(T--){

        int n;

        cin>>n;

        int result = 0;

        while(n--){

            int x0,y0,x1,y1;

            cin>>x0>>y0>>x1>>y1;

            result += (x1-x0 + 1) * (y1-y0+1);

        }

         

        cout<<result<<endl;

         

    }

    return 0;

}

 

2.交易

題目描述:
沫璃發起了一場交易,她將她的5個朋友聚在一起準備進行一場交易。交易開始前,大家各有b(b>0)個硬幣,交易後,每個人有ai個硬幣。由於硬幣不方面攜帶,在交易過程中可能會丟失。現在沫璃想知道是否一定丟失硬幣,或者在可能沒有丟失硬幣的情況下,交易前每個人的硬幣數b。沫璃只是組織者,不參與交易。

輸入描述:

第一行一個數T(T<=100),表示數據組數。

對於每組數據,第一行5個整數,第i個整數ai表示交易後第i個朋友的硬幣數(0<=ai<=100)

輸出描述:

對於每組數據,輸出一行,若一定丟失硬幣輸出-1,若可能沒有丟失硬幣,輸出b。

示例:

輸入:

2

2 5 4 0 4

4 5 9 2 1

輸出:

3

-1

 

方案:由題目可知,當硬幣總數可以被5整除時,則說明沒有丟失;反之則丟失。同時要考慮硬幣數爲0的情況。

#include <iostream>

using namespace std;

int main(){

    int T;

    cin>>T;

    while(T--){

        int sum = 0;

        int result = -1;

        int n = 5;

        while(n--){

            int tmp=0;

            cin>>tmp;

            sum += tmp;

        }

        if(sum != 0 && sum % 5 == 0){

            result = sum / 5;

        }

        cout<<result<<endl;

    }

    return 0;

}

 

 

3.派對

題目描述
沫璃邀請她的朋友參加週末的派對。沫璃買了3種顏色的氣球,現在她要有這些氣球來裝飾餐桌,每個餐桌只用恰好3個氣球裝飾,要求3個氣球的顏色不能完全一樣,可以是2種或者3種顏色。沫璃想知道這些氣球最多能裝飾多少張餐桌。

 

輸入描述

第一行一個數T(T<=100),表示數據組數。

對於每組數據,第一行3個整數r,g,b,分別表示三種顏色的氣球個數(0<=r, g, b<=2*10^9)

輸出描述:

對於每組數據,輸出一行,一個整數表示最多能裝飾的餐桌數量。

示例

輸入:

2

5 4 3

2 3 3

輸出

4

2

方案:首先注意氣球個數的範圍,因此應選擇long 類型或者long long類型。

分類討論:

如果最大的氣球個數比兩個小的加起來的2倍還大,那麼最大的一些氣球就用不到,可裝飾的桌子爲兩個小的加起來的和;反之,則爲三個加起來的和直接除3即可。

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

int main(){

    int T;

    cin>>T;

    while(T--){

        long c;

        int n = 3;

        vector<long> color;

        while(n--){

            cin>>c;

            color.push_back(c);

        }     

       sort(color.begin(),color.end());

        long result = 0;

        if(color[2] > 2*(color[0]+color[1])){

           result  = color[0] + color[1];

        }

        else{

            result = (color[0] + color[1] + color[2])/3;

        }

        cout<<result<<endl;

 

    }

    return 0;

}

4.賽馬

題目描述
茉莉有2n匹馬,每匹馬都有一個速度v,現在茉莉將馬分爲兩個隊伍,每個隊伍各有n匹馬,兩個隊之間進行n場比賽,每場比賽兩隊各派出一匹馬參賽,每匹馬都恰好出場一次。茉莉想知道是否存在一種分配隊伍的方法使得無論怎麼安排比賽,第一個隊伍都一定能獲的全勝,兩匹馬若速度不一樣,那麼速度快的獲勝,若速度一樣,則都有可能獲勝。

 

輸入描述

第一行一個數T(T<=100),表示數據組數。
對於每組數據,第一行一個整數n , (1<=n<=100)
接下來一行,2*n個整數,第i個整數vi表示第i匹馬的速度,

(1<= vi <= 1000)。

輸出描述

對於每組數據,輸出一行,若存在一種分配方法使得第一個隊伍一定能獲得全勝,

輸出YES,否則輸出NO.

 

示例:

輸入:

2

2

1 2 3 4

1

1 1

輸出

YES

NO

 

方案:
將速度數據排序,中間兩個數若相同,則NO;反之未YES。

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

 

int main(){

    int T=0;

    cin>>T;

 

    while(T--){

        int n;

        cin>>n;

        vector<int> v;

        int tmp;

       for(int i=0;i<2*n;i++){

           cin>>tmp;

           v.push_back(tmp);

       }

        sort(v.begin(),v.end());

        if(v[n - 1] == v[n]){

            cout<<"NO"<<endl;

        }

        else{

            cout<<"YES"<<endl;

        }

    }

    return 0;

}

 

5.玫瑰花

題目描述:

K種不同的玫瑰花,現在要擺放在N個位置上,要求每種顏色的花至少出現過一次,請問有多少種不同的方案數呢?,因爲答案可能很大,你只需要輸出它對772235取餘後的結果.

輸入描述:

輸入只有1行,分別有兩個整數N,K( 1 <= N <= 50000 , 1 <= K <= 30 )

輸出描述:

輸出一行表示答案

示例:

輸入

3 2

輸出

6

 

6.奇異長度

題目描述:
給你一個圖,0節點連接這一個聯通塊a,1節點連接着一個聯通塊b,ab僅由01這條邊相連。現在我們定義奇異路徑爲恰好經過0-1這條邊一次的路徑。在這個圖中有無數條奇異路徑,問第k長的奇異路徑長度是多少?

 

輸入描述:

輸入若干行,第一行有三個正整數n,m,k,表示有n個節點,0~n-1,有m條邊,問第k長,接下來有m行u,v,表示邊,保證0-1邊只出現一次,保證a,b聯通塊只通過0-1相連。 5<=n<=100,k<2^40

 

輸出描述

輸出一行表示答案。

 

示例

輸入:

5 4 10

0 1

0 2

1 3

1 4

 

輸出

4

 

 

 

總結:

1.平臺上處理多組數據的方式。

   int T;

   cin>>T;

   while(T--){

...

}

 

2.sort函數的使用,默認按非降序排序。

參考博客:

https://www.cnblogs.com/TX980502/p/8528840.html

 

3.注意題目中的數值條件範圍設置。

參考博客:

各數據類型取值範圍:

https://www.runoob.com/cplusplus/cpp-data-types.html

https://www.cnblogs.com/cing/p/8038055.html

https://www.csdn.net/gather_25/MtzaYgysNDgtYmxvZwO0O0OO0O0O.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章