由於是乙個二次函式的關係,所以易證應該盡量讓兩組的順序相同
然後就離散化亂搞幾發,最後就變成了求逆序對的數量了
1 #include2#define pa pair3
#define ll long long
4using
namespace
std;
5const
int maxn=100010,mod=99999997;6
7inline ll rd()
10while(c>='
0'&&c<='
9') x=x*10+c-'
0',c=getchar();
11return x*neg;12}
1314
intn;
15pa h1[maxn],h2[maxn];
16int
nh[maxn],rank[maxn];
17int
tr[maxn];
1819 inline int lowbit(int x)
2021 inline void add(int x,int
y)24 inline int query(int
x)27
28int
main()for(i=1;i<=n;i++)int ans=0;39
for(i=n;i;i--)printf("
%d\n
",ans);
43return0;
44 }
luogu1966 火柴排隊
題目描述 涵涵有兩盒火柴,每盒裝有 n 根火柴,每根火柴都有乙個高度。現在將每盒中的火柴各自排成一列,同一列火柴的高度互不相同,兩列火柴之間的距離定義為 ai bi 2 其中 ai 表示第一列火柴中第 i 個火柴的高度,bi 表示第二列火柴中第 i 個火柴的高度。每列火柴中相鄰兩根火柴的位置都可以交...
題解 LuoGu1966 火柴排隊
原題傳送門 首先可以證明,兩列火柴中高度排名相等的火柴必須排在上下相鄰的兩個 證明略然後把第乙個序列中的排名對映到第二個序列中 然後問題轉化,轉化成求逆序對數 用樹狀陣列 code include define maxn 100010 define qy 99999997 using namespa...
1966 火柴排隊
難度 提高 省選 題目型別 貪心 分治 提交次數 5 涉及知識 逆序對 離散化 涵涵有兩盒火柴,每盒裝有 n 根火柴,每根火柴都有乙個高度。現在將每盒中的火柴各自排成一列,同一列火柴的高度互不相同,兩列火柴之間的距離定義為 ai bi 2 其中 ai 表示第一列火柴中第 i 個火柴的高度,bi 表示...