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

海淀区玉泉小学网站 建设方经常修改网站的关键词好不好

海淀区玉泉小学网站 建设方,经常修改网站的关键词好不好,济南品牌网站建设,cms访问状态异常怎么处理C. Maximum Set 思路: 我们求最大数组,显然是L一直乘2,直到再乘2就越过区间位置。我们说过,再乘一个2就不行,那么我们除一个2,换句话说,就是再乘一个4就不行了。发现,我们可能有机会乘一个3&a…

C. Maximum Set

思路:

  1. 我们求最大数组,显然是L一直乘2,直到再乘2就越过区间位置。
  2. 我们说过,再乘一个2就不行,那么我们除一个2,换句话说,就是再乘一个4就不行了。
  3. 发现,我们可能有机会乘一个3,2<3<4
  4. 而且,我们至多乘一个3。(除去一个2,必须乘一个数,该数小于4并且大于2,才能使得除去2后再乘一个数,保证数组大小不变)
  5. 所以我们首先求出只由2的倍数组成的最大size,然后再求出插入一个3的情况(而对于每一组,3是可以放在除了第一个数的其他位置上的,所以每一组都有size种情况)
#include <bits/stdc++.h>
using namespace std;
#define ll     long long
const int mod = 998244353;int main()
{std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t;cin >> t;while (t--){int l, r;cin >> l >> r;int k = 0;while ((1 << k)*l <= r)++k; //k为可以乘的2的个数--k;ll ans = (r >> k) - l + 1; //当前ans为可以只乘2获得k+1个数的数if (k > 0){int cnt = (r >> (k - 1)) / 3 - l + 1;//少乘一个2,多乘一个3cnt = max(0, cnt); //cnt可能小于0ans = (ans + cnt * k % mod) % mod;}cout << k + 1 << ' ' << ans << endl;}return 0;
}

D. Maximum Subarray

思路:

  1. 先不考虑修改值x的影响
    1. 求n个数字的最大连续子串和,因为是连续的。我们可以用dp[i]表示包含i的最大连续子串,那么结果就是max(dp[i])。
    2. 如果我们已经知道dp[i-1],显然dp[i]=max( 0,dp[i-1] )  +a[i]。(dp[i-1]不一定是正数,如果是,我取你这个连续段,不是就不要)
  2. 考虑x后,题目要求给整个数组加m个x,减去n-m个x。
    1. 我们每次更新时,都要考虑当前数组加了几个x,如果已经加了m个,那我们这次就不是a[i]加x而是减x了。如果小于m个,那就还是a[i]+x。
    2. 所以我们设dp[i][j]表示包含第i个数字的前i个数字的最大连续子串和(其中给前i个数字加了且只加了jx。那么最大答案就是max(dp[i][j])
    3. 我们由2.1得出,求dp[i][j]是需要分类讨论的:
      1. 对于dp[i-1][j](即j<i时)我们规定了只加j个x,那么我们更新时,a[i]要减x。所以dp[i][j]=max(0,dp[i-1][j])+a[i]-x(注意,我可以不要dp[i-1][j]这段子串和,但是我前i-1个还是有j个数字加了x)
      2. 如果继承dp[i-1][j-1],那么我们a[i]+x,  dp[i][j]=max( dp[i][j],   max(0, dp[i-1][j-1])   +a[i] + x)
  3. 注意,题目要求必须加m个x,所以我们j不是都从0开始的,假如你dp[i][j]更新,那么后面还有max(0,m-j)个数字需要加上x,那么我们必须保证剩下的n-i个数字够加,即j+n-i>=m,所以j>=max(0,m-n+i)&&j<=m&&j<=i
#include <bits/stdc++.h>
using namespace std;
#define ll     long long
const int N = 2e5 + 10;ll dp[N][25];
int a[N];int main()
{std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t;cin >> t;while (t--){int n, m, x;cin >> n >> m >> x;for (int i = 1; i <= n; ++i)cin >> a[i];for (int i = 0; i <= n; ++i)for (int j = 0; j <= m; ++j)dp[i][j] = 0;ll ans = 0;for (int i = 1; i <= n; ++i)for (int j = max(0, m - n + i); j <= m && j <= i; ++j){if (j < i)dp[i][j] = max(0ll, dp[i - 1][j]) + a[i] - x;//j<i就有此更新,j==i则不用,因为前面最多更新j-1个if (j)dp[i][j] = max(dp[i][j], max(0ll, dp[i - 1][j - 1])+ a[i] + x);ans = max(ans, dp[i][j]);//答案就是max(dp[i][j]),不是dp[i][m],不要求m个都在我的最大连续子串和范围内更新}cout << ans << endl;}return 0;
}

http://www.15wanjia.com/news/160765.html

相关文章:

  • 自己做网站详细流程如何做淘宝客的网站
  • 杭seo网站建设排名江津哪个网站可以做顺风车
  • 自己搭建一个网站wordpress电影主题网站
  • 网站版块建设企业网站建设立项请示
  • 深圳网站制作有名 乐云践新学网站开发的软件有哪些
  • python编程软件安装教程seo大全
  • 企业网站需要什么功能搜索引擎推广的三种方式
  • 便利的聊城网站建设网站上线之前做哪些工作
  • wordpress源代码编辑器百度seo学院
  • 门户网站重要性wordpress 用户函数
  • 广平网站建设网站建设服务费怎么做会计分录
  • 石家庄快速网站搭建娄底网站建设设计
  • 做餐饮网站建设华企在线网站建设
  • 唐山哪里做网站超大网站制作素材
  • 网站建设需要什么资料软件开发文档示例
  • 网站的留言怎么做徐州网络排名优化
  • 广西南宁市网站建设服务中心吉安哪家网站建设公司好
  • html5网站后台怎么做哪些网站可以免费做h5
  • 甘孜州手机网站建设网站建设 服务流程
  • 喊人做网站需要注意些什么哪些园林网站可以做外链
  • wordpress网站配置文件精品网站建设费用 在线磐石网络
  • asp企业营销型网站建设企业免费网站模板
  • 公司建设网站服务器必要条件wordpress 响应模板
  • 专门做简历的网站有哪些dz门户做视频网站
  • 设计网站开发详情页在线设计网站
  • 学校网站源码html女教师网课入侵录屏冫
  • 做网站竞争者的优势sns社交网站有哪些
  • 网站仿静态和静态的区别凭祥网站建设
  • 重庆建设集团网站工程建设标准网站
  • 淮安汽车集团网站建设建设网站哪些公司好