HDU 5496 - BestCoder Round #58 - Beauty of Sequence

时间:2022-08-28 23:29:01
 
题目链接http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=637&pid=1002

思路 :

考虑这个序列当前的第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的更多相关文章

  1. hdu 5667 BestCoder Round &num;80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  2. hdu 5643 BestCoder Round &num;75

    King's Game  Accepts: 249  Submissions: 671  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6 ...

  3. hdu 5641 BestCoder Round &num;75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  4. HDU 5682&sol;BestCoder Round &num;83 1003 zxa and leaf 二分&plus;树

    zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...

  5. HDU 5506 - BestCoder Round &num;60 - GT and set

    题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1003 题意 : 给N集 ...

  6. HDU 5505 - BestCoder Round &num;60 - GT and numbers

    题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1002 思路 : N有若 ...

  7. HDU 5568 - BestCoder Round &num;63 - sequence2

    题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5568 题意 : 给一个长度已知的序列, 给一个值k, 问该序列中有多少种长度为k的上升子序列 思路 ...

  8. hdu 5637 BestCoder Round &num;74 &lpar;div&period;2&rpar;

    Transform  Accepts: 7  Submissions: 49  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 131072 ...

  9. hdu 5600 BestCoder Round &num;67 &lpar;div&period;2&rpar;

    N bulbs  Accepts: 275  Submissions: 1237  Time Limit: 10000/5000 MS (Java/Others)  Memory Limit: 655 ...

随机推荐

  1. &lt&semi;&lt&semi;&lt&semi; PermGen space溢出解决方法

    错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域.还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至 ...

  2. linux ssh publickey登录

    一.公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在目标服务器上,而private key为特 ...

  3. IIS7&period;5 由于 Web 服务器上的&OpenCurlyDoubleQuote;ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面

    IIS7.5中将一网站应用程序池托管管道模式改为经典后,网站页面打不开,错误信息: 引用内容 HTTP 错误 404.2 - Not Found由于 Web 服务器上的“ISAPI 和 CGI 限制” ...

  4. &period;net学习笔记---lambda表达式(自执行方法)

    http://www.cnblogs.com/jesse2013/p/happylambda.html#b034 lambda表达式 http://www.cnblogs.com/OceanEyes/ ...

  5. BizTalk动手实验(四)Schema开发测试

    1 课程简介 通过本课程熟悉Schema的相关开发技术 2 准备工作 1. 熟悉XML.XML Schema.XSLT等相关XML开发技术 2. 新建BizTalk空项目 3 演示 3.1 格式化XM ...

  6. leetcode 160

    160. Intersection of Two Linked Lists Write a program to find the node at which the intersection of ...

  7. Qt之镜像旋转

    简述 Qt中可以对图片进行任何处理,改变亮度.灰度.透明度.大小.形状等,当然也可以进行镜像旋转! 简单的几行代码,有时就可以事半功倍...甚至图片不用经过美工处理就可以直接拿来使用! 简述 实现 原 ...

  8. 【原创】leetCodeOj ---Construct Binary Tree from Preorder and Inorder Traversal 解题报告

    原题地址: https://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 题目 ...

  9. 如何用Visio画venn(维恩)图

    今天需要换几个Venn(维恩)图,按照以前的套路是用画图工具来画的,但是这次不是画给自己看,并且也要很迅速的画好,那就迅速的来学习了. 参考网址:https://support.office.com/ ...

  10. Day 2 下午

    [POJ 3468]A Simple Problem with Integers给定Q个数A1, ..., AQ,多次进行以下操作:1.对区间[L, R]中的每个数都加n.2.求某个区间[L, R]中 ...