日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解题报告+优化——试题 基础练习 矩形面积交——16行代码AC

發(fā)布時(shí)間:2024/2/28 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解题报告+优化——试题 基础练习 矩形面积交——16行代码AC 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

勵(lì)志用少的代碼做高效的表達(dá)。


心路歷程:

第一階段:

最初想獨(dú)立AC出這題來著,但考慮來考慮去,總覺得沒想到點(diǎn)子上,缺點(diǎn)什么似的。于是搜網(wǎng),果不其然,是一種全新的算法“線段交”。當(dāng)然這是簡化版的。 下面說一下判斷線段交的方法;
線段交:
先判斷兩個(gè)矩形是否相交,如果不相交直接輸出0。反之,則輸出4個(gè)橫坐標(biāo)中中間兩個(gè)橫坐標(biāo)值之差, 4個(gè)縱坐標(biāo)中中間兩個(gè)縱坐標(biāo)值之差。(好有道理啊有木有)

好大一坨知識(shí)!學(xué)習(xí)了!

第二階段:

明確思路后,對(duì)題的重心就從解出變成了優(yōu)化。 最開始定義了八個(gè)變量,分別表示(x1,y1)、(x2,y2)、(xi,yi)、(xj,yj),但后來發(fā)現(xiàn)這樣判斷大小太麻煩,索性將所有值存入數(shù)組,用algorithm中sort對(duì)數(shù)組進(jìn)行排序操作,十分方便、整潔。
傳送門→懶癌的福音——algorithm頭文件函數(shù)全集。

注意點(diǎn):

1、別忘了計(jì)算范圍是實(shí)數(shù),最開始搞成了整數(shù),看測試用例時(shí)才發(fā)現(xiàn)。
2、輸入時(shí)第一個(gè)坐標(biāo)可能是矩形四個(gè)點(diǎn)中任意一點(diǎn),第二個(gè)坐標(biāo)是其對(duì)角線。也就是說,需要排序或判斷后,將小的值放在前面,再去運(yùn)算。
3、第九行代碼的意思是:若矩形1中x坐標(biāo)最小值大于等于矩形2中x坐標(biāo)最大值 或 矩形1中x坐標(biāo)最大值小于等于矩形2中x坐標(biāo)最小值…

代碼:

#include<bits/stdc++.h> using namespace std; double x[4], y[4]; int main() {for(int i = 0; i < 4; i += 2)cin >> x[i] >> y[i] >> x[i+1] >> y[i+ 1];sort(x, x+2); sort(x+2, x+4);sort(y, y+2); sort(y+2, y+4);if(x[0] >= x[3] || x[1] <= x[2] || y[0] >= y[3] || y[1] <= y[2]){printf("0.00\n");}else{sort(x, x+4); sort(y, y+4);printf("%.2lf\n", (x[2] - x[1]) * (y[2] - y[1]) );}return 0; }

日拱一卒,功不唐捐。

總結(jié)

以上是生活随笔為你收集整理的解题报告+优化——试题 基础练习 矩形面积交——16行代码AC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。