HDU 5496 - BestCoder Round #58 - Beauty of Sequence
思路 :
考虑这个序列当前的第i个数能有几种组合方法, 前面有2^(i-1)种, 后面有有2^(n-i)种, 本来答案是a[i] * 2^(n-1), 但要求对于某种排列存在相邻且相等的数是不计入答案的
例如 第二组样例 1 2 1 3, 1 1 3中1重复故要减去一个1
可见, 只有前一个数和a[i]相等时, a[i]就不能计入了, 而后面和a[i]相等便可以计入(后面和a[i]相等时, 可以看作约去后面的值, 这一种方法对a[i]这个值依然有1个贡献)
所以关键就是得到第i个数, 前面有几种以a[i]结尾的方法, 设为k, 这是要减去的方法数, a[i]的贡献就是a[i] * 2^(n-i) *[2^(n-i) - k]
方法 :
2的幂次预处理到10^5
对于得到k, 可以用map + 前缀和的形式记录, 例如当前位置i, 第一次得到一个a[i], 那么以这个数结尾有2^(i-1)种方法, 第二次在j位置得到了a[j] = a[i]
那么以a[i]结尾的就变成了2^(i-1) + 2^(j-1)种
比赛的时候没想到用map记录, n^2完全不敢写, 太弱了= =
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map> using namespace std; typedef long long LL; const int MAXN = 1e5+;
const int MOD = 1e9+; map<int, LL> r;
int a[MAXN];
int f[MAXN];
int Pow[MAXN]; void Pre()
{
Pow[] = ;
for(int i = ; i < MAXN; i++) {
Pow[i] = (Pow[i-] << ) % MOD;
}
} void Init()
{
r.clear();
} int main()
{
Pre(); int t;
int n; scanf("%d", &t);
while(t--) {
Init();
scanf("%d", &n);
for(int i = ; i < n; i++) {
scanf("%d", &a[i]);
f[i] = (LL)Pow[n-i-] * (Pow[i] - r[a[i]] + MOD) % MOD;
r[a[i]] += Pow[i];
r[a[i]] %= MOD;
}
LL ans = ;
for(int i = ; i < n; i++) {
ans += (LL)a[i] * f[i];
ans %= MOD;
}
printf("%I64d\n", ans);
} return ;
}
HDU 5496 - BestCoder Round #58 - Beauty of Sequence的更多相关文章
- hdu 5667 BestCoder Round #80 矩阵快速幂
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- HDU 5682/BestCoder Round #83 1003 zxa and leaf 二分+树
zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...
- HDU 5506 - BestCoder Round #60 - GT and set
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1003 题意 : 给N集 ...
- HDU 5505 - BestCoder Round #60 - GT and numbers
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1002 思路 : N有若 ...
- HDU 5568 - BestCoder Round #63 - sequence2
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5568 题意 : 给一个长度已知的序列, 给一个值k, 问该序列中有多少种长度为k的上升子序列 思路 ...
- hdu 5637 BestCoder Round #74 (div.2)
Transform Accepts: 7 Submissions: 49 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072 ...
- hdu 5600 BestCoder Round #67 (div.2)
N bulbs Accepts: 275 Submissions: 1237 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 655 ...
随机推荐
- 桌面环境与桌面搜索Desktop Search tools
最近一段时间工作重心都将放在Linux下Desktop search(桌面搜索)框架的研发上.因此对desktop search进行了初步的调研.本文将从下面三个方面展开: Linux桌面环境(Des ...
- 外键约束列并没有导致大量建筑指数library cache pin/library cache lock
外键约束列并没有导致大量建筑指数library cache pin/library cache lock 清除一个100大数据表超过一百万线,发现已经运行了几个小时: delete B001.T_B1 ...
- PHP5.4新特性(转)
PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下. 其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客. 1. Buid- ...
- Linux控制台下的快捷键
Linux控制台(文本模式)下提高工作效率的快捷键 在Linux环境里,有一些按键有特殊的含意.# Ctrl-U: 擦除一行光标前面的部分.# Ctrl-H: 擦除光标前面的一个字符.# Ctrl-D ...
- [AngularJS 2 实践 一]My First Angular App
最近一直在看关于AngularJS 2的资料,查看了网上和官网很多资料,接下来就根据官网教程步骤一步步搭建我的第一个Angular App AngularJS 2说明请参考:http://cnodej ...
- linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
一. 前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某 个分区需要的容量,还要预见该分区以后可能需 ...
- IPython notebook 使用介绍
参考资料: http://mindonmind.github.io/2013/02/08/ipython-notebook-interactive-computing-new-era/ http:// ...
- Linux学习计划
用Linux已经有很长一段时间了,先后用过Debian和CentOS,但一直没有系统地去学习,现在一是有时间,二是工作中需要用到,所以准备用心去学习一下. 一.教材 1.主要以<鸟哥Linux& ...
- mysql存储过程中使用临时表和游标
1.临时表 DROP PROCEDURE IF EXISTS `P_GetMonitorPeople`; CREATE PROCEDURE P_GetMonitorPeople (IN fgid IN ...
- IE8兼容placeholder的方案
用JavaScript解决Placeholder的IE8兼容问题 placeholder属性是HTML5新添加的属性,当input或者textarea设置了该属性后,该值的内容将作为灰色提示显示在文本 ...