1. 程式人生 > >【洛谷刷題記】(2)P1250~P1259

【洛谷刷題記】(2)P1250~P1259

這個系列沒有按照題目編號而是隨便寫的
————————————華麗的分割線————————————
P1250
木有題解
————————————華麗的分割線————————————
P1251
木有題解
————————————華麗的分割線————————————
P1252
木有題解
————————————華麗的分割線————————————
P1253
木有題解
————————————華麗的分割線————————————
P1254
木有題解
————————————華麗的分割線————————————
P1255
木有題解
————————————華麗的分割線————————————

P1256
木有題解
————————————華麗的分割線————————————
P1257
這道題一看以為要優化暴力結果。。。
想到了快的方法WA了,改成正確的又T了,空間換時間又MLE了。。。
結果發現正解就是暴力???(貌似要優化一下
正解:每輸入一個座標就把之前的對一遍更新答案
沒錯多麼短
不過計算距離的語句太長了以至於要專門搞個函式qwq
程式碼:

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <cstring>
#include <ctime> #include <algorithm> #include <queue> #include <map> #define ci const int #define ri register int #define ll long long #define reg register #define boom return #define cmax(a,b) (a)>(b)?(a):(b) #define cmin(a,b) (a)<(b)?(a):(b) #define For(i,a,b) for(i=a;i<b;i++)
using namespace std; ci MAXN=10086; int n; double a[MAXN][2],ans=1.79769e+307; double w(int i,int j,int k) { return (a[i][k]-a[j][k])*(a[i][k]-a[j][k]); } int main() { int i,j; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%lf%lf",&a[i][0],&a[i][1]); for(j=1;j<i;j++)ans=cmin(ans,w(i,j,0)+w(i,j,1)); } printf("%0.4lf",sqrt(ans)); boom 0; } //沒有什麼是兩個巴掌不能解決的,如果有就再來兩個巴掌

————————————華麗的分割線————————————
P1258
木有題解
————————————華麗的分割線————————————
P1259
木有題解
————————————華麗的分割線————————————
未完待續qwq