摘要:
luogu1975 排队(分块) 给你一个长度为n的序列,每次交换给定的两个数,输出每次操作后的逆序对个数。 首先考虑求出刚开始的逆序对。接着相当于带修改的求区间中比x大的数。 可以用分块,每个块内排序,然后维护排序后的块。每次查询,块外二分,块内暴力。 c++ include include in 阅读全文
摘要:
uva10570(枚举基准,贪心) 输入一个1至n的排列(n using namespace std; const int maxn=505, INF=1e9; int min(int x, int y){ return x 1); ++i) swap(a[i], a[n i+1]); for (i 阅读全文
摘要:
二进制数(dp,记忆化搜索) 给定k个 include include using namespace std; const int maxk=11, maxn=1e6+5; int k, n, a[maxk], vis[maxn]; struct node{ int x, len, pre, en 阅读全文
摘要:
luogu3224 永无乡(动态开点,权值线段树合并) 永无乡包含 n 座岛,编号从 1 到 n ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可 阅读全文
摘要:
luogu 3806 【模板】点分治 给定一棵有n个点的树,有m个询问,每个询问树上距离为k的点对是否存在。树的权值最多不超过c。n include include include using namespace std; const int maxn=1e4+5; struct Graph{ st 阅读全文