CF1738E Balance Addicts
个人思路:
\(sum_i\) 表示前 \(i\) 个数的前缀和,推一下式子可知是要选若干对 \(l_i,r_i\),使得 \(l_1 < l_2 <\dots < l_k \le r_k < \dots < r_2 < r_1\) 且 \(sum_{l_i} + sum_{r_i} = sum_n\times 2\)。
然后就不会做了。
正解:
\(pre_i\) 表示 \([1,i]\) 的和,\(suf_i\) 表示 \([i+1,n]\) 的和,题目等价于选若干对 \(l_i,r_i\),使得 \(l_1 < l_2 <\dots < l_k \le r_k < \dots < r_2 < r_1\) 且 \(pre_{l_i} = suf_{r_i}\)。
上面的做法遗漏了 \(a_i \le 0\),所以 \(pre_i\) 和 \(suf_i\) 分别为从左往右单增和从右往左单增,不同的值成独立段。
显然,对于一个段 \([l_l, l_r]\) 和 \([r_l, r_r]\),枚举选的对数 \(p\),贡献为 \(\sum\limits_{0 \le p \le min(l_r-l_l+1, r_r-r_l+1)} C_{l_r-l_l+1}^p \cdot C_{r_r-r_l+1}^p\)。
所有段贡献的乘积即为答案。
但是如果 \([l_l, l_r]\) 与 \([r_l, r_r]\) 重合,需要特判。发现此时任选位置切割,一定满足回文,贡献为 \(2^{l_r - l_l + 1}\)。
时间复杂度 \(\Theta(n)\)
CF1738E Balance Addicts的更多相关文章
- [题解] Codeforces Global Round 22 1738 A B C D E F 题解
		很久没rated打过cf的比赛了,这次打得还行,至少进前100了 点我看题 A. Glory Addicts 把类型0的数放进数组a里,类型1的数放进数组b里.如果\(|a|=|b|\),你可以把所有 ... 
- Sample a balance dataset from imbalance dataset and save it(从不平衡数据中抽取平衡数据,并保存)
		有时我们在实际分类数据挖掘中经常会遇到,类别样本很不均衡,直接使用这种不均衡数据会影响一些模型的分类效果,如logistic regression,SVM等,一种解决办法就是对数据进行均衡采样,这里就 ... 
- LB(Load balance)负载均衡集群--{LVS-[NAT+DR]单实例实验+LVS+keeplived实验} 菜鸟入门级
		LB(Load balance)负载均衡集群 LVS-[NAT+DR]单实例实验 LVS+keeplived实验 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一 ... 
- Balance - 七夕悠然
		想争取一个月至少一篇博客的,还是没搭上七月的末班车.两个小妹妹来上海看我了,工作上又有点儿忙,充分利用所有时间了,还是没有挪出时间来写东西,貌似写东西也要时机一样,需要在可以静静思考的时候,再加上有淡 ... 
- Java-集合=第五题 (Map)设计Account 对象如下:  private long id;       private double balance;       private String password; 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下:  List list = new ArrayList();  list.add(new A
		第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得 ... 
- java异常处理:建立exception包,建立Bank类,类中有变量double  balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),
		建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount ... 
- UVa 673 Parentheses Balance  -SilverN
		You are given a string consisting of parentheses () and []. A string of this type is said to be corr ... 
- POJ1837 Balance[分组背包]
		Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13717 Accepted: 8616 Descript ... 
- UVa 673 Parentheses Balance
		一个匹配左右括号的问题 /*UVa 673 Parentheses Balance*/ #include<iostream> #include<algorithm> #incl ... 
- A feature in Netsuite Reports > Financial > Balance Sheet
		最新版本的Customize balance sheet page Left side > Layout > Add Reference Row Then in right side, y ... 
随机推荐
- vue项目 h5上拉加载(分页功能)
			<template> <div class="receivable"> <div class="application-header fle ... 
- Spring中使用@RequestBody注解接收的实体类中的某些参数为null
			1.问题描述 我写完一个接口,在用postman测试的时候,发现其中有一个参数cEnterpriseId明明是有值的,但接口controller接收到的该参数为null,但其他参数都不为null的. ... 
- ArcGIS插件-太乐地图
			在很多行业,打败你的往往不是竞争对手,而是你意想不到的其他因素.回想十年前,如果能预料到现在的处境,也许当时的心态和做法会有所不同.在多年前,市场上出现包括水经注.太乐.BigeMap.91卫图等多种 ... 
- 【Basic Knowledge】Self-Attention Generative Adversarial Networks
			Note 这是一篇将Self-Attention应用到GAN中的paper,Self-Attention模块是卷积模块的补充,能够有助于建模跨图像区域的长范围.多层次依赖关系.文中主要提到4点: ... 
- github下载后的文件,winrar打开中文是乱码
			是因为编码问题,通过7Z解压后正常 
- prettier+ts+eslint+vscode配置代码保存自动格式化,自动remove unsed declaration,delete no-unused-imports
			每天都要开心(▽)哇: 以这个项目为案例 下面是项目的基本情况 What would you like to build? › App with Quasar CLI, let's go! Proje ... 
- IDEA翻译插件translate
			1.打开File->Setting 2.plugins->Browse repositories 3.输入"translate",选择排序"Downloads ... 
- 模拟实现strlen的三种方法
			一.strlen()的工作原理 二.模拟实现strlen的三种方法 计数器方法 指针-指针 递归的方法 三.库函数实现strlen的思路 四.库函数的strlen同上面模拟实现strlen的区别 一. ... 
- git操作出现 error: The following untracked working tree files would be overwritten by ...
			命令行:git clean -d -fx,作用是:删除没有git add 的文件 ,执行之后解决了 error: The following untracked working tree files ... 
- typora永久插入图片
			https://c.runoob.com/front-end/59 首先将图片通过在线转码工具转换成base64的编码,并用以下格式嵌入即可,格式如下: ![image] (base64) 但是由于这 ... 
