USACO專題題解

2021-10-18 19:21:23 字數 3088 閱讀 8749

思路:這道題的7種情況,我們可以把原圖存在s1,把目標存在s2裡面,然後各方法遍歷如下:

1:先行從n到1變化,列從1到n變化

2:先列從n到1變化,行從n到1變化

3:先列從1到n變化,行從n到1變化

4:先列從n到1變化,行從1到n變化

5:先把每行進行逆序,然後執行1或2或3

6:把s1和s2比較是否相等

7:以上均不滿足

然後把遍歷的結果存入s3中,每次使用後清零,比較是否相等(當然6、7不要判斷)

**

#include

using

namespace std;

int n,i,j;

char a[11]

[11],b[11]

[11];

string s1,s2,s3="";

intmain()

for(i=

1;i<=n;i++

)for

(j=1

;j<=n;j++

)for

(i=1

;i<=n;i++

)for

(j=n;j>=

1;j--

)s3+

=a[j]

[i];

if(s3==s2)

s3="";

for(i=n;i>=

1;i--

)for

(j=n;j>=

1;j--

)s3+

=a[i]

[j];

if(s3==s2)

s3="";

for(i=n;i>=

1;i--

)for

(j=1

;j<=n;j++

)s3+

=a[j]

[i];

if(s3==s2)

s3="";

for(i=

1;i<=n;i++

)for

(j=n;j>=

1;j--

)s3+

=a[i]

[j];

if(s3==s2)

s3="";

for(i=

1;i<=n;i++

)for

(j=1

;j<=n/

2;j++

)swap

(a[i]

[j],a[i]

[n-j+1]

);for(i=

1;i<=n;i++

)for

(j=n;j>=

1;j--

)s3+

=a[j]

[i];

if(s3==s2)

s3="";

for(i=n;i>=

1;i--

)for

(j=n;j>=

1;j--

)s3+

=a[i]

[j];

if(s3==s2)

s3="";

for(i=n;i>=

1;i--

)for

(j=1

;j<=n;j++

)s3+

=a[j]

[i];

if(s3==s2)

if(s1==s2)cout<<6;

else cout<<7;

}

思路:我們可以建乙個char陣列,這樣可以把手機按鍵模擬出來,然後用map來存這個數是否出現,接著進行深搜,然後如果字典中有這個名字就輸出,然後做個標記,接著如果標記為0就輸出「nome」。

**

#include

using

namespace std;

string a,x,s;

char ch[

100]

[100]=

;int l;

mapint>mp;

bool f;

void

work

(int deep)

return;}

string t = s;

for(

int i=

1;i<=

3;i++

)return;}

intmain()

work(0

);if(

!f)cout<<

"none"

;}

思路:列舉[1,300],並建兩個陣列,分別表示原數的b進製和b之平方,每次讓函式對陣列更改,如果平方是回文,那麼把原數的b進製算出輸出(如果出現b>10,就在輸出是判斷改為是否》=10,再轉成大寫字母)。

**

思路:直接搞個迴圈列舉進製,然後把每一位求出判斷回文數是否》=2,輸出即可。

**

思路:直接建結構體,然後對單價排序,然後取n和單價對應最大數量取最小值(因為這種牛奶只能**這麼多,並且我們也希望達到規定數量就可以了,這樣省錢),減去兩者最小後,再把單價*數量加入s,最後輸出。

思路:對牛所在的位置排序,然後像數列分段一樣把牛分成若干段(即連續的牛算1段),然後每相鄰兩段距離求出,排序,再把前(我們分成的段數(即木板數)-目標木板數)的個數加進去(如<=0則不加)。

思路:我們可以列舉最低高度(0~87),然後最高高度可以是最低高度+17,所以高於最低高度超過17我們就需要進行減小,如果比最低高度小我們就要增高。

**

#include

using

namespace std;

int n,a[

10001

],s,minn=int_max,i,j;

intmain()

minn=

min(s,minn);}

cout<}

USACO郵票醜數題解

這兩道題可使用特殊的優化方法 醜數 include include include using namespace std int num 51 int f 5000001 int k,n,m,ans int tot 201 表示第j個數的值乘上第f tot j 大於當前尋找的醜數的前乙個醜數的最小...

USACO 鋪放矩形塊 題解

題目大意 給定4個矩形塊,找出乙個最小的封閉矩形將這4個矩形塊放入,但不得相互重疊。所謂最小矩形指該矩形面積最小。思路 列舉矩形的安放順序,再按照題目所給的圖判斷即可,主要要想到列舉。1 include2 using namespace std 3int i,n,sum 10009,p 5 q 5 ...

TYUT A專題題解(二)

aoj0008 sum of 4 integers 暴力 海島blog csdn部落格 hdu1407 測試你是否和ltc水平一樣高 暴力 海島blog csdn部落格 hdu1868 consecutive sum 數學計算 列舉 海島blog csdn部落格 hdu1339 zoj1382 a ...