Codeforces 1188B - Count Pairs(思维题)
虽说是一个 D1B,但还是想了我足足 20min,所以还是写篇题解罢(
首先注意到这个式子里涉及两个参数,如果我们选择固定一个并动态维护另一个的决策,则相当于我们要求方程 \(ax^3+bx^2+cx+d\equiv k\pmod{p}\) 的根,而这是很难维护的,因此这个思路行不通。考虑 \((x+y)(x^2+y^2)\) 的性质,我们考虑在前面添上一项 \((x-y)\),根据初中数学 \((x-y)(x+y)(x^2+y^2)=x^4-y^4\),因此 \((x+y)(x^2+y^2)=\dfrac{x^4-y^4}{x-y}\),因此我们即需求 \(\dfrac{a_i^4-a_j^4}{a_i-a_j}\equiv k\pmod{p}\) 的 \((i,j)\) 个数,两边同乘 \((a_i-a_j)\) 再移个项可得 \(a_i^4-ka_i\equiv a_j^4-ka_j\pmod{p}\),map 维护即可,由于 \(a_i\ne a_j\),所以左边的分式肯定有意义。
虽说是个 *2300,但还是让我学到了许多,稍微总结一下吧:
- 看到 \(p\) 是质数这样的条件,大部分情况都要用到某些数在 \(\bmod p\) 意义下的逆元,极少数情况与二次剩余有关。
- 看到序列中两两元素不同的条件,复杂度有可能与 \(\sum\limits_{i=1}^n\dfrac{n}{a_i}\) 有关,因为调和级数是 \(n\ln n\) 的,如 CF1553F。也有可能要用到 \(a_i-a_j\) 的逆元,如本题。
- 如果我们要统计满足 \(\dfrac{X(i,j)}{Y(i,j)}\equiv k\pmod{p}\) 的 \((i,j)\) 个数,并且 \(X(i,j),Y(i,j)\) 都可以写作 \(na_i+ma_j\) 的形式,那么把 \(Y(i,j)\) 乘到右边去统计起来会很方便,其他情况可以考虑向这种情况转化。注意特判 \(Y(i,j)=0\) 的情况。
const int MAXN=3e5;
int n,k,p,a[MAXN+5];map<int,int> t;
int calc(int x){return (1ll*x*x%p*x%p*x%p-1ll*k*x%p+p)%p;}
int main(){
scanf("%d%d%d",&n,&p,&k);ll res=0;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) res+=t[calc(a[i])],t[calc(a[i])]++;
printf("%lld\n",res);
return 0;
}
Codeforces 1188B - Count Pairs(思维题)的更多相关文章
- Codeforces 1188B Count Pairs (同余+分离变量)
题意: 给一个3e5的数组,求(i,j)对数,使得$(a_i+a_j)(a_i^2+a_j^2)\equiv k\ mod\ p$ 思路: 化简$(a_i^4-a_j^4)\equiv k(a_i-a ...
- CodeForces - 1189E Count Pairs(平方差)
Count Pairs You are given a prime number pp, nn integers a1,a2,…,ana1,a2,…,an, and an integer kk. Fi ...
- CF--思维练习-- CodeForces - 215C - Crosses(思维题)
ACM思维题训练集合 There is a board with a grid consisting of n rows and m columns, the rows are numbered fr ...
- Codeforces 675C Money Transfers 思维题
原题:http://codeforces.com/contest/675/problem/C 让我们用数组a保存每个银行的余额,因为所有余额的和加起来一定为0,所以我们能把整个数组a划分为几个区间,每 ...
- Codeforces 1090D - Similar Arrays - [思维题][构造题][2018-2019 Russia Open High School Programming Contest Problem D]
题目链接:https://codeforces.com/contest/1090/problem/D Vasya had an array of n integers, each element of ...
- Covered Points Count(思维题)
C. Covered Points Count time limit per test 3 seconds memory limit per test 256 megabytes input stan ...
- Codeforces 1189E. Count Pairs
传送门 可以算是纯数学题了吧... 看到这个 $(x+y)(x^2+y^2)$ 就可以想到化简三角函数时经常用到的操作,左右同乘 那么 $(a_i+a_j)(a_i^2+a_j^2) \equiv ...
- codeforces 652C Foe Pairs 水题
题意:给你若干个数对,给你一个序列,保证数对中的数都在序列中 对于这个序列,询问有多少个区间,不包含这些数对 分析:然后把这些数对转化成区间,然后对于这些区间排序,然后扫一遍,记录最靠右的左端点就好 ...
- codeforces 1140D(区间dp/思维题)
D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
随机推荐
- vue基础-组件&插槽
组件 组件化的意义:封装(复用,把逻辑隐藏起来,提高可维护性),快速开发(搭积木) 约定:我们通常把那些除了HTML标签以外的自定义组件,才称为'组件',结论是,我们说"父组件"& ...
- F1英国大奖赛-银石赛道地图及弯道
背景 今天晚上(2020-08-02)是今年英国大奖赛的正赛.刚好了解了一下赛道地图.记录一下,明年就不用到处找了. 简介 银石赛道(Silverstone Circuit)由一个废弃的空军基地改建, ...
- Github 29K Star的开源对象存储方案——Minio入门宝典
对象存储不是什么新技术了,但是从来都没有被替代掉.为什么?在这个大数据发展迅速地时代,数据已经不单单是简单的文本数据了,每天有大量的图片,视频数据产生,在短视频火爆的今天,这个数量还在增加.有数据表明 ...
- 基于Apache Zookeeper手写实现动态配置中心(纯代码实践)
相信大家都知道,每个项目中会有一些配置信息放在一个独立的properties文件中,比如application.properties.这个文件中会放一些常量的配置,比如数据库连接信息.线程池大小.限流 ...
- 解决svn异常报错“”cleanup failed to process the following paths …… previous operation has not finished”
参考高票答案https://stackoverflow.com/questions/10128201/subversion-stuck-due-to-previous-operation-has-no ...
- Linux C语言链表详细分析
链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用.链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节 ...
- 算法:N-皇后问题
一.八皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在8 × 8 的国际象棋棋盘上放置八个皇后(Queen),使得任何一个皇后都无法直接吃掉其他的皇后.为了达到此目的,任两个皇后都不能处于 ...
- vscode插件集合整理
针对PEPE8进行代码规范提示,安装flake8之后写代码的时候编辑器就会提示哪里出错,代码格式不规范也会提示,具体安装方式如下: 1.pip install flake8 2.安装flake8成功后 ...
- Unity的Deferred Shading
什么是Deferred Shading Unity自身除了支持前向渲染之外,还支持延迟渲染.Unity的rendering path可以通过Edit/Project Settings中的Graphic ...
- RGB-YUV
1,RGB 1.1 RGB说明 RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通 ...