hakerrank <Maximise Sum> set
来源:互联网 发布:n86软件 编辑:程序博客网 时间:2024/05/19 23:03
关键词:前i-1个数中大于a[i]的最小值
题意:n个数,求模m的最大子序列(连续)和
已知n和m
做法:1.预处理sum[i]=sum[i]%m(>0)
以第i个元素结尾的模m最大子序列和=max{sum[i],((sum[i]-x)%m+m)%m},x是前i-1个数大于sum[i]的最小值
如何维护前i-1个数种大于a[i]的最小值?——set
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>#include<vector>#include<queue>#include<map>#include<set>#define INF 0x3f3f3f3f#define ll long longusing namespace std;const int maxn = 100000+10;int t,n;ll m;ll a[maxn],sum[maxn],ans;set<ll> s;int main(){ //freopen("a.txt","r",stdin); scanf("%d",&t); while(t--){ scanf("%d%lld",&n,&m); sum[0]=0; for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); sum[i]=(a[i]+sum[i-1])%m; } s.clear(); ans=0; for(int i=1;i<=n;i++){ ll l=*s.upper_bound(sum[i]); ll tmp1=((sum[i]-l)%m+m)%m; ll tmp=max(tmp1,sum[i]); ans=max(tmp,ans); s.insert(sum[i]); } printf("%lld\n",ans); }}
0 0
- hakerrank <Maximise Sum> set
- Hakerrank Alternating Characters
- leetcode15 3Sum (set)
- hakerrank Almost sorted interval 单调队列
- codeforces 577B Modulo Sum(DP||set)
- hdu5381The sum of gcd 线段树+set
- 优化Set操作——SUM中的CrossJoin
- Combination Sum II [leetcode] 不用set的解法
- 重要 Dynamic Programming | Set 25 (Subset Sum Problem)
- 遍历技巧:2,3,4sum&3sum closest&set matrix zeroes&Container With Most Water
- How to Maximise CPU Performance for the Oracle Database on Linux
- set /?
- Set
- set
- set
- set
- Set
- set
- MVC 是 OOP吗?
- 图像处理工程师的要求
- HDU1325 Is It A Tree? + POJ1308 Is It A Tree?【并查集】
- maven 配置
- emacs配置2
- hakerrank <Maximise Sum> set
- ibatis学习基本例子
- easyui-tree和thinkphp对于树节点的显示
- gcc编译错误
- cocos2dx吞噬
- mysql 用户管理和权限设置
- java实现从oracle数据库中读出table配置并逆向生成model类
- zoj 3647 Gao the Grid
- Java集合类的使用