USACO1 4 解題報告

2022-09-03 04:45:05 字數 2850 閱讀 5081

本章主要考的是貪心和一些比較麻煩的模擬。難度相比上一章有很明顯的提公升。但是稍微想一下還是可以想出來的(第五題除外,看了一下題解的思路)。

usaco:

思路:很明顯是一道貪心基礎題。肯定是要先買每單位價錢最便宜的,然後再依次買貴的。這個不用證明了吧。。。

**:

/*

id:ssl_zyc2

task:milk

lang:c++

*/#include #include #define n 5100

using namespace std;

int n,m,ans;

struct node

a[n];

bool cmp(node x,node y)

int main()

for (int i=1;i<=k;i++)

scanf("%d",&a[i]);

sort(a+1,a+1+k);

sum=a[k]-a[1]+1; //一塊木板

for (int i=1;i思路:

由於每乙個「∗」

「∗」只可能是00到9

9中的任意乙個數字,那麼我們可以列舉乘數裡面的五個"∗"

"∗"分別是多少,然後就可以推出中間的六個"∗"

"∗"的值和答案的四個"∗"

"∗"的值。那麼久判斷每乙個值是否合法即可。

時間複雜度:o(n

5)o(

n5)**:/*

id:ssl_zyc2

task:crypt1

lang:c++

*/#include #include using namespace std;

int n,a,b,ans;

bool p[11];

bool check(int x,int y)

return 1;

}int main()

for (int i=1;i<=9;i++)

if (p[i])

for (int j=0;j<=9;j++)

if (p[j])

for (int k=0;k<=9;k++)

if (p[k])

for (int l=1;l<=9;l++)

if (p[l])

for (int q=0;q<=9;q++) //列舉5個*

if (p[q])

if (check((i*100+j*10+k)*l,3))

if (check((i*100+j*10+k)*q,3)) //判斷中間的六個*

if (check((i*100+j*10+k)*(l*10+q),4)) //判斷積中的四個*

ans++;

printf("%d\n",ans);

return 0;

}

思路:

暴力模擬。很簡單吧。。。

小心陣列越界。

**:

/*

id:ssl_zyc2

task:combo

lang:c++

*/#include #define n 120

using namespace std;

int n,sum,a,b,c,d,e,f;

bool p[n][n][n];

int main()

for (int i=d-2;i<=d+2;i++)

for (int j=e-2;j<=e+2;j++)

for (int k=f-2;k<=f+2;k++) //第二個密碼

if (!p[(i+n-1)%n+1][(j+n-1)%n+1][(k+n-1)%n+1])

printf("%d\n",sum);

return 0;

}

思路:

有點難度啊。

由於貝西只能往下走,那麼她所在位置的下面第乙個蟲洞就是會被傳走的地方。

那麼設nex

t[i]

next

[i]表示在i

i下面的第乙個蟲洞(y

y座標要相同,x

x座標嚴格小於且最近)。然後就深搜,搜出配對的方案後就判斷是否成立。成立就記錄。

**:

/*

id:ssl_zyc2

task:wormhole

lang:c++

*/#include using namespace std;

int f[15],next[15],n;

int check()

return 0;

}int dfs(int s)

return ans;

}int main()

思路:

由於山峰高度只有10010

0,那麼就可以列舉山峰最矮高度,然後再列舉每個山峰,如果不夠或高出那麼就計算所需費用。然後將所有費用取最小值即可。

**:

/*

id:ssl_zyc2

task:skidesign

lang:c++

*/#include

#include

#define n 1010

using

namespace std;

int h[n]

,sum,n,ans;

intmain()

ans=

1e9;

for(

int i=h[1]

;i<=h[n]-17

;i++

)//列舉最低高度

printf

("%d\n"

,ans)

;return0;

}

USACO1 4 The Clocks 解題報告

第一次用bfs,以前只是會用遞迴的dfs搜尋,這次對照著書,硬生生的把bfs打出來了,終於明白什麼叫做複雜度了。先上程式 很明顯這題的bfs會很痛苦,因為第一層9個,第二層9 9,第三層9 9 9,大約到了8層的時候,無論是什麼樣的佇列,還是堆疊都不崩潰了 很悲慘,到了第三組資料的時候完全不可能通過...

解題報告 USACO 酸奶工廠

奶牛經營了一家酸奶工廠,生意非常紅火。在接下去的 n 個月裡,第 i 個月需要向社會提供 a i 噸酸奶。酸奶的生產受到很多因素的影響,所以每個月的生產成本是變化的,其中第 i 個月的成本是 每噸 c i 元。奶牛可以提前裡把酸奶做好,存在倉庫裡,等需要的時候再拿出來賣。儲存在倉庫裡的酸奶,每 噸酸...

USACO 4 2解題報告

求最大流。模板題,dinic即可。給出每個奶牛所喜愛的牛棚,每個奶牛只在它喜愛的牛棚中才能產奶,每個牛棚最大容納乙隻奶牛,求最多能讓多少奶牛產奶。最大流問題,源點向每頭奶牛連一條容量為1的邊,每頭奶牛向它喜愛的牛棚連一條容量為1的邊,每個牛棚向匯點連一條容量為1的邊,dinic求出最大流。每個工件要...