問題の意味:2つの長さが与えられたn個のアレイは、AI、BI。Q満足(I BI + bjのどのくらいの権利<j)は+ AJ愛>を?
ソリューション: - = BJ> 0、覚え配列CI AI-BIこの問題は、統計的なCI + CJ> 0どのように多くのペアであることが判明し...変形は+ AJ双方向-AI
ソート配列CI、CI寄与はCIがどのように多くの数よりも大きい後ろ-ciを見つけるに等しいです。()秩序、直接UPPER_BOUNDを見つけるため。
時間計算量は(nlogn)です。
//#<ビット/ STDC ++。H>含みます 書式#include <cstdioを> 書式#include <CStringの> 書式#include <cmath> 書式#include <アルゴリズム> 書式#include <iostreamの> 書式#include <文字列> 書式#include <stdio.hに> 書式#include <キュー> 書式#include <スタック> 書式#include <マップ> 書式#include <セット> 書式#include <string.hの> 書式#include <ベクトル> 長い長いLLのtypedef。 #define int型LL #defineモッズ十億七 #define GCD __gcd #define REPは(I、J、N)のための(INT iはjは=; I <= N; I ++) #defineは、赤色(I、N、j)のための(INT I = N; I> = J; i--) #define ME(x、y)はmemsetの(X、Y、はsizeof(x))を // LL LCM(-1,11,11- B){* B / GCD(A、B)を返します;} 一方、(B){IF(B&1)ANS = ANS *%のMOD; //は(-1,11,11- B){LL ANS = 1をquickpowちゃうB >> = 1、A = A *%のMOD;}リターンANS;} // INT euler1(INT X){int型ANS = X;のために(INT iが= 2、iは<= X *; I ++)IF(X%I == 0){ans- = ANS / I、一方(X %I == 0)は、x / = I;}もし(X> 1)ans- = ANS / X;戻りANS;} // CONST INT N = 1E7 + 9。INT VIS [n]は、素数[n]は、PHI [N]; int型euler2(INT N){ME(VIS、TRUE); INT LEN = 1;担当者(I、2、N){IF(VIS [I] ){プライム[LEN ++] = I、PHI [i]は= I-1;}の(INT J = 1; J <LEN &&プライム[J] * I <= nであり、j ++){VIS [i *が素数[J] = 0;(I%プライム[j] == 0){;ブレーク; PHI [I *プライム[J] = PHI [I] *プライム[J]}もしそうでなければ{PHI [iが素数[Jを*]] = PHI [I] * PHI [プライム[J]];}}}戻りLEN} #define INF 0x3f3f3f3f #define PIのACOS(-1) #define PIIペア<int型、int型> #define Fiの最初の #define SE秒 #define LSONリットル、ミッド、根<< 1 #define rson半ば+ 1、R、根<< 1 | 1 #define PB一back #define融点make_pair #define CIN(X)のscanf( "%のLLD"、&x)は、 名前空間stdを使用。 CONST INT N = 1E7 + 9。 const int型MAXN = 2E5 + 9。 CONSTダブルESP = 1E-6。 INT [MAXN]、B [MAXN]、C [MAXN]。 ボイドは、{()解決します int型のn; cinを>> N; 担当者(I、1、N){ CIN >> [i]は、 } 担当者(I、1、N){ CIN >> B [i]は、 C [I] = [I] - 、B [i]は、 } ソート(C + 1、C + 1個の+ N)。 INT年= 0; 担当者(I、1、N){ INT CNT = UPPER_BOUND(C + 1 + I、C + 1 + nは、[I] -c) - C。 年+ = N - CNT + 1; } coutの<< ANS <<てendl; } 主符号付き() { // IOS :: sync_with_stdio(偽); //cin.tie(0); cout.tie(0)。 // int型トン。 // cinを>>トン。 //一方、(T - ){ 解決する(); //} }