2019 上海網路賽 stone game DP

2021-09-27 04:05:43 字數 893 閱讀 1687

題目要求 從總石頭堆中選取若干個石頭為一堆,滿足這堆石頭大於等於剩下的石頭和,且任意拿走乙個石頭都會小於等於剩下的。

仔細想想就可以知道,只要這堆石頭的最小值滿足要求,那麼該堆石頭肯定是符合要求的。 所以所有的狀態都和最小值的石頭有關

dp[j] 表示當前揹包容量為j時 滿足要求的個數。dp[j] = dp[j] + dp[j - a[i]] ,a[i]為當前石頭的最小值。 a[i] 是確定的,只與j - a[i]有關

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define  ll long long

#define ull unsigned long long

#define mod 1000000007

#define inf 0x7ffffff

#define mem(a,b) memset(a,b,sizeof(a))

#define modd(a,b) (((a%b)+b)%b)

using namespace std;

const int maxn = 5e5 + 5;

int a[maxn];

ll dp[maxn];

int sum;

ll ans;

int n;

void slove()

}}int main()

sort(a,a + n);

mem(dp,0);

slove();

printf("%lld\n",ans);

}}

2019 icpc 上海網路賽

題意 t組案例,每組案例 n個燈泡 0 n 1 初始所有燈泡為熄滅狀態,m次操作,每次操作把區間 l,r 內的燈泡翻轉 開變關,關變開 問m次操作之後有多少燈泡是亮著的。題解 每次操作對 l,r 的所有數進行 1操作,求最後有多少個奇數。設該陣列為a n 每次操作a l 1,a r 1 1,求字首和...

2019 icpc 上海區域賽

第二次參加,很慘,2道題打鐵,罰時太多了,先寫的 k 題,不過沒寫對,然後以最快的速度完成了 b 題,不夠已經過去了一段時間了 k 題很快從基環發現是二分樹,但是錯了後才發現,如果完全圖過不了,我應該早點測那個樣例,長了教訓,最後暴力過了,雖然看到資料就知道是可以暴力過,但隊友沒那麼寫,還是最後發現...

2019南昌網路賽

rank solvedab cdef ghi497 1882 3 9.o o o o 當場通過 賽後通過 尚未通過 unsolved solved by chelly chelly s solution upsolved by chelly chelly s solution 將字串倒過來,問題就變...