zoukankan      html  css  js  c++  java
  • CF1188B/1189E [count pairs]

    题目大概意思就是

    有几对 (i) , (j) 满足 ((a_i+a_j)) * ((a_i^2 + a_j^2)) % (p) = (k) % (p)

    暴力的时间复杂度显然是 (θ(N^2)) 的 , (2 <= N <= 300000) 显然会 T 掉 而 CF T 掉是没有部分分的

    好我们看 根据初中的数学知识

    [(a+b)(a-b) = a^2 - b^2 ]

    当我们看到 ((a_i+a_j)) 肯定会第一个想到((a_i-a_j))

    所以两边同乘 ((a_i-a_j)) , 然后根据柿子
    可得

    [(a_i^2 + a_j^2)(a_i^2 - a_j^2)\%p = k(a_i-a_j)\%p ]

    那么再根据柿子

    [(a+b)(a-b) = a^2 - b^2 ]

    不难再次合并
    可得

    [(a_i^4 - a_j^4) = k *a_i - k * a_j ]

    然后移项

    [a_i^4 - a_i *k= a_j^4 - a_j *k ]

    如何( heta(N)) 算出答案的值呢?

    int ans = 0 ;
    	for(register int i=1;i<=n;i++) {
    		ans += mp[f[i]] ;
    		++ mp[f[i]] ;
    	}
    

    记得多取模%%% + LL

    #include <bits/stdc++.h>
    #define rep(i,j,n) for(register int i=j;i<=n;i++)
    #define Rep(i,j,n) for(register int i=j;i>=n;i--)
    #define low(x) x&(-x)
    using namespace std ;
    typedef long long LL ;
    const int inf = INT_MAX >> 1 ;
    inline LL read() {
    	LL res(0) , f(1) ;
    	register char c ;
    #define gc c = getchar()
    	while(isspace(gc)) ;
    	c == '-' ? f = - 1 , gc : 0 ;
    	while(res = (res << 1) + (res << 3) + (c & 15) , isdigit(gc)) ;
    	return res * f ;
    #undef gc
    }
     
    #define int long long
    int n , p , k ;
    int a[300000 + 5] ;
    int f[300000 + 5] ;
     
    map < int , int > mp ;
    inline void Ot() {
    	n = read() , p = read() , k = read() ;
    	for(register int i=1; i<=n; i++) a[i] = read() ;
    	for(register int i=1; i<=n; i++) {
    		f[i] = (a[i] * a[i]) % p * a[i] % p * a[i] % p - a[i] * k % p ;
    		f[i] %= p ;
    		if(f[i] < 0) f[i] += p ;
    	}
    	int ans = 0 ;
    	for(register int i=1;i<=n;i++) {
    		ans += mp[f[i]] ;
    		++ mp[f[i]] ;
    	}
    	cout << ans << endl ;
    	return ;
    }
    signed main() {
    //  freopen("test.in","r",stdin) ;
    	return Ot() , 0 ;
    }
    
  • 相关阅读:
    AUDIT审计的一些使用
    HOW TO PERFORM BLOCK MEDIA RECOVERY (BMR) WHEN BACKUPS ARE NOT TAKEN BY RMAN. (Doc ID 342972.1)
    使用BBED理解和修改Oracle数据块
    Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC [ID 1340831.1]
    调试利器GDB概念
    第4章 思科IOS
    第3章 ip地址和子网划分
    第2章 TCPIP
    2020年阅读过的黑客资源推荐篇
    第1章 计算机网络
  • 原文地址:https://www.cnblogs.com/qf-breeze/p/11141522.html
Copyright © 2011-2022 走看看