Vijos 1218 數字遊戲

2021-09-06 13:52:39 字數 1011 閱讀 7942

演算法:環形dp+劃分型dp

環形dp的思路很簡單,將1~n中每乙個節點當成起點進行劃分型dp即可,關於劃分型dp前面**有介紹~查詢tag把~

sxbk!sxbk。。。此題那麼水卡了我3個小時。。。**。。。到頭來發現是初始化。!!!!!!!

但我也學到了不少東西~

#define oo (~(unsigned long long)(0)>>1) 替代了 maxlongint, 將oo+1即可得到負的最大值

負數的mod是將它mod後+上mod再mod,例如((a%10)+10)%10),mod出來的並不是負數,但編譯器預設負數mod為負數了

要注意初始化的問題,不能再被卡了

放鬆心態~

這題真心不難,但sxbk的初始化讓我無力吐槽

**

#include using namespace std;

#define for(i, a, n) for(i = a; i <= (n); ++i)

#define num(j, i) ((((sum[i]-sum[j-1])%10)+10)%10)

#define oo (~(unsigned long long)(0)>>1)

const int n = 80, m = 12;

int i, j, k, l, n, m;

long long a[n], sum[n<<1], d[n][m][2], ans[2];

long long min(const long long& a, const long long& b)

long long max(const long long& a, const long long& b)

int main()

for(i, 1, n) sum[i+n] = sum[i+n-1] + a[i];

for(l, 0, n-1)

printf("%lld\n%lld\n", ans[0], ans[1]);

return 0;

}

Vijos 1218 數字遊戲

給出n個數圍成乙個環,將其劃分成k個部分,每個部分求和再對10取模,最後將每個部分的值相乘,求其最大值與最小值.丁丁最近沉迷於乙個數字遊戲之中。這個遊戲看似簡單,但丁丁在研究了許多天之後卻發 覺原來在簡單的規則下想要贏得這個遊戲並不那麼容易。遊戲是這樣的,在你面前有一圈整數 一共n個 你要按順序將其...

1218 取石子遊戲

題目 有兩堆石子,兩個人輪流去取。每次取的時候,只能從較多的那堆石子裡取,並且取的數目必須是較少的那堆石子數目的整數倍,最後誰能夠把一堆石子取空誰就算贏。比如初始的時候兩堆石子的數目是25和7。25 7 11 7 4 7 4 3 1 3 1 0選手1取 選手2取 選手1取 選手2取 選手1取 最後選...

1218 取石子遊戲

1218 取石子遊戲 時間限制 1000 ms 記憶體限制 65536 kb 提交數 4462 通過數 2049 題目描述 有兩堆石子,兩個人輪流去取。每次取的時候,只能從較多的那堆石子裡取,並且取的數目必須是較少的那堆石子數目的整數倍,最後誰能夠把一堆石子取空誰就算贏。比如初始的時候兩堆石子的數目...