演算法:環形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 題目描述 有兩堆石子,兩個人輪流去取。每次取的時候,只能從較多的那堆石子裡取,並且取的數目必須是較少的那堆石子數目的整數倍,最後誰能夠把一堆石子取空誰就算贏。比如初始的時候兩堆石子的數目...