題目要求 從總石頭堆中選取若干個石頭為一堆,滿足這堆石頭大於等於剩下的石頭和,且任意拿走乙個石頭都會小於等於剩下的。
仔細想想就可以知道,只要這堆石頭的最小值滿足要求,那麼該堆石頭肯定是符合要求的。 所以所有的狀態都和最小值的石頭有關
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 將字串倒過來,問題就變...