多狀態動態規劃 表示式整除

2021-08-04 15:32:28 字數 1241 閱讀 1362

noip模擬 表示式整除

2023年7月31日

dp

描述 description

24點這個遊戲好多人都玩過,就是給你4個數,新增相應的運算子,是否可以得到結果是24.

小x在玩了很多遍這個遊戲之後,想把這個遊戲給改變一下。 給你n個整數,在n個整數間,只能新增+和- 兩種運算子。

17+5+(-21)+15=16

17+5+(-21)-15=-14

17+5-(-21)+15=58

17+5-(-21)-15=28

17-5+(-21)+15=6

17-5+(-21)-15=-24

17-5-(-21)+15=48

17-5-(-21)-15=18

現在的問題是:給你n個數,能夠構成乙個表示式,讓這個表示式的值能被某個給定的數整除。 上面的例子中:可以被7整除,但是不能被5整除。

輸入格式 input format

第一行乙個整數,表示有k組測試資料。 接下來對於每組測試資料有兩行:

第一行是兩個整數n和x(1<=n<=10000, 2<=x<=100), n 表示數列中整數的個數;x就是需要你判斷的這個數列是否能被x整除。

輸出格式 output format

包含k行,每行表示一組資料的結果。 如果能被x整除,輸出」divisible」,如果不能,則輸出 「not divisible」

#include

#include

#include

#include

using

namespace

std;

int k;

int f[11000];

bool e[11000][300];//1-100:負餘數

inline

int reminder(int a, int mod)

void runfunction()

if(e[n][100] == true) cout

<< "divisible"

<< endl;

else

cout

<< "not divisible"

<< endl;

}int main()

動態規劃 最佳加法表示式

總時間限制 1000ms 記憶體限制 65536kb 描述 給定n個1到9的數字,要求在數字之間擺放m個加號 加號兩邊必須有數字 使得所得到的加法表示式的值最小,並輸出該值。例如,在1234中擺放1個加號,最好的擺法就是12 34,和為36 輸入有不超過15組資料 每組資料兩行。第一行是整數m,表示...

最佳加法表示式(動態規劃)

一 題目描述 描述 給定n個1到9的數字,要求在數字之間擺放m個加號 加號兩邊必須有數字 使得所得到的加法表示式的值最小,並輸出該值。例如,在1234中擺放1個加號,最好的擺法就是12 34,和為36 輸入 有不超過15組資料 每組資料兩行。第一行是整數m,表示有m個加號要放 0 m 50 第二行是...

動態規劃之最佳加法表示式

有乙個由1.9組成的數字串.問如果將m個加號插入到這個數字串中,各種可能形成的表示式中,值最小的那個表示式的值是多少?假設數字串的長度為n,有m個括號,插入的所有可能性為n m 如果要把所有可能性全部計算出來再找出最小值,這樣計算的時間複雜符是巨大的。換乙個角度思考,從後往前來看 若最後乙個加號新增...