Cow Photographs bzoj-2058 Usaco-2010 Nov 题目大意:给定一个n的排列.每次操作可以交换相邻两个数.问将序列变成一个:$i,i+1,i+2,...,n,1,2,...,i-1$形式的序列最少操作次数. 注释:$1\le n\le 10^5$. 想法: 我们做过将序列变成1~n的形式,就是用树状数组求一下逆序对个数. 而这个题我们先求出i=1的答案,没错就是逆序对个数. 然后我们考虑如何从$i$变成$i+1$. 每次,我们考虑将当前序列中最小的数变成最大的数加…
公共子序列 题目链接:https://cometoj.com/contest/39/problem/E?problem_id=1585 数据范围:略. 题解: 首先可以考虑知道了$1$的个数和$3$的个数,怎么求? 其实就是从开始找$x$个$1$,从结尾找$z$个$3$,然后两个序列中间$2$的个数的较小值. 然后按照官方题解那样推式子,发现可以用树状数组维护. 代码: #include <bits/stdc++.h> #define N 5000010 using namespace std…
BZOJ_2058_[Usaco2010 Nov]Cow Photographs_逆序对 题意: 奶牛的图片 Farmer John希望给他的N(1<=N<=100,000)只奶牛拍照片,这样他就可以向他的朋友炫耀他的奶牛.这N只奶牛被标号为1..N. 在照相的那一天,奶牛们排成了一排.其中第i个位置上是标号为c_i(1<=c_i<=N)的奶牛.对于奶牛的站位,Farmer John有他自己的想法. FJ是这么想的,标号为i(1<=i<=n-1)的奶牛只能站在标号为i+…
Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2185    Accepted Submission(s): 683 Problem Description Sherlock's N (1 ≤ N ≤ 100,000) cows are lined up to be milked in the evening.…
\(\mathrm{Sleepy Cow Sorting}\) 问题描述 LG5200 题解 树状数组. 设\(c[i]\)代表\([1,i]\)中归位数. 显然最终的目的是将整个序列排序为一个上升序列,于是倒序枚举,先把最后有序的插入. 剩下来前面无序的就是要操作的,于是直接输出操作次数. 接下来方案很容易构造. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; void read(int &x){ x=0;…
Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4766    Accepted Submission(s): 1727 Problem Description Sherlock's N (1 ≤ N ≤ 100,000) cows are lined up to be milked in the evening.…
这道题一上手就知道怎么做了= = 直接求出原光路和从目标点出发的光路,求这些光路的交点就行了 然后用树状数组+扫描线或函数式线段树就能过了= = 大量的离散+模拟+二分什么的特别恶心,考试的时候是想到了不过被代码难度吓到了根本不想写QAQ 这时官方的代码就显现出了c++的STL的强大功能了 离散sort+unique+resize+lower_bound直接秒杀,模拟也是lower_bound+讨论直接秒杀 不得不让我这种一直还在手打二分的情何以堪啊QAQ 比较一下吧 官方3K,一同学(c++)…
这题目意思非常easy,就是给你一个数组,然后让你又一次排好序,排序有要求的,每次仅仅能交换两个元素的位置,交换须要一个代价 就是两个元素之和,问你把数组重小到大排好最少须要多少代价 可能一開始想不到逆序数,我是专门做专题往那边想才想到的,举个样例吧 数组: 9 1 0 5 4 此时到 0 的时候,我们先手写一下最小代价,然后再依照自己的推測去看看,就是当前扫到0,那么前面比它大的数有2个,所以先 部分代价为 2 * 0,然后再加上前面比它大的数 也就是9 和1 ,那么最小代价为10,发现跟手算…
Description 给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数 题解: 方法一: 搞一个KDtree,数一下点即可. 方法二: 对于每个数存一下左端点 $l[a]$ 与右端点 $r[a]$, 按照左端点从小到大进行排序. 枚举到每个数字,就将左端点对应的桶 ++, 右端点对应的桶 --,每次对答案的更新为 $sum[l]$ - $sum[r]$. 为什么呢 ? 假设左端点的 $sum$ 为 $a$, 右端点的…
数表 bzoj-3529 Sdoi-2014 题目大意:n*m的数表,第i行第j列的数是同时整除i和j的所有自然数之和.给定a,求数表中所有不超过a的和. 注释:$1\le n,m \le 10^5$. 想法:我们先不考虑那个a的限制:我们设f(i)表示整除i的自然数之和. $\sum\limits_{i=1}^n\sum\limits_{j=1}^m f(gcd(i,j))$ $=\sum\limits_{i=1}^n\sum\limits_{j=1}^m f(d)\cdot [gcd(i,j…