求ACM簡單題,ACM 演算法超難題目

2025-01-11 18:10:08 字數 2257 閱讀 9028

acm 演算法超難題目

1樓:電燈劍客

出題人的表達能力太差,題目敘述得很糟糕,最後兩個例子也錯了比較好的敘述是,輸入n,輸出從0到32中取6項按字典序排序下的第n個組合(從第0個組合0,1,2,3,4,5開始計)

這種談不上什麼難題,只不過是入門級的問題。

在給定前k項的(記第k項為m)情況下餘下的項共有c(32-m,6-k)種情況,這裡c(x,y)表示x取y的組合數,以此程式設計即可。

給你乙個例子。

#include

int binom(int n, int m)int main()

for (i = 1; i <= 5; i++)printf("%d,", a[i]);

printf("%d", a[i-1] +n);

return 0;}

acm的簡單題 小弟我看不明白問題

2樓:網友

這道題跟它的上一道題是有共同語境的,如果看過上一題,自然就明白這一題的意思了。

這一題實際上是一道引導使用者熟悉系統中'special judge'的任務題,'special judge'通常用於一題多解的判定。

第三句說這次要做乙個相反的任務,這句就是跟上一題相對而言的。上一題是求兩臺電腦中的問題之和,這一題是已知和,求兩臺電腦中存放的題目數的可能解。

由於每組測試資料只需要輸出乙個可行解,所以要用到'special judge',呵呵。

呃,另外,如果你不是在lightoj上看到的這個題,那麼你可能真的迷失在缺失的上下文中了,去lightoj上看一下就知道了,這個是上面的1001。

有一道acm競賽題,題目我看著貌似簡單,就簡單寫了,當然是錯的,只是簡單的求和。請高手分析它難在哪?

3樓:網友

關鍵在於有負力量值,而且是要求最大力量段。不過演算法也好解決。

sum計算最大力量值,begin計錄最大力量段開始位置,end計錄結束位置。

從第乙個數開始計算,如果為正數,則累加到sum中,依次直到遇到第乙個負數。用之前的sum和負數比,如果負數大,則前begin嘗試找下乙個力量段,如果正數還大,就減去負數之後繼續累加。

其實就乙個原則,只要負的力量值還沒有大到可以抵消之前積累的正力量值,就把之前的段統計進來,一旦抵消或者變負了,之前的段就可以丟棄了。當然,如果後面的段沒有比之前的段大的,之前的段就是最大的段。

4樓:發狂的蜜蜂

難點就是要考慮時間複雜度。

如果不考慮時間複雜度,我們可以列舉出所有子陣列並求出他們的和。不過非常遺憾的是,由於長度為n的陣列有o(n2)個子陣列;而且求乙個長度為n的陣列的和的時間複雜度為o(n)。因此這種思路的時間是o(n3)。

主要是要理解:當我們加上乙個正數時,和會增加;當我們加上乙個負數時,和會減少。如果當前得到的和是個負數,那麼這個和在接下來的累加中應該拋棄並重新清零,不然的話這個負數將會減少接下來的和。

演算法思路:時間複雜度是o(n)

假設每罐菠菜的力量值陣列為value[n]1.初始化sum與maxsum分別等於0.

for(int i=0;imaxsum)

maxsum=sum;

if(maxsum=0)

5樓:匿名使用者

1.你給出的題的答案,是求所有數的總和。

2.若求最大值。可以把負數忽略掉,求正數的和。

6樓:網友

最大子段和問題,用動態規劃化降低時間複雜度。

有關acm一道題,請各位大牛幫幫忙!!!

7樓:網友

題目包含多組輸入資料。

比如,程式的輸入可能是這樣。

0而按你的程式只能輸出第一組的結果。最後面那個0代表輸入結束。

求思路 acm水題

8樓:劉阿氓

我認為可以貪心吧,按題意是每乙個遊戲在乙個單位時間內就能做完,對吧?

對所有小遊戲,按罰分,從大到小排序。

然後遍歷所有小遊戲[i],設第[i]個小遊戲規定時間是t,則看t時刻有沒有安排做其他的遊戲,如果沒有則安排t時刻做此遊戲,否則按時間順序向前找(t--)直到找到空閒的時刻,安排此遊戲。

若乙個時刻都找不到,就扣分。

最後剩下的分數就是答案。

我覺得用反正法可以證明貪心的正確性,而且我這樣做總是讓罰分少的遊戲不去完成。時間複雜度為 o(n^2)不會超時。

北大ACM 2019題,北大ACM 1993題

結果基本正確,有問題你自己搞掂,不要來找我了,對這個程式我已經沒有興趣,看到那一串的星號就煩。include using namespace std int main while x 1 x 10000 cs t x int temp new int x int rc new int x for i...

求解一道acm題

下面的 已經在vc上驗證了 include include using namespace std int n,m int main if s 0 printf bad luck n else printf i win n return 0 在這個partial game 也可以用sg函式,真的是比...

一道簡單程式設計題求演算法思路

將它們隨機分組,然後求和,取和的差值最小的一組。這就要求怎麼分組,將所有的組都分一邊。每分一次都做一次記錄,和的差最小的記錄下來。分到最後,就能得到最優解 思路就是n個數中的任意個數之和 離總和的一半 相差最少 include define size 100 main for j 0 jsum 2 ...