1、裁剪網(wǎng)格紙
題目描述
度度熊有一張網(wǎng)格紙,但是紙上有一些點(diǎn)過的點(diǎn),每個(gè)點(diǎn)都在網(wǎng)格點(diǎn)上,若把網(wǎng)格看成一個(gè)坐標(biāo)軸平行于網(wǎng)格線的坐標(biāo)系的話,每個(gè)點(diǎn)可以用一對整數(shù)x,y來表示。度度熊必須沿著網(wǎng)格線畫一個(gè)正方形,使所有點(diǎn)在正方形的內(nèi)部或者邊界。然后把這個(gè)正方形剪下來。問剪掉正方形的最小面積是多少。 輸入描述: 第一行一個(gè)數(shù)n(2≤n≤1000)表示點(diǎn)數(shù),接下來每行一對整數(shù)xi,yi(-1e9<=xi,yi<=1e9)表示網(wǎng)格上的點(diǎn) 輸出描述: 一行輸出最小面積 輸入例子: 2 0 0 0 3
輸出例子: 9
題目分析:
只要找出給出的坐標(biāo)中橫坐標(biāo)和縱坐標(biāo)的對應(yīng)的最大值和最小值的差值,取較大的值,進(jìn)行平方即可。
代碼實(shí)現(xiàn):
#include<iostream>using namespace std;#include<algorithm>#include<vector>//裁剪網(wǎng)格紙int GetMinArea(vector<int> x, vector<int> y){ if (x.size() == 0 || y.size() == 0) return 0; //找出橫縱坐標(biāo)的最大差值 int diffX = 0; int diffY = 0; sort(x.begin(),x.end()); sort(y.begin(),y.end()); diffX = x[x.size() - 1] - x[0]; diffY = y[y.size() - 1] - y[0]; if (diffX > diffY) return diffX*diffX; else return diffY * diffY;}int main(){ int n = 0; vector<int> x; vector<int> y; while (cin >> n) { while (n--) { int row = 0; int col = 0; cin >> row >> col; x.push_back(row); y.push_back(col); } cout << GetMinArea(x, y) << endl; x.clear(); y.clear(); } return 0;}2、釣魚比賽
題目描述
ss請cc來家里釣魚,魚塘可劃分為n*m的格子,每個(gè)格子有不同的概率釣上魚,cc一直在坐標(biāo)(x,y)的格子釣魚,而ss每分鐘隨機(jī)釣一個(gè)格子。問t分鐘后他們誰至少釣到一條魚的概率大?為多少? 輸入描述: 第一行五個(gè)整數(shù)n,m,x,y,t(1≤n,m,t≤1000,1≤x≤n,1≤y≤m); 接下來為一個(gè)n*m的矩陣,每行m個(gè)一位小數(shù),共n行,第i行第j個(gè)數(shù)代表坐標(biāo)為(i,j)的格子釣到魚的概率為p(0≤p≤1) 輸出描述: 輸出兩行。第一行為概率大的人的名字(cc/ss/equal),第二行為這個(gè)概率(保留2位小數(shù)) 輸入例子: 2 2 1 1 1 0.2 0.1 0.1 0.4 輸出例子: equal 0.20
題目分析:
分別計(jì)算出ss和cc釣到魚的概率,進(jìn)行比較。t分鐘釣到至少一個(gè)魚的概率可以這樣計(jì)算:1-t分鐘一只魚都沒有釣到的概率。 格式輸出(保留小數(shù)點(diǎn)后兩位): setiosflags(ios::fixed) , setPRecision(2)
代碼實(shí)現(xiàn):
#include<iostream>using namespace std;#include <iomanip>#include<math.h>void Match(float a[],int n, int m, int x,int y,int t){ float cc = a[(x-1)*m+y-1]; float ss = 0.0; for (int i = 0; i < n*m; ++i) { ss += a[i]; } ss /= (n*m); if (cc > ss) { cout << "cc" << endl << setiosflags(ios::fixed) << setprecision(2) << 1 - pow(1 - cc, t)<<endl; } else if (cc == ss) { cout << "equal" << endl << setiosflags(ios::fixed) << setprecision(2)<<1 - pow(1 - ss, t) <<endl; } else { cout << "ss" << endl << setiosflags(ios::fixed) << setprecision(2) <<1 - pow(1 - ss, t)<<endl; }}int main(){ int n = 0, m = 0, x = 0, y = 0,t = 0; while (cin >> n >> m >> x >> y >> t) { float* a = new float[n*m]; for (int i = 0;i < n; ++i) { for (int j = 0; j < m; ++j) { cin>>a[m * i + j]; } } Match(a, n,m, x,y,t); } return 0;}