关注
#include<bits/stdc++.h>
using namespace std;
const int mod = int(1e9 + 7);
int table[1010][1010];
void init(int n/*数量*/,int len/*范围*/)
{
memset(table, 0, sizeof(table));
vector<int> dp(len, 1);
for(int i=1;i<=n;i++)
{
table[i][0] = 1;
for(int j=1;j<len;j++)
{
dp[j] += dp[j - 1];
dp[j] %= mod;
table[i][j] = dp[j];
}
}
}
int FillArray(vector<int> a, int k) {
a.insert(a.begin(), 1);
a.insert(a.end(), k);
const int n = a.size();
vector<pair<int, int>> zero;
int max_n = 0;
int max_len = 0;
for(int i=0;i<n-1;i++)
{
if(a[i+1]==0)
{
int j = i + 1;
while (j < n && a[j] == 0) j++;
int x = j - i-1;
int y = a[j] - a[i];
zero.push_back({ x,y });
max_n = max(max_n, x);
max_len = max(max_len, y+1);
i = j-1;
}
}
init(max_n, max_len);
int64_t res = 1;
for(auto [x,y]:zero)
{
res *= table[x][y];
res %= mod;
}
return res;
}
int main()
{
cout << FillArray({ 0,0,0,0,0,67,0,0 }, 100)<<endl;
cout << FillArray({ 1,0,0 }, 3) << endl;
cout << FillArray({ 0,4,4 }, 4) << endl;
}
我想静静,最后应该用乘法把每个区间乘起来,我用成加分我想哭
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
04-10 16:01
广东工业大学 Java 点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习收获 #
23514次浏览 417人参与
# 在国企工作的人,躺平了吗? #
333115次浏览 3862人参与
# 实习吐槽大会 #
25544次浏览 124人参与
# 商战,最累的是我们 #
12661次浏览 49人参与
# 晒一晒你的工位 #
83902次浏览 299人参与
# 我的租房踩坑经历 #
19229次浏览 229人参与
# 穿越回高考你还会选现在的专业吗 #
17486次浏览 228人参与
# 毕业旅行去哪玩儿 #
958次浏览 29人参与
# 小厂实习有必要去吗 #
46347次浏览 267人参与
# 求职你最看重什么? #
69494次浏览 392人参与
# 牛友们,签完三方你在忙什么? #
94841次浏览 837人参与
# 夸夸我的求职搭子 #
190740次浏览 1890人参与
# 摸鱼打卡站 #
39280次浏览 687人参与
# 携程求职进展汇总 #
529754次浏览 3943人参与
# 产运销实习日记 #
51922次浏览 551人参与
# 打工人锐评公司红黑榜 #
145249次浏览 906人参与
# 网易求职进展汇总 #
101803次浏览 982人参与
# 你小时候最想从事什么职业 #
95449次浏览 1719人参与
# 作业帮求职进展汇总 #
52390次浏览 354人参与
# 高学历就一定能找到好工作吗? #
47530次浏览 589人参与