最小正子段和

思路:

  找最小的大于0的sum[j]-sum[i](j>i);

  高级数据结构(splay)水过;

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define maxn 50005
#define ll long long
#define INF 0x7fffffff struct TreeNodeType {
ll w,key,opi,size,ch[];
};
struct TreeNodeType tree[maxn]; ll n,tot,root,sum[maxn],ans=INF; inline void in(ll &now)
{
ll if_z=;now=;
char Cget=getchar();
while(Cget>''||Cget<'')
{
if(Cget=='-') if_z=-;
Cget=getchar();
}
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
now*=if_z;
} inline ll getson(ll x)
{
return x==tree[tree[x].opi].ch[];
} inline void updata(ll x)
{
tree[x].size=tree[x].w;
if(tree[x].ch[]) tree[x].size+=tree[tree[x].ch[]].size;
if(tree[x].ch[]) tree[x].size+=tree[tree[x].ch[]].size;
} void rotate(ll now)
{
ll opi=tree[now].opi,fopi=tree[opi].opi,pos=getson(now);
tree[opi].ch[pos]=tree[now].ch[pos^];
if(tree[opi].ch[pos]) tree[tree[opi].ch[pos]].opi=opi;
tree[now].ch[pos^]=opi,tree[now].opi=fopi;
if(opi) tree[fopi].ch[getson(opi)]=now;
tree[opi].opi=now,updata(opi),updata(now);
} void splay(ll now)
{
if(now==root) return ;
for(ll opi;opi=tree[now].opi;rotate(now))
{
if(tree[opi].opi) rotate(getson(now)==getson(opi)?opi:now);
}
root=now;
} void insert(ll x)
{
if(!root)
{
root=++tot;
tree[root].w=;
tree[root].key=x;
tree[root].size=;
return ;
}
ll now=root,opi=;
while()
{
if(x==tree[now].key)
{
tree[now].w++,tree[now].size++;
splay(now);
return ;
}
opi=now,now=tree[now].ch[x>tree[now].key];
if(now==)
{
now=++tot;
tree[now].w=;
tree[now].key=x;
tree[now].size=;
tree[now].opi=opi;
tree[opi].ch[x>tree[opi].key]=now;
splay(now);
return ;
}
}
} ll pre()
{
if(tree[root].w>) return tree[root].key;
ll now=tree[root].ch[];if(!now) return ;
while(tree[now].ch[]!=) now=tree[now].ch[];
return tree[now].key;
} int main()
{
in(n);insert();
for(ll i=;i<=n;i++)
{
in(sum[i]);
sum[i]+=sum[i-];
insert(sum[i]);
ll pos=pre();
if(sum[i]-pos>) ans=min(ans,sum[i]-pos);
}
cout<<ans;
return ;
}

AC日记——最小正子段和 51nod 1065的更多相关文章

  1. 51nod 1065 最小正子段和

    题目链接:51nod 1065 最小正子段和 房教说用前缀和做,然后看了别人博客懂了后就感觉,这个真有意思... #include<cstdio> #include<cstring& ...

  2. 51nod 1065:最小正子段和

    1065 最小正子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  取消关注 N个整数组成的序列a[1],a[2],a[3],-,a[n],从中选出一 ...

  3. 51nod-1065 最小正子段和 【贪心 + 思维】

    N个整数组成的序列a[1],a[2],a[3],-,a[n],从中选出一个子序列(a[i],a[i+1],-a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的. 例如 ...

  4. 51nod-1065:最小正子段和(STL)

    N个整数组成的序列a11,a22,a33,…,ann,从中选出一个子序列(aii,ai+1i+1,…ajj),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的. 例如:4,-1 ...

  5. 【zznu-2060】 Minsum Plus(最小正子段和)

    题目描述 题意简单到令人发指! 序列A由N个整数组成,从中选出一个连续的子序列,使得这个子序列的和为正数,且和为所有和大于零的子序列中的最小值. 将这个值输出,若无解,输出no solution. 输 ...

  6. [51nod1065]最小正子段和

    题意:求一个序列中大于0的最小子段和. 解题关键: 先求出前缀和和,对于每个位置求某个位置到当前位置和大于1的和的最小值.然而这是复杂度是O(n^2)的.其实可以通过排序优化到O(nlogn).对前缀 ...

  7. 51nod 1065 最小正子段和 (贪心)

    题目:传送门. 题意:中文题. 题解:求前缀和,并且标记每个数的下标,按照前缀和大小进行从小到大排序.随后进行遍历,如果满足下标data[i-1].id<data[i].id&& ...

  8. AC日记——最小的N个和 codevs 1245

    1245 最小的N个和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 有两个长度为 N ...

  9. [51NOD1065] 最小正子段和(STL,前缀和)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1065 估计没人这么做吧-用一个set维护前缀和,但是set的l ...

随机推荐

  1. MyEclipse - MyEclipse优化

    1.去除不需要的启动加载项 选择菜单:Window --> Preferences -->General --> Startup and Shutdown, 可以关掉的启动项有: J ...

  2. JavaSE总结--多线程

    进程: 进程之间内存隔离,内存不共享. 线程: 可以共享内存. 每个线程都是一个栈. 多线程的好处: 1)防止程序阻塞. wait与notify的区别: 针对等待队列而言. wait:进入等待队列.必 ...

  3. 使用Subversion进行源代码管理(二):创建和发布版本库[转]

    原文出处: http://www.blogjava.net/youxia/archive/2007/10/23/155372.html 我的上一篇随笔讲了怎么使用Subversion客户端去连接服务器 ...

  4. excel批量导入

    https://www.cnblogs.com/mingyue1818/p/4828865.html

  5. mongodb 部署

    安装mongodb-3.4 1)将安装包上传至服务器 2)对压缩文件进行解压 tar -zxvf mongodb-linux-x86_64-suse12-v3.4-latest.tar.gz 3)把解 ...

  6. 【多线程学习(2)】继承Thread类和实现Runnable接口、Callable接口的区别

    1)Runnable和Callable同是接口 * Callable的任务执行后可返回值,而Runnable的任务是不能返回值(是void);call方法可以抛出异常,run方法不可以 * 运行Cal ...

  7. HDU 4760 Good Firewall ( Trie树 )

    一开始看的时候就想歪了,比赛的时候一直在YY线段树区间覆盖,然后纠结节点数太多开不下怎么办啊啊啊啊…… 然后昨天吃饭的时候也在纠结这到底是个啥题,后来发现公共前缀->前缀??!!!!->这 ...

  8. webpack 基础

    1.安装: npm install --save-dev webpack         npm install --save-dev webpack@<version> 如果是webpa ...

  9. Block层也是有IO的优先级的

    ---恢复内容开始--- 今天查看iotop的原理,竟然发现了IO优先级一说,IO是block层cfs调度器中的概念 block层也有一个类似于CPU的调度算法 对进程分成三个级别:RT,BE,IDL ...

  10. EXTJS4.0 grid 可编辑模式 配置

    首先配置这个参数 plugins:[//插件 Ext.create("Ext.grid.plugin.CellEditing",{ clicksToEdit:1//单元格 点一下就 ...