传送门

题目

给你一个长度为n的数组和m次修改,每次修改会将其中的一个数字修改成另一个数字然后形成一个新数组,初始数组和修改过程的数组保证没有相同的数字,问你所有任意两个数组之间去重之后元素的数量的和。

思路

考虑一下所有数组都不含相同元素的情况,那么就有(1+2+3+…+m-2+m-1+m)=m(m+1)/2对,然后每一对都有2n个,那么res结果为m(m+1)/2*2n。然后考虑如何去重就可以了。

在此我们可以假设一下,如果不改变所有元素,那么每个元素都会出现m+1次,对于每一次修改的元素x和被修改的y,如果接下来x不会被修改的话,那么x会增加m-i+1次(前提为所有数组都没有相同的数字),y会减少m-i+1次遍历一遍找每个元素重复的次数,然后用次数*(次数-1)/2得到每个元素重复所减少的贡献,然后用res减去这些所有的贡献就是最后的结果。

ps:(他奶奶的不会写这个看了题解也不懂,后来才发现每次修改后面的数字都会增加(如果不被修改),属于是题目又没理解到位了qwq)

代码

void slove( )
{int t;sc_int(n),sc_int(m);map<ll,ll>p;for(int i =1;i<=n;i++){cin>>s[i];p[s[i]]=m+1;}ll res=0;for(int i=1;i<=m;i++){int l,y;cin>>l>>y;int x=s[l];p[x]-=m-i+1;p[y]+=m-i+1;s[l]=y;}for(auto i:p){res+= i.second*(i.second-1)/2 ;}cout<<(ll)n*m*(m+1)-res;cout<<endl;
}

C. Serval and Toxel‘s Arrays相关推荐

  1. 【Codeforces Round #853 (Div. 2)】C. Serval and Toxel‘s Arrays【题解】

    题目 Toxel likes arrays. Before traveling to the Paldea region, Serval gave him an array a a a as a gi ...

  2. C. Serval and Toxel‘s Arrays(数学贡献法)

    Problem - C - Codeforces Toxel喜欢数组.在前往帕尔迪亚地区之前,塞瓦尔给了他一个阵列作为礼物.这个数组有n个成对不同的元素.为了获得更多的数组,Toxel对初始数组进行了 ...

  3. C. Serval and Toxel‘s Arrays(容斥+按值算贡献

    Problem - C - Codeforces 题意:一个 n 长的值成对不同数组,有 m 次变化,每次执行一次 p 位置,改为 v 值[保证每次改完的数组内的值成对不同],计算所有 m + 1 的 ...

  4. Codeforces Round #853 (Div. 2) C. Serval and Toxel‘s Arrays【统计次数,算贡献】

    链接 传送门 分析 这道题想法其实很简单,样例的计算方法一定要看懂.以样例1为例,根据他的操作方法可以得到两个新的数组,和一个原来的数组,总共三个数组. 1 2 3 4 2 3 4 5 3 他们两两配 ...

  5. C. Serval and Toxel‘s Arrays codeforces1789C

    Problem - C - Codeforces 题目大意:有一长度为n的字符串a,有m次操作,每次操作将a中位置为x的数修改成y,从而产生一个新的数组,产生了m个数组后,将这m个数组和原数组a,两两 ...

  6. cf----2019-09-22(Chocolates,Serval and Bus, Polycarp Restores Permutation)

    明若清溪天下绝歌 缱绻成说,不知该在哪处着墨:一生情深怎奈何世事 徒留斑驳,只一念痴恋成奢. You went to the store, selling nn types of chocolates ...

  7. Numpy掩码数组masked arrays,这一篇就够了

    Numpy掩码数组masked arrays,这一篇就够了 1. 什么是掩码数组 2.示例 2.1 一个例子走进掩码数组 2.2 创建一个数组第二个值是无效的 2.3 创建一个数组所有靠近1.e20的 ...

  8. JavaSE基础:Arrays工具类

    Java工具类: Arrays Arrays类是数组的操作类,定义在java.util包中,主要功能是实现数组元素的查找/数组内容的充填/排序等功能 1.排序数组的sort方法 重点:对数组元素进行排 ...

  9. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

最新文章

  1. [AT2369] [agc013_c] Ants on a Circle
  2. sh脚本异常:bad interpreter: No such file or directory
  3. 【运营】产品经理必须了解的运营方法,让你的产品有产有销
  4. .NET Core 3.0 构建和部署
  5. 洛谷 P1141 01迷宫(dfs)
  6. 自然语言处理——BERT情感分类实战(一)之预处理
  7. c++ 调用python_闲话python 48: C/C++扩展Python与Swig工具
  8. android电视root权限获取,各大安卓电视盒子通用!用无线获取ROOT权限教程!
  9. Windows Server 2016 (Updated Feb 2018) (x64)下载
  10. deepIn 、 DDE 系统桌面黑屏解决方案
  11. SAP 获取不同币种间的汇率 RFC BAPI_EXCHANGERATE_GETDETAIL
  12. LeetCode——1900. 最佳运动员的比拼回合(The Earliest and Latest Rounds Where Players Compete)[困难]——分析及代码(Java)
  13. 斑马打印机打印不出来字怎么解决
  14. HSV(HSB)和HSL颜色空间
  15. 项目:基于yolov5的舰船检测+pycharm+机器学习+图像检测
  16. 用余下的青春尽力飞翔
  17. 密码打马赛克已经不安全了!这款开源的去“马赛克“工具一秒还原
  18. Python3 遍历列表、字典和元组方式总结
  19. 弘辽科技:淘宝卖家如何制作高点击神图,看了这篇文章就够了
  20. PDF转Word免费的软件有哪些?(完整教程版!)

热门文章

  1. 办公建筑能耗监测系统的结构与功能介绍——安科瑞 严新亚
  2. linux网卡流量限速wondershaper
  3. 深度学习工具audioFlux---一个系统的音频特征提取库
  4. 一种采用耐高压变压器油和超导金属导线的变压器
  5. Spring-Data-ElasticSearch 在查询时对【特殊字符】的处理
  6. python画图模糊_使用python matplotlib 画图导入到word中如何保证分辨率
  7. 区位码、国标码与机内码的转换关系
  8. 世界十大蓝牙耳机品牌,四款好用的蓝牙耳机推荐
  9. 浅析外国人在中国机场如何蹭网
  10. portswigger JWT attacks