Fork me on GitHub

随笔分类 -  算法

摘要:求逆序对问题: 即例可以在数组{1,9,11,2,5,32,12}求有多少逆序对或者有序对。 我们可以转化为二维坐标系。 以数组的下标作为坐标的x轴,以数值作为坐标的y轴。 如下图 先按x轴排序,我们需要求在此点的左下方有多少点,即若现在为第k个点(xk,yk)那么求(1,k-1)之间有多少点x,y 阅读全文
posted @ 2021-04-28 01:20 lcsdsg 阅读(442) 评论(0) 推荐(0)
摘要:问在x,y范围内Σyk=xDI(K)为多少? DI(K)定义为di>dj&&i<j ,K由dn....d2d1d0构成如DI(123) = 3(d2<d1,d2<d0,d1<d0)DI(253) = 2(d2<d0,d1<d0) 那么我们就数位dp一下,访问所有的数,h[cur][flag][lim 阅读全文
posted @ 2021-03-14 21:44 lcsdsg 阅读(116) 评论(0) 推荐(0)
摘要:单点修改,区间查询 const int maxn = 500005 * 4; //线段树范围要开4倍 struct Tree { int l, r, sum, maxx; }; Tree node[maxn]; //node[maxn]为线段树处理数组 int a[maxn]; //a[maxn]为 阅读全文
posted @ 2021-02-08 16:46 lcsdsg 阅读(73) 评论(0) 推荐(0)
摘要:#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct zzz { int t, nex; }e[500010 << 1]; int head[ 阅读全文
posted @ 2021-02-04 15:11 lcsdsg 阅读(78) 评论(0) 推荐(0)
摘要:皮克定理:S=a+b/2​−1。 S表示多边形的面积 a表示多边形内的整数点 b表示多边形边界上的整数点。 求s的板子: int n; cin >> n; ll x0,y0,x1,y1,S = 0; cin >> x[1] >> y[1]; x0 = x[1]; y0 = y[1]; x1 = x[ 阅读全文
posted @ 2021-01-31 16:20 lcsdsg 阅读(1011) 评论(1) 推荐(0)
摘要:置换群:G;置换群中置换个数:|G|;我们喜欢用 m 阶循环这种记号来表示 置换。m 阶循环:相邻元素可以直接到达,第 m 个位置可以到达第 1 个位置。例如:5 阶循环:(1 5 2 4 3),1->5->2->4->3->1…..,3->4->2->5->1->3…..前置技能还有:共轭类格式: 阅读全文
posted @ 2021-01-31 15:50 lcsdsg 阅读(384) 评论(0) 推荐(0)
摘要:数位一般来说是求在一段范围内的满足某些条的数,假如说在[ri,le]的条件下满足一定条件的数的话,那么我们就可以采用差分的方法: 就是count = solve(le) - solve(ri-1);或者count = solve(le) - solve(ri) + check(ri); 即就是满足[ 阅读全文
posted @ 2021-01-28 16:47 lcsdsg 阅读(89) 评论(0) 推荐(0)

【推荐】 程序员网址大全  |  EF CodeFirst  |  百度地图.NET  |  MyNPOI  |  开源  |  我的皮肤  |  ASP.NET MVC4  |  前端提升   |  LINQ   |  WCF   |  EasyUI  |