思维
x_1023
这个作者很懒,什么都没留下…
展开
-
BZOJ 4636 蒟蒻的数列 - 排序+线段树/set
排序真是门博大精深的学问。。。先说线段树,大概就是按照大小排个序,小的排在前,然后直接覆盖上一层,线段树set之后维护一下就好了。只不过范围太大,得动态开节点。还得注意:线段树动态开节点的pushdown的写法:子树有可能未建立,不能直接传递下标,于是先建树,调用set函数建树+传递下标一回了事。#include<iostream> #include<cstdlib> #include<cstrin原创 2017-09-29 23:48:38 · 364 阅读 · 0 评论 -
UVa 120 Stacks of Flapjacks 摞煎饼 - 插入排序
题意是给定一摞煎饼,每个煎饼有权值,然后你需要通过一些操作使得煎饼从上到下按照权值从小到大排序。而对于操作的解释如下: ->对于一摞煎饼可以选择其中的一个使得当前煎饼和之上的所有煎饼上下翻转,例如1,2,4,3变为3,4,2,1。 输出:每次选择的煎饼编号,编号从上到下依次为n,n-1… N.B. Special Judge 《lrj紫书》例8-1思考插入排序的过程,原创 2017-10-10 00:24:32 · 303 阅读 · 0 评论 -
BZOJ 3747 Kinoman看电影 - 线段树
线段树写起来好容易挂,还是太渣了。。。一般像这种统计次数的,只能出现一种,要联想到可以转化为pre数组或者next数组在[l,r]的范围之外的有多少个数。对于这道题还需要加点边界,不然很容易就爆了。。。#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm>using nam原创 2017-10-03 10:51:03 · 322 阅读 · 0 评论 -
BZOJ 4430 赌骆驼 - [树状数组+玄学思想]/CDQ分治
先说这个玄学的思想取补集,本来数对共有n(n−1)2\frac{n(n-1)}{2}个,只需要去除不满足的对数即可。思考不满足的对数:若不满足,则必有一次比较中两个数在两个排列中出现的顺序是相反的。 在三次两两排列的比较中,一共有两次出现次序相反 例如给出三个排列:{3,1,2},{2,3,1},{3,2,1},数对(1,2)很明显不满足条件,在1,2序列的比较中,出现第一次次序相反,1,3比原创 2017-10-03 12:40:19 · 321 阅读 · 0 评论 -
BZOJ 2789 Letters - 贪心+树状数组
坑首先考虑这样一个结论:对于第二个串的一个字母(这个字母X是第num次出现),要保证交换最小次数,那么第一个串一定是第num个原创 2017-10-12 19:08:05 · 279 阅读 · 0 评论 -
UVa 11134 Fabled Rooks 虚拟的车 - 贪心+思维
给一个n x n的棋盘,要求在上面放n个车且相互不攻击,而且对于第i个车要求必须在给定的矩形中(每个车所对应的矩形已给出),求一组满足的解,无满足的情况输出”IMPOSSIBLE” ## 坑 ##首先考虑拆点,将二维坐标拆成x轴和y轴的两组,对于每一个轴要求在给定的n个线段上选出一个1~n的排列。如果考虑每条线段只能选择一个数,每个数的选择只能取一次,满足二分图的性质,可以考虑拿最大匹配写(写了个H原创 2017-10-11 15:48:12 · 164 阅读 · 0 评论 -
BZOJ 4236 JOIOJI - 玄学乱搞
推出个公式就成了大水题了,关键这个公式对于蒟蒻来说太难想了。 sum为前缀中各个字母个数,假设一段区间[j,i]满足条件,则有: sumO[i]-sumO[j-1]=sumI[i]-sumI[j-1]=sumJ[i]-sumJ[j-1] \\ 等价于: {sumO[i]−sumI[i]=sumO[j−1]−sumI[j−1]sumO[i]−sumJ[i]=sumO[j−1]−sum原创 2017-10-14 21:44:55 · 190 阅读 · 0 评论 -
BZOJ 3155 [Hnoi2013]数列 - 树状数组/线段树区间加
如果用线段树的话,做法很好想。 以i为下标记录SiS_i,那么aia_i被SiS_i到SnS_n所含,每次修改则将SiS_i到SnS_n的每一个S减去修改的差值即可。时间:624 ms#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm>using namespace s原创 2017-10-15 14:56:17 · 178 阅读 · 0 评论 -
洛谷 P3941 入阵曲 - 前缀和
为啥这么一道弱题难了我好久。。。 考虑一维的情况,维护前缀和,其中余数用一个桶来维护,前缀和相等的其差的余数一定相等,于是在桶里搜就好。 二维把每一个竖列的线段区间压成一维即可。一维转二维啊#include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> #include<set> #include<algorithm原创 2017-11-03 10:18:34 · 363 阅读 · 0 评论