「csp模擬試題202009-1」稱檢測點查詢 C/C++
目錄
題目
輸入輸出樣例
題解思路
題解原始碼(c/c++)
題目 :稱檢測點查詢
題目背景
2020 年 6 月 8 日,國務院聯防聯控機制釋出《關於加快推進新冠病毒核酸檢測的實施意見》,提出對“密切接觸者”等八類重點人群“應檢盡檢”,其他人群“願檢盡檢”。
問題描述
某市設有 n 個核酸檢測點,編號從 1 到 n,其中 i 號檢測點的位置可以表示為一個平面整數座標 (xi, yi)。為方便預約核酸檢測,請根據市民所在位置 ,查詢距其最近的三個檢測點。多個檢測點距離相同時,編號較小的視為更近。
輸入格式
輸入共 n+1 行。
第一行包含用空格分隔的三個整數 n、X 和 Y,表示檢測點總數和市民所在位置。
第二行到第 n+1 行依次輸入 n 個檢測點的座標。第 i+1 行(1 <= i <= n)包含用空格分隔的兩個整數 xi 和 yi,表示 i 號檢測點所在位置。
輸出格式
輸出共三行,按距離從近到遠,依次輸出距離該市民最近的三個檢測點編號。
評測用例規模與約定
全部的測試點滿足 3≤n≤200,所有座標均為整數且絕對值不超過 1000。
輸入輸出樣例
輸入樣例1
3 2 2
2 2
2 3
2 4
輸出樣例1
1
2
3
輸入樣例2
5 0 1
-1 0
0 0
1 0
0 2
-1 2
輸出樣例2
2
4
1
題解思路
題目要求依次輸出距離該市民最近的三個檢測點編號,我們關心的只有距離和編號。建立一個只有距離和編號的結構體,最後進行排序。當距離不等的時候,距離最小的一個結構體在最前面,距離相等的時候,編號最小的在前面。
題解(c/c++)
#include<bits/stdc++.h>
using namespace std;
double distance(int a,int b,int x,int y)
{
return pow(x-a,2)+pow(y-b,2);
}
struct p_person
{
int flag_inputNum;//座標,輸入的第幾個
double dis;
};
int main(void)
{
int n,X,Y;
struct p_person test[210]={0};
cin>>n>>X>>Y;
for (int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
test[i].flag_inputNum=i+1;
test[i].dis=distance(x,y,X,Y);
}
// 從小到大排序
for (int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(test[i].dis>test[j].dis)
{
struct p_person temp=test[i];
test[i]=test[j];
test[j]=temp;
}
else if(test[i].dis==test[j].dis)
{
if(test[i].flag_inputNum>test[j].flag_inputNum)
{
struct p_person temp=test[i];
test[i]=test[j];
test[j]=temp;
}
}
}
}
for(int i=0;i<3;i++)
{
cout<<test[i].flag_inputNum<<endl;
}
return 0;
}
相關文章
- 202009-1 稱檢測點查詢(Java 100)Java
- C語言上機測試模擬題-1C語言
- C語言上機測試模擬題2C語言
- C語言模擬試題1C語言
- C語言模擬試題2C語言
- C語言模擬試題3C語言
- C語言模擬試題4C語言
- C語言模擬試題5C語言
- C語言模擬試題6C語言
- 功能測試-登陸、新增、刪除、查詢測試要點
- 模擬測試框架-Mockito框架Mockito
- ---ios模擬弱網測試---iOS
- 折半查詢(C++實現)C++
- 二分查詢(c++)C++
- c++模擬實現順序表C++
- 模擬標準c++中的RttiC++
- c++筆試題C++筆試
- 用C++模擬蚊子的運動來檢驗概率論內容C++
- 安卓小程式模擬定位測試安卓
- 單元測試模擬框架Mockito框架Mockito
- android按鍵模擬測試Android
- C++ 變數型別查詢C++變數型別
- c++中的查詢list元素C++
- 關於c語言模擬c++的多型C語言C++多型
- C/C++期末考試複習---知識點+習題C++
- Windows10 VS2017 C++模擬點選按鍵WindowsC++
- c++ 建立虛擬站點 (轉)C++
- sed+awk模擬簡單sql查詢SQL
- 面試C++試題 (轉)面試
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- Android單元測試與模擬測試詳解Android
- 如何在C#中模擬C++的聯合(Union)?[C#, C++] How To Simulate C++ Union In C#?C#C++
- C++學習筆記,知識點+程式碼測試C++筆記
- 模擬弱網測試方法總結
- dd模擬asm磁碟容災測試ASM
- 初三奧賽模擬測試1
- 初三奧賽模擬測試4
- c++字串查詢函式實現C++字串函式