当前位置: 首页 > news >正文

南阳定制网站制作价格低网站链接可以自己做吗

南阳定制网站制作价格低,网站链接可以自己做吗,怎样才能做网站,小米官网页面终于有时间来慢慢补补题了 J Qu’est-ce Que C’est? 作为队内的dp手#xff0c;赛时想了好久#xff0c;等学弟学妹都出了还是不会#xff0c;羞愧#xff0c;还好最终队友做出来了。 链接J Qu’est-ce Que C’est? 题意 长度为 n n n 的数组 a a a#xff0c;每…终于有时间来慢慢补补题了 J Qu’est-ce Que C’est? 作为队内的dp手赛时想了好久等学弟学妹都出了还是不会羞愧还好最终队友做出来了。 链接J Qu’est-ce Que C’est? 题意 长度为 n n n 的数组 a a a每个数的取值范围 a i [ − m , m ] a_i [-m, m] ai​[−m,m]问所有满足长度 1 1 1 的子段的和为非负数的数组可能的数量。 1 ≤ n , m ≤ 5000 1\leq n,m\leq 5000 1≤n,m≤5000。 思路 看了懵哥的题解看到状态定义后就会了我怎么就想不到呢 法一 dp状态定义 f [ i ] [ j ] : f[i][j]: f[i][j]: 前 i i i 个数最小后缀和为 j j j 的方案数 j [ − 5000 , 5000 ] j [-5000, 5000] j[−5000,5000]。因为是最小后缀和那么如果有后缀 − 5000 -5000 −5000 的说明至少是两个数以上的和为负数与题意不符是不合法的方案所以数组大小开到 [ 0 , 10000 ] [0,10000] [0,10000] 即可离散化后。 我们先不管时间复杂度根据dp定义先敲个状态转移出来代码如下 #include bits/stdc.h using namespace std;#define ll long longconst int N 5010, mod 998244353;int f[N][N * 2]; // 前i个数最小后缀和为j的方案数 j [-5000, 5000]void add(int a, int b){a (a b) % mod; } int main(){int n, m;cin n m;f[0][2 * m] 1;for(int i 1; i n; i ){for(int j -m; j m; j ){ // 枚举最小后缀for(int k m; k -m; k --){ // 枚举当前a_i选哪个数if(j k 0) break;add(f[i][min(j k, k) m], f[i - 1][j m]);}}}int ans 0;for(int i -m; i m; i ){add(ans, f[n][i m]);}cout ans;return 0; } 时间复杂度为 O ( n 3 ) O(n^3) O(n3)我们观察一下代码如何优化发现会有大量连续的 k k k f [ i ] [ min ⁡ ( j k , k ) ] f[i][\min(j k, k)] f[i][min(jk,k)] 加的是同一个状态 f [ i − 1 ] [ j ] f[i - 1][j] f[i−1][j]。那么经典优化方案不就来了吗差分前缀和优化。 以下分情况讨论 因为是 min ⁡ ( j k , k ) \min(j k, k) min(jk,k) j j j 是非正数 无论当前 k k k 选什么 j k ≤ k j k \leq k jk≤k所以状态一定是转移到 j k j k jk所以对于一个非正数的 j j j 可转移的范围就是 0 ∼ j m 0 \sim j m 0∼jm。 // 区间 [l, r] val f_l val f_{r 1} val for(int j -m; j 0; j ){f[i][m] (f[i][m] f[i - 1][j m]) % mod;// 差分 f[i][m j m 1] (f[i][m j m 1] mod - f[i - 1][j m]) % mod;// 差分 - }j j j 是正数 同理无论当前 k k k 选什么 k ≤ j k k \leq j k k≤jk所以状态一定是转移到 k k k所以对于一个正数 j j j可以转移的范围就是 − j ∼ m -j\sim m −j∼m。 for(int j 1; j m; j ){f[i][-j m] (f[i][-j m] f[i - 1][j m]) % mod;f[i][m m 1] (f[i][m m 1] mod - f[i - 1][j m]) % mod; }完整代码 #include bits/stdc.h using namespace std;#define ll long longconst int N 5010, mod 998244353;int f[N][N * 2]; // 前i个数最小后缀和为j的方案数 j [-5000, 5000]void add(int a, int b){a (a b) % mod; } int main(){int n, m;cin n m;f[0][2 * m] 1;for(int i 1; i n; i ){/*for(int j -m; j m; j ){for(int k m; k -m; k --){if(j k 0) break;add(f[i][min(j k, k) m], f[i - 1][j m]);}}*/// 考虑差分前缀和优化// j 是 负数 k 是正数 f[i][j k m] 从0 ~ m j// j 是 正数 k 是负数/正数 f[i][k m] 从-j ~ mfor(int j -m; j 0; j ){f[i][m] (f[i][m] f[i - 1][j m]) % mod; // 差分 f[i][m j m 1] (f[i][m j m 1] mod - f[i - 1][j m]) % mod; // 差分 -}for(int j 1; j m; j ){f[i][-j m] (f[i][-j m] f[i - 1][j m]) % mod;f[i][m m 1] (f[i][m m 1] mod - f[i - 1][j m]) % mod;}for(int j -m 1; j m; j ){ // 前缀和f[i][j m] (f[i][j m] f[i][j m - 1]) % mod;}}int ans 0;for(int i -m; i m; i ){add(ans, f[n][i m]);}cout ans;return 0; }
http://www.dnsts.com.cn/news/57936.html

相关文章:

  • 宣城网站seo商城网站策划
  • 宁波网站建设 泊浮科技宁波房产网上备案查询官网
  • 大连网站制作报价网站名字
  • 北仑网站制作织梦网站自动跳转手机网站
  • 何为响应式网站抖音自媒体平台注册入口
  • 什么建设网站贵阳网站建设方案报价
  • 做网站需要的语言网络营销软文
  • 网站开发图片单页网站优化
  • 建设银行官方网站打不开啊开发软件下载
  • 潍坊设计网站网站内外链怎么做
  • 金隅嘉华大厦网站建设公司当前最好用的wordpress主题
  • app下载网站模板对电子商务网站建设与管理的理解
  • 怎么把qq空间做成企业网站东莞网站建设案例
  • 跟网站开发有关系的工作有哪些门户网站系统建设方案
  • 旅游网站设计总结扬州市城市建设投资公司网站
  • 南山的网站建设没人愿意干的68个暴利行业
  • 深圳华强北做网站肇庆百度网站推广
  • 在线书店网站怎么做南京seo公司哪家好
  • 网站 网页区别门户网站功能
  • 网站做百度百科外贸网站功能
  • 重庆网站制作团队网站开发费用属于什么科目
  • 公众号平台入口东莞网站设计知名乐云seo
  • 织梦 一键更新后网站空白网站开发资质
  • 那个网站做h5不要钱怎么用word做网站
  • 杭州网站开发外包公司网络规划设计师教程第2版pdf下载
  • 性价比最高的网站建设公司宁德市中医院
  • 什么网站做生鲜比较好网网站建设设计公司
  • 网站建设 自查表建筑材料网站建设
  • 网站建设基础教案app软件开发价格
  • 做公司网站的步骤项目网络图用什么软件