题目背景

Generic Cow Protests, 2011 Feb

题目描述

约翰家的N 头奶牛正在排队游行抗议。一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为Ai,数字可正可负。

约翰希望奶牛在抗议时保持理性,为此,他打算将这条队伍分割成几个小组,每个抗议小组的理智度之和必须大于或等于零。奶牛的队伍已经固定了前后顺序,所以不能交换它们的位置,所以分在一个小组里的奶牛必须是连续位置的。除此之外,分组多少组,每组分多少奶牛,都没有限制。

约翰想知道有多少种分组的方案,由于答案可能很大,只要输出答案除以1000000009 的余数即可。

输入输出格式

输入格式:

• 第一行:单个整数N,1 ≤ N ≤ 100000

• 第二行到第N + 1 行:第i + 1 行有一个整数Ai,−10^5 ≤ Ai ≤ 10^5

输出格式:

单个整数:表示分组方案数模1000000009 的余数

输入输出样例

输入样例#1:

4
2
3
-3
1

输出样例#1:

4

说明

解释:如果分两组,可以把前三头分在一组,或把后三头分在一组;如果分三组,可以把中间两头分在一组,第一和最后一头奶牛自成一组;最后一种分法是把四头奶牛分在同一组里。

• 记录前缀理智和 si 。 l,l+1,l+2,…,r-1,r 能够分成一组, iff s[r]>=s[l-1]
• 令 dp [ i ] 表示以 i 作为某一段的结尾的分组方式。 dp [n] 就是要求的答案
• dp [ i ]= ∑ dp [j] ……j< i 且 s[j]<=s[ i ]

<=s[ i ] 的 dp [j] 的和可以使用树状数组维护

#include<iostream>
#include<cstdio>
#include<algorithm>
#define f(i,l,r) for(i=(l);i<=(r);i++)
using namespace std;
const int MAXN=100005,MOD=1000000009;
struct Node{int v,id,Hash;bool operator < (const Node& x)const{return v<x.v;}
}sum[MAXN];
int n,a[MAXN],Tree[MAXN],Hash[MAXN],sz;
bool cmp(Node a,Node b)
{return a.id<b.id;
}
void Add(int x,int d)
{while(x<=sz){Tree[x]=(Tree[x]+d)%MOD;x+=x&(-x);}
}
int Query(int x)
{int res=0;while(x>0){res=(res+Tree[x])%MOD;x-=x&(-x);}return res;
}
int main()
{int i,j=1,tot=0,pos,ans;scanf("%d",&n);sum[0].v=sum[0].id=0;f(i,1,n){scanf("%d",&a[i]);sum[i].v=sum[i-1].v+a[i];sum[i].id=i;}sort(sum,sum+1+n);sum[0].Hash=1;f(i,1,n){if(sum[i].v!=sum[i-1].v){sum[i].Hash=++j;}else sum[i].Hash=j;}sz=j;sort(sum,sum+1+n,cmp);Add(sum[0].Hash,1);f(i,1,n){ans=Query(sum[i].Hash);Add(sum[i].Hash,ans);}printf("%d\n",ans);return 0;
}

奶牛抗议 洛谷p2344相关推荐

  1. P2344 奶牛抗议

    P2344 奶牛抗议 题目背景 Generic Cow Protests, 2011 Feb 题目描述 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为 ...

  2. [洛谷P2124] 奶牛美容

    洛谷题目链接:奶牛美容 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 6 16 ................ ..XXXX....XXX... ...XXXX... ...

  3. 洛谷1345 [Usaco5.4]奶牛的电信

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  4. luogu P2344 奶牛抗议 DP 树状数组 离散化

    P2344 奶牛抗议 最新讨论 暂时没有讨论 题目背景 Generic Cow Protests, 2011 Feb 题目描述 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在 ...

  5. 洛谷P1868 饥饿的奶牛 题解

    洛谷P1868 饥饿的奶牛 题解 题目链接:P1868 饥饿的奶牛 题意: 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有 NNN 个区间,每个区 ...

  6. BZOJ1232 安慰奶牛cheer (洛谷2916)

    标签:并查集,最小生成树 tips:bzoj这题为权限题,可以去洛谷2916提交 Description Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N ( ...

  7. 奶牛的耳语c语言,洛谷P1296 奶牛的耳语

    题目描述 在你的养牛场,所有的奶牛都养在一排呈直线的牛栏中.一共有 n 头奶牛,其中第 i 头牛在直线上所处的位置可以用一个整数坐标 pi​(0≤pi​≤10^8) 来表示.在无聊的日子里,奶牛们常常 ...

  8. 洛谷·bzoj·伟大的奶牛聚集Great Cow Gather

    初见安~~这里是传送门:洛谷P2986 & bzoj P1827 题目描述 Bessie is planning the annual Great Cow Gathering for cows ...

  9. 洛谷 P1843 奶牛晒衣服

    题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在自然条件下用 ...

  10. hash:奶牛看地图(洛谷P3405 [USACO16DEC]Cities and States S)

    洛谷传送门 解析 其实就是每组2个长度为2的字符串统计交叉相等的个数 每个序列可以用一个26进制的数来表示,总要加个标签,勉强算hash..(想叫<水题> ) 最大值为26*26(ZZ) ...

最新文章

  1. 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!
  2. 好程序员三期Android高端班开班典礼-乱世看我称雄
  3. HarmonyOS之生物特征识别的功能和使用
  4. form表单 无法提交js动态添加的表单元素问题。。
  5. TortoiseGit不同分支合并代码
  6. Python:以鸢尾花数据为例,介绍决策树算法
  7. log4j.properties配置
  8. 软件开发人员薪资标准 人月_IT从业者培训前后薪资差距近3000块钱
  9. VS2010 C# 4.0新特性一览
  10. 【操作系统】第1章 操作系统概论
  11. UNIX 环境高级编程(四)—— dirent.h
  12. DataFactory插入MySQL中文乱码问题
  13. 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
  14. 在分页后web报表的最后一页补足空行的方法
  15. 记录:ubuntu安装zlog及使用
  16. Java最常见208道面试题:Java大土豆答案
  17. php单页菜单,纯CSS3单页切换导航菜单界面设计
  18. NeRF神经辐射场学习笔记(二)——Pytorch版NeRF实现以及代码注释
  19. nginx 会话保持
  20. 机器学习多步时间序列预测解决方案

热门文章

  1. x86基本运行模式和内存模型
  2. 机器学习python3.9 +scikit-learn学习笔记
  3. ASEMI整流桥DB207的导通时间与参数选择
  4. 24 - srsRAN安装部署(已支持5G NSA, 原srsLTE)
  5. Python与机器学习的必读五本书,你拥有了吗?
  6. 技术宅:美数学家利用大数据找到女朋友
  7. mac搭建机器学习环境
  8. 脱机的计算机部件实验实验报告,脱机运算器实验报告.docx
  9. 助力文章质量提升,揭密seo伪原创神器
  10. android 浸入式布局,Android中浸入式状态栏的使用