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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵊州D5T2 折纸 folding

發布時間:2023/12/2 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵊州D5T2 折纸 folding 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

折紙 folding

【問題描述】

在非常緊張的 NOIP 考試中,有人喜歡啃指甲,有人喜歡轉鉛筆,有人喜歡撕 紙條,……而小 x 喜歡迷折紙。

現有一個 W * H 的矩形紙張,監考老師想知道,小 x 至少要折多少次才能使 矩形紙張變成 w * h 的矩形紙張。

注意,每次的折痕都要平行于紙張的某一條邊。

【輸入格式】

第一行包括兩個整數 W,H。

第二行包括兩個整數 w,h。

【輸出格式】

輸出一個整數,表示至少需要折的次數。若無解,則輸出-1。

【輸入輸出樣例】

Input1Input2?Input3

2 7

2 2

5 5

1 6

10 6

4 8

Output1Output2Output3
2-1?2

【數據說明】

對于 20% 的數據滿足:W = w 且 H,h≤3。

對于 100% 的數據滿足: 1 ≤ W,H,w,h ≤ 9 10 。

Solve

?先從錯誤中得出正確結論

#include<bits/stdc++.h> using namespace std; int W,H,w,h; int func(double a,int b){if(b>=a) return 0;if(b>=a/2.0) return 1;return func(a/2.0,b)+1; } int main(){ // freopen("folding.in","r",stdin); // freopen("folding.out","w",stdout);cin>>W>>H>>w>>h;//特判 //如果一個目標寬度比最大的還大,那就不可能if(max(W,H)<max(w,h)) {cout<<"-1"; return 0;} cout<<min(func(W,w)+func(H,h),func(W,h)+func(H,w));return 0; } //29808 20197 //1900 28433

思想

首先,想想有沒有不可能折成的情況

如果一個目標寬度比最大的還大,那就不可能折成。輸出"-1"。

接著,把四個輸入數按Ww,Hh或者是Wh,Hw這樣對應,

目的是模擬兩種折疊方式,即是把W折成w,H折成h還是把W折成h,H折成w。

最后兩種方式中取最小值即可。

cout<<min(func(W,w)+func(H,h),func(W,h)+func(H,w));

再來看函數

一個邊界條件

if(b>=a) return 0;

如果當前的目標寬度(b)大于或等于當前寬度(a)//好像應該是等于吧?不會大于了

就不用再折了。返回0;

應該問題就在這里吧?

我們只考慮要排除了“一個目標寬度比最大的還大”這種情況

要讓特判更全面

不妨讓判斷全在里面

再用返回值inf來判斷可不可以折成。

My Std

#include<bits/stdc++.h> using namespace std; int W,H,w,h; int func(double a,int b){if(b>a) return 0x3f3f3f;//這里把開始的一種情況拎出來了if(b==a) return 0;if(b>=a/2.0) return 1;return func(a/2.0,b)+1; } int main(){ // freopen("folding.in","r",stdin); // freopen("folding.out","w",stdout);cin>>W>>H>>w>>h;if(max(W,H)<max(w,h)) {cout<<"-1"; return 0;} cout<<min(func(W,w)+func(H,h),func(W,h)+func(H,w));return 0; } //這里是我開始錯了的一種情況 //29808 20197 //1900 28433 //答案:5 //錯誤答案:4

?

OK!?

轉載于:https://www.cnblogs.com/send-off-a-friend/p/11189655.html

總結

以上是生活随笔為你收集整理的嵊州D5T2 折纸 folding的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。