正题

nowcoder 1103A


题目大意

有一个数组,将其复制k遍,求所有区间内不同元素个数的和


解题思路

同一个区间内有相同的数那么在最右边的数计算贡献

记 rrr 为右边第一个相等的数,那么贡献就是到 rrr 的距离乘上左边的数字个数(有哪些区间可以让这个数计算贡献)


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define wyc 1000000007
#define N 100100
using namespace std;
ll n,k,m,gg,ans,a[N],b[N],L[N],rs[N];
ll ksm(ll x,ll y)
{ll z=1;while(y){if(y&1)z=z*x%wyc;x=x*x%wyc;y>>=1;}return z;
}
int main()
{scanf("%lld%lld",&n,&k);for(ll i=1;i<=n;++i){scanf("%lld",&a[i]);b[i]=a[i];}sort(b+1,b+1+n);m=unique(b+1,b+1+n)-b-1;for(ll i=1;i<=n;++i)a[i]=lower_bound(b+1,b+1+m,a[i])-b;for(ll i=1;i<=m;++i)L[i]=n+1;for(ll i=n;i>0;--i){rs[i]=L[a[i]];L[a[i]]=i;}gg=ksm(2,wyc-2);for(ll i=1;i<=n;++i)ans=(ans+(i+n*(k-1)%wyc)%wyc*(rs[i]-i)%wyc)%wyc;for(ll i=1;i<=n;++i){if(rs[i]==n+1)rs[i]=n+L[a[i]];ans=(ans+(i+i+(k-2)*n%wyc)%wyc*(k-1)%wyc*gg%wyc*(rs[i]-i)%wyc)%wyc;}printf("%lld",ans);return 0;
}

复读数组(nowcoder 1103A)相关推荐

  1. [2019 牛客CSP-S提高组赛前集训营4题解] 复读数组(数论)+ 路径计数机(数上DP)+ 排列计数机(线段树+二项式定理)

    文章目录 T1:复读数组 题目 题解 代码实现 T2:路径计数机 题目 题解 代码实现 T3:排列计数机 题目 题解 CODE T1:复读数组 题目 有一个长为n×k的数组,它是由长为n的数组A1,A ...

  2. 剑指 offer 题目分析及答案

    1. 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到头打印链表 7. 重建二叉树 8. 二叉树的下一个结点 9. 用两个栈实现队列 ...

  3. 269道各路算法考试题集锦

    1 某编程大赛题(35道题,中等难度) 1.在实际的开发工作中,对于string的处理是最常见的编程任务,本题是要求程序对用户输入的string进行处理,具体要求如下: 1.每个单词的首字母变为大写. ...

  4. 【nowcoder 224882】牛牛和数组操作(贪心)(剪枝)(区间DP)

    牛牛和数组操作 题目链接:nowcoder 224882 题目大意 给你一个没有 0 的数组,每次你可以选一个数,然后把它变成 0,费用是它两边为端点最长的没有 0 的最长区间的最大值. 然后要你在最 ...

  5. Nowcoder java-二维数组中的查找

    Nowcoder java-二维数组中的查找 (题目来自牛客网) 思路 从左下角或者右上角的数开始查找目标函数. 代码以右上角的数字为例: 1.如果target 等于右上角的数,则返回该数字: 2.如 ...

  6. Nowcoder farm ( 树状数组、二维前缀和、二维偏序 )

    题目链接 分析 : 最简单的想法当然就是去模拟 直接对每个施肥料的操作进行模拟.然后计算贡献 但是这显然会超时.这题需要换一个思维 对于一个土地(也就是二维平面上的一个点)的种类是 T' 如果它被操作 ...

  7. 链接:https://ac.nowcoder.com/acm/problem/22228来源:牛客网题目描述 在给定的数组中删除一个数。输入描述:多组测试。每组第一行输入1个整数n(n

    链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 在给定的数组中删除一个数. 输入描述: 多组测试. 每组第一行输入1个整数n(n<20), 第二行输入n个整数 第三行输入1 ...

  8. 【毛坦厂复读生心中所想】—— 我在大学挺好的【内附学习资源和路线】

    大家好,我是安然无虞. 目录 一.雪崩时每一朵雪花都不是无辜的 二.我在大学挺好的 1.大一干货 2.大二干货 第一件法宝:gitee 第二件法宝:力扣 第三件法宝:博客 三.ACM.蓝桥杯等程序设计 ...

  9. [nowCoder] 局部最小值位置

    定义局部最小的概念.arr长度为1时,arr[0]是局部最小.arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小:如果arr[N-1]<arr[ ...

最新文章

  1. by截取字段 group_sqlserver group by后获取其他字段(多种方法)
  2. win8系统ghost后只有一个盘了其它分区的文件如何找回
  3. agg::rendering_buffer 渲染缓存
  4. 20155210 Exp5 MSF基础应用
  5. 如何用JavaScript实现获取验证码的效果
  6. 用 JavaScript 验证只能输入数字,并做数字加总
  7. 如何用AD20打开ddb文件
  8. 在 PHP 中使用命令行工具
  9. qt android webview,qt browser 加载一个webview过程
  10. Python 回归 普通最小二乘法(Ordinary Least Squares)
  11. plsql本机不安装数据库连接远程数据库
  12. (转) SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程
  13. c语言国二题库选择填空题,国二c语言笔试题库(含答案),选择填空.doc
  14. java 浏览器设置字体大小_css 字体设置(不同浏览器设置效果)
  15. Technica Engineering
  16. 宝塔面板安装MySQL数据库
  17. 谷歌浏览器搜索框记录_如何清除您的Google搜索记录
  18. python填充nan_Python Pandas Dataframe填充NaN值
  19. 红楼梦——诗词鉴赏之芙蓉女儿诔
  20. 记Elsevier上Latex投稿

热门文章

  1. 计算机显卡是指什么时候,电脑哪个是显卡
  2. python 求和并排序_Python算法教程第三章知识点:求和式、递归式、侏儒排序法和并归排序法...
  3. signature=fc89d4352b6699754c14ce282ec75426,Method for Assembly of Nucleic Acid Sequence Data
  4. hdu4911 Inversion-归并排序
  5. 蓝桥杯2016初赛-生日蜡烛-枚举
  6. UVA10129 Play on Words (并查集判连通+欧拉回路)
  7. java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数
  8. 图片上传组件_配置Django-TinyMCE组件 实现上传图片功能
  9. Java | Assignment Statements Expressions
  10. error: ‘CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD’ was not declared in this scope