題目大意:
小m想知道某件物品的重量,但是擺在他面前的只有乙個天平(沒有游標)和一堆石子,石子可以放左邊也可以放右邊。他現在知道每個石子的重量。問能不能根據上述條件,能不能測出所問的重量。
資料範圍:
多組資料,第一行乙個數n,表示石子個數。(1<=n<=100) 接下來第二行n個數,表示石子的重量。(1<=wi<=100) 接下來第三行乙個數m,表示詢問個數。(1<=m<=1000) 接下來m行每行乙個數k(1<=k<=1e9),表示乙個詢問。
具體思路:
觀察資料範圍,發現k的範圍只是嚇人的。這個題的最大的能稱量的範圍就是10000.也就是說當k大於10000的時候,一定是輸出no。對於另外的情況,兩個for迴圈暴力就可以了。
ac**:
1 #include2using
namespace
std;
3 # define ll long
long
4 # define inf 0x3f3f3f3f
5const
int maxn = 2e4+100;6
int dp[100+10
][maxn];
7int
a[maxn];
8int
main()
916 memset(dp,0,sizeof
(dp));
17 dp[0][0]=1;18
for(int i=1; i<=n; i++)
1928}29
}30intm;
31 scanf("
%d",&m);
32while(m--)
3341}42
return0;
43 }
牛客 小M和天平
題目 這題很明顯是乙個揹包 做多了可能就有感覺了吧 設f i j 為選了前i個物品能否湊出體積為j的物品,然後用01揹包亂轉移就可以了。但這題要注意的是不能用一維的揹包寫法,必須用二維,因為這個揹包會同時往前和往後更新狀態 畢竟石子相加和相減都能湊出物品 用一維的話會導致變成完全揹包 不懂可以手動模...
小M的簡單題 easy
小m的簡單題 easy 時間限制 3s 記憶體限制 128mb 題目描述 小m是某知名高中的學生,有一天,他請他的n個同學吃蘋果,同學們排成一行,且手中已經有一些蘋果。為了表示他的大方,有時他會給l到r的同學x個蘋果,但為了了解分配的情況,有時他會詢問l到r的同學中擁有的蘋果數小於x的人的個數。現在...
DP最大M子段和
給定n個數求這n個數劃分成互不相交的m段的最大m子段和。經典的動態規劃優化的問題。設f i,j 表示前i個數劃分成j段,且包括第i個數的最大m子段和,那麼有dp方程 f i,j max k j 1 i 1 也就是說第i個數要麼自己劃到第j段,要麼和前乙個數一起劃到第j段裡面,轉移是o n 的,總複雜...