本帖最后由 匿名 于 2021-2-6 11:47 编辑
- const int MOD = 1000000007;
- const int M = 200005;
- int add(int x, int y) { return (x % MOD + y % MOD) % MOD; }
- int sub(int x, int y) { return (x % MOD - y % MOD + MOD) % MOD; }
- int dp[M][2];
- vector<int> plantRoses(int w, int r, vector<int> Q) {
- dp[0][0] = 1;
- dp[0][1] = 1;
- dp[1][0] = 1;
- dp[1][1] = 1;
- for (int i = 2; i < M; i++) {
- dp[i][0] = add(dp[i - 1][1], dp[i - 1][0]);
- if (i >= w) {
- dp[i][0] = sub(dp[i][0], dp[i - w][1]);
- }
- dp[i][1] = add(dp[i - 1][1], dp[i - 1][0]);
- if (i >= r) {
- dp[i][1] = sub(dp[i][1], dp[i - r][0]);
- }
- }
- vector<int> ans;
- for(int i=0; i<Q.size(); i++) {
- ans.push_back(add(dp[Q[i]][0],dp[Q[i]][1]));
- }
- return ans;
- }[/i][/i][/i][/i][/i][/i][/i][/i][i][i][i][i][i][i][i][i]
复制代码 [/i][/i][/i][/i][/i][/i][/i][/i]
|