usaco2.1主要內容是圖論。其中有幾道題是要用深搜做的。而另外幾道題則是利用模擬的方法來完成簡單圖論。
總體來說難度還是比較小的,算是最基礎的演算法吧。
uasco:
題解思路:
可以列舉分子和分母,然後判斷他們的最小公約數是不是1
1(其實就是判斷是否互質)。如果是的話就將這個分數加入到結構體裡面,儲存三個變數:
然後按照分數值排序輸出即可。
**:
/*
id:ssl_zyc2
task:frac1
lang:c++
*/#include
#include
using
namespace std;
int n,sum;
struct node
a[160
*160+10
];bool
cmp(node x,node y)
intmain()
sort
(a+1
,a+1
+sum,cmp)
;//排序
for(
int i=
1;i<=sum;i++
)printf
("%d/%d\n"
,a[i]
.z,a[i]
.m);
return0;
}
思路:
這道題有點噁心。
讀入a[i]
a[i]
,將a[i]
a[i]
排好序後為b[i
]b[i
],然後從前往後掃,如果a[i
]!=b
[i]a
[i]!
=b[i
]就說明這個a[i
]a[i
]的位置是錯誤的。那麼要分情況。
先到a[i]
a[i]
本來應該在的位置,如果這個位置中有為本來應該在a[i]位置的數字
,那麼就交換兩個數字,一次交換就滿足了兩個數字。
如果這個位置中沒有為本來應該在a[i]位置的數字
,那麼就隨便找乙個要到a[i
]a[i
]位置來的數字交換,一次交換只滿足了乙個數字。
模擬即可。
**:
/*
id:ssl_zyc2
task:sort3
lang:c++
*/#include
#include
using
namespace std;
int n,a[
1010
],b[
1010
],cnt;
bool ok;
intmain()
sort
(b+1
,b+1
+n);
for(
int i=
1;i<=n;i++)if
(a[i]
!=b[i]
)//不相同if(
!ok)
//情況2
for(
int j=n;j>i;j--)if
(a[j]
==b[i])}
printf
("%d\n"
,cnt)
;return0;
}
思路:
深搜列舉每乙個飼料,判斷買或者不買。最終取答案最小值即可。
當然如果你英勇一點的話就隨機選擇那些飼料,多隨機幾次取最有答案。如果運氣好的話應該也是可以過的。
**:
#include
#include
using
namespace std;
int n,m,need[30]
,sum[30]
,f[20][
30],used[30]
;struct node
ans;
bool
check
(int k)
void
dfs(
int x,
int s)
return;}
dfs(x+
1,s)
; used[s+1]
=x;for
(int i=
1;i<=n;i++
) sum[i]
+=f[x]
[i];
dfs(x+
1,s+1)
; used[s+1]
=0;for
(int i=
1;i<=n;i++
) sum[i]
-=f[x]
[i];
}int
main()
//我這種方法很麻煩,應該有更簡單的方法的。
思路:
深搜列舉每一位數是0
0還是1
1,搜完乙個答案後將它和前面的所有答案進行比較,如果都滿足要求就記錄下這個答案。最後輸出時再轉換成十進位制即可。
**:
/*
id:ssl_zyc2
task:hamming
lang:c++
*/#include
using
namespace std;
int n,m,k,ans[70]
[10],a[10]
,sum;
void
check()
sum++
;for
(int i=
1;i<=m;i++
) ans[sum]
[i]=a[i]
;//記錄答案
}void
dfs(
int x)
dfs(x+1)
;//這一位是0
if(sum>=n)
return
; a[x]=1
;dfs
(x+1);
//這一位是1
if(sum>=n)
return
; a[x]=0
;}intmain()
if(i%
10==1)
printf
("%d"
,s);
else
if(i%
10==0)
printf
(" %d\n"
,s);
else
printf
(" %d"
,s);
//usaco神奇的輸出要求}if
(n%10
)printf
("\n");
//usaco神奇的輸出要求(末尾必須換行)
return0;
}
USACO 2 1 順序的分數
description 輸入乙個自然數n 請寫乙個程式來增序輸出分母小於等於n的最簡真分數 input 單獨的一行 乙個自然數n 1.160 output 每個分數單獨佔一行 最後一行有回車 sample input 5 sample output 0 1 1 5 1 4 1 3 2 5 1 2 3...
USACO 2 1 健康的好斯坦奶牛 DFS
description 農民john以擁有世界上最健康的奶牛為驕傲。他知道每種飼料中所包含的的牛所需的最低的維他命量是多少。請你幫助農夫餵養他的牛,以保持他們的健康,使餵給牛的飼料的種數最少。給出牛所需的最低的維他命,輸出餵給牛需要哪些種類的飼料,且所需的種類數最少。input 第1行 乙個整數v ...
USACO 2 1 健康的好斯坦奶牛 DFS
description 農民john以擁有世界上最健康的奶牛為驕傲。他知道每種飼料中所包含的的牛所需的最低的維他命量是多少。請你幫助農夫餵養他的牛,以保持他們的健康,使餵給牛的飼料的種數最少。給出牛所需的最低的維他命,輸出餵給牛需要哪些種類的飼料,且所需的種類數最少。input 第1行 乙個整數v ...