[AGC006E] Rotate 3x3 树状数组+贪心】的更多相关文章

Description ​ XFZ在北京一环内有一套房. ​ XFZ房子的地砖呈网格状分布,是一个3∗N3∗N的网格.XFZ在买下这套房时,每个地砖上有一个数字,位置为(i,j)(i,j)的地砖上的数字恰好为i+3(j−1)i+3(j−1). N=5N=5时XFZ家的俯视图 ​ XFZ的房子特别高级,地底暗藏转轴机关.每次转轴可以顶起一片3x3的地砖,将其旋转180°,再放下地砖. 一个转轴作业的例子(蓝色区域为旋转完成之后的区域) ​ XFZ决定要让地砖有美感.他希望他能使用他的高级转轴达到一…
题目传送门 /* 题意:不懂... 线段树+树状数组+贪心:贪心从第一位开始枚举,一个数可以是循环节的末尾或者在循环节中,循环节(循环节内部是后面的换到前面,最前面的换到最后面).线段树维护最大值,树状数组维护区间是否是循环节,查找前面最左边不是循环节的可用二分.我还是云里雾里的,看懂了网上的解题报告但还是不是完全明白题意:( 详细解释:http://blog.csdn.net/qq_24451605/article/details/47173933 */ /******************…
4240: 有趣的家庭菜园 题目:传送门 题解: 好题!%%% 一开始不知道在想什么鬼,感觉满足二分性?感觉可以维护一个先单调增再单调减的序列? 然后开始一顿瞎搞...一WA 看一波路牌...树状数组+贪心...起手就是一发伏地膜大师 mdzz一个超级沙比但是经常被忽略的结论:对于最后操作完的序列,我们把原来的下标取出求一遍逆序对就是操作次数了啊 模型转化为求一个最终序列使得逆序对数最少 补一个树状数组求逆序对:对于当前数x,考虑以权值建树状数组,getsum求出小于等于x的数的个数,用sum减…
题意:有一个长度为n的序列,你每次可以选择两个相邻的元素交换,求把这个序列排成单峰序列的最少交换次数. 方法一:将元素按数值从大到小排序(保存原来的位置),把最大的插在中间,剩下的依次往两边放,依次考虑每个数该放在左边还是右边,只考虑后加入的数对已有的数的贡献.由于前面加入的数的次序对后加入的数无影响,因此贪心地选择贡献小的一边就行了.贡献为重排后下标的逆序数,注意大小相同的要特殊处理一下就行了. #include<bits/stdc++.h> using namespace std; typ…
Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规 则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个不同的编号,每个编号正好有两个 元素.玩家每次可以交换两个相邻的元素.如果在交换之后,两个相邻的元素编号相同,则将他们都从栈中移除, 所有在他们上面的元素都会掉落下来并且可以导致连锁反应.玩家的目标是用最少的步数将方块全部消除. Input 第一行包含一个正整数n(1<=n<=50000).接下…
[BZOJ4240]有趣的家庭菜园 Description 对家庭菜园有兴趣的JOI君每年在自家的田地中种植一种叫做IOI草的植物.JOI君的田地沿东西方向被划分为N个区域,由西到东标号为1~N.IOI草一共有N株,每个区域种植着一株.在第i个区域种植的IOI草,在春天的时候高度会生长至hi,此后便不再生长. 为了观察春天的样子而出行的JOI君注意到了IOI草的配置与预定的不太一样.IOI草是一种非常依靠阳光的植物,如果某个区域的IOI草的东侧和西侧都有比它高的IOI草存在,那么这株IOI草就会…
以为是逆序对数-- 实际上,原数组移动若干次后我们会得到一个新的下标序列,需要的移动次数是这个新下标序列的逆序对数 然后我们要让这个最小,考虑贪心先按h把下标排一遍序,然后每次询问到一种值的时候,对每个下标查询一下逆序对数,然后在满足1条件和满足2条件中取个min,最后这些值相同的下标再一起update #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const i…
有一个小性质:就是一个下标排列的最小移动次数就是逆序对数. 我们发现最终形态一定是一个波峰. 那么我们求的就是形成波峰的下标最少逆序对数. 考虑将元素从小到大依次插入. 那么,对于第 $i$ 个元素,一定是放到左面或右面(就是从 1....left 或 right....n) 中的left和right. 那么,考虑一个元素新放进去会对后面元素产生的逆序对: 放左:后面插入的下标比当前下标小的. 放右:后面插入的下标比当前下标大的. 由于我们在每次插入时已经计算完了插入元素和后面要插入元素的逆序对…
题意:给一个数组,每次查询输出区间内不重复数字的和. 这是3xian教主的题. 用前缀和的思想可以轻易求得区间的和,但是对于重复数字这点很难处理.在线很难下手,考虑离线处理. 将所有查询区间从右端点由小到大排序,遍历数组中的每个数字,每次将该数字上次出现位置的值在树状数组中改为0,再记录当前位置,在树状数组中修改为当前的数值.这样可以保证在接下来的查询中该数字只出现了一次.这是贪心的思想,只保留最可能被以后区间查询的位置.如果当前位置是某个查询区间的右端点,这时候就可以查询了.最后再根据查询区间…
http://codeforces.com/contest/724/problem/D 题目大意:给你一个串,从串中挑选字符,挑选是有条件的,按照这个条件所挑选出来的字符集合sort一定是最后选择当中最小的. 从pos=0开始挑选,每次挑选pos~pos+m-1这些位置中的字符,然后下一次再从之前挑选字符的位置开始的后面的m个中进行挑选. 思路:先贪心,按照字典序,每次找到该范围区间内最小的字符,因为该字符一定是串中的一部分,所以必然会被挑选的,于是我们先把这个pos的字符放入集合,并且对挑选过…
题目描述 Koishi喜欢线段. 她的条线段都能表示成数轴上的某个闭区间.Koishi喜欢在把所有线段都放在数轴上,然后数出某些点被多少线段覆盖了. Flandre看她和线段玩得很起开心,就抛给她一个问题: 数轴上有个点突然兴奋,如果自己被身上覆盖了超过条线段,这个点就会浑身难受然后把Koishi批判一番. Koishi十分善良,为了不让数轴上的点浑身难受,也为了让自己开心,她想在数轴上放入尽量多的线段. 按照套路,Koishi假装自己并不会做这道题,所以她就来求你帮忙.并承诺如果你解决了问题就…
题目链接:http://codeforces.com/contest/597 A. Divisibility time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Find the number of k-divisible numbers on the segment [a, b]. In other words you need…
http://codeforces.com/contest/799/problem/C 题意: 有n做花园,有人有c个硬币,d个钻石 (2 ≤ n ≤ 100 000, 0 ≤ c, d ≤ 100 000) ,每一个花园用三个维度描述(a,b,c),分别是美丽度,所花钱币个数,钱币种类,当然,钱币之间不能兑换,该人必须要建筑两座花园,如果可以,输出两座花园总的美丽度,否则输出0: 思路: 首先想到分三种情况讨论,两个花园都用硬币,两个花园都用钻石,一个用钻石一个用硬币. 大神的代码真的是很厉害…
1757: 火车入站 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 209  Solved: 51[Submit][Status][Web Board] Description 火车站人们总是在站台等待列车进站,一个站台有火车停留的时候就不能有其他火车进入,今天有n辆火车经过,已知它们进站时间Si以及出站时间Ti,进站时间到出站时间之间火车必须有一个站台给它停靠,问让所有火车都能按时停靠,至少要安排多少个站台给这些火车 Input 第一行输入一个正…
最后数列一定是单峰的,问题就是最小化最后的位置序列的逆序对数. 从大到小加数,每次贪心看放左边和右边哪个产生的逆序对数更少,树状数组即可. 由于大数放哪对小数不产生影响,所以正确性显然. 注意相同数之间一定能不构成逆序对,需要特判. #include<cstdio> #include<cstring> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) typedef long l…
题目描述 可怜有一个长度为 n 的正整数序列 A,但是她觉得 A 中的数字太小了,这让她很不开心. 于是她选择了 m 个区间 [li, ri] 和两个正整数 a, k.她打算从这 m 个区间里选出恰好 k 个区间,并对每个区间执行一次区间加 a 的操作.(每个区间最多只能选择一次.) 对区间 [l, r] 进行一次加 a 操作可以定义为对于所有 i ∈ [l, r],将 Ai 变成 Ai + k.现在可怜想要知道怎么选择区间才能让操作后的序列的最小值尽可能的大,即最大化min Ai 输入输出格式…
题目链接: Heap Partition Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge A sequence S = {s1, s2, ..., sn} is called heapable if there exists a binary tree T with n nodes such that every node is labelled with exactly one element from…
题目描述 对家庭菜园有兴趣的JOI君每年在自家的田地中种植一种叫做IOI草的植物.JOI君的田地沿东西方向被划分为N个区域,由西到东标号为1~N.IOI草一共有N株,每个区域种植着一株.在第i个区域种植的IOI草,在春天的时候高度会生长至hi,此后便不再生长. 为了观察春天的样子而出行的JOI君注意到了IOI草的配置与预定的不太一样.IOI草是一种非常依靠阳光的植物,如果某个区域的IOI草的东侧和西侧都有比它高的IOI草存在,那么这株IOI草就会在夏天之前枯萎.换句话说,为了不让任何一株IOI草…
传送门 贪心...蒟蒻证明不会... 每一次找最大的即可,找出一次最大的,数列会分为左右两边,左边用stl优先队列维护,右边用树状数组维护.. (线段树超时了....) 代码 #include <queue> #include <cstdio> #include <iostream> #define N 100001 #define ls now << 1 #define rs now << 1 | 1 #define max(x, y) (p[…
题目描述 nodgd的粉丝太多了,每天都会有很多人排队要签名.  今天有n个人排队,每个人的身高都是一个整数,且互不相同.很不巧,nodgd今天去忙别的事情去了,就只好让这些粉丝们明天再来.同时nodgd提出了一个要求,每个人都要记住自己前面与多少个比自己高的人,以便于明天恢复到今天的顺序.  但是,粉丝们或多或少都是有些失望的,失望使她们晕头转向.神魂颠倒,已经分不清楚哪一边是“前面”了,于是她们可能是记住了前面比自己高的人的个数,也可能是记住了后面比自己高的人的个数,而且他们不知道自己记住的…
题意 给定n个线段,线段可以相交,第\(i\)个线段覆盖的区间为\([l_i,r_i]\),问最少删除多少个线段让覆盖每个点的线段数量小于等于k. 分析 从左往右扫每个点\(x\),若覆盖点\(x\)的线段数cnt大于k,则贪心的删去覆盖点\(x\)的线段中\(r_i\)前\(cnt-k\)大的线段,因为点\(x\)左边的点的被覆盖数一定已经小于等于k了,删去\(r_i\)越大的线段越优.可以用个堆来维护覆盖点\(x\)的线段,用树状数组维护覆盖每个点的线段数量. Code #include<b…
题目描述 小$A$现在有一个长度为$n$的序列$\{x_i\}$,但是小$A$认为这个序列不够优美. 小$A$认为一个序列是优美的,当且仅当存在$k\in [1,n]$,满足:$$x_1\leqslant x_2\leqslant...\leqslant x_k\geqslant x_{k+1}\geqslant...\geqslant x_n$$ 现在小$A$可以进行若干次操作,每次可以交换序列中相邻的两个项,现在他想知道最少操作多少次之后能够使序列变为优美的. 输入格式 第一行一个正整数$n…
A. 梦境 没啥可说的原题.... 贪心题的常见套路我们坐标以左端点为第一关键字,右端点为第二关键字 然后对于每个转折点,我们现在将梦境中左端点比他小的区间放进$multiset$里 然后找最近的右端点, 然后没了...... 思路总结: 1.贪心套路,坐标排序,最优性选择 2.再有原题一定要赶紧打 B. 玩具 大神题,我考场再也不敢肝期望了kukuku 定义三个数组 $dp_{i,j}$表示当前森林中有$i$个点,然后有$j$个点在第一棵子树的概率 $f_{i,j}$表示当前树有$i$个点,深…
题目链接 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4923 problem  description Last night, Kingdom of Light was attacked by Kingdom of Dark! The queen of Kingdom of Light, Queen Ar, was ca…
As most of the ACMers, wy's next target is algorithms, too. wy is clever, so he can learn most of the algorithms quickly. After a short time, he has learned a lot. One day, mostleg asked him that how many he had learned. That was really a hard proble…
题目链接:pid=2688">点击打开链接 题意描写叙述:对一个长度为2<=n<=3000000的数组,求数组中有序对(i<j而且F[i]<F[j])的数量?其中数组元素F[i]范围(0<F[i]<=10000).现有m<10000个操作 操作一:R x y(当中y-x<=1000)将数组x-y之间的元素旋转 操作二:Q查询当前数组中含有的有序对的数量 解题思路: 1.先求的原始数组中有序对的总数量(假设直接求,则时间复杂度为O(n*1000…
公共子序列 题目链接: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…
题目 链接 $Reki$ 在课余会接受一些民间的鹰眼类委托,即远距离的狙击监视防卫..$Reki$ 一共接收到$m$份委托,这些委托与 $n$ 个直线排布的监视点相关.第 $i$ 份委托的内容为:对于区间 $[r_i, \ j_i]$ 中的监视点,至少要防卫其中的 $k_i$ 个点.$Reki$ 必须完成全部委托,并希望选取尽量少的监视点来防卫.($n \leq 500000, \ m \leq 1000000$). 分析 一眼看,发现是道差分约束的裸题.设点i的值为sum[i],如果l-r中至…
正题 题目链接:https://www.luogu.com.cn/problem/P7408 题目大意 一个有\(n+1\)层的地牢,从\(i\)到\(i+1\)层要\(A_i\)点能量,第\(i\)层可以花费\(B_i\)获得\(1\)点能量. \(m\)次询问从\(S_i\)层出发到第\(T_i\)层在能量上限为\(U_i\)的情况下至少需要花费多少. \(1\leq n,m\leq 2\times 10^5\) 解题思路 模型可以转换成坐标轴上有\(n\)个点,第\(i\)个在\(A_i\…
2017国家集训队作业[agc006e]Rotate 3x3 题意: ​ 给你一个\(3*N\)的网格,每次操作选择一个\(3*3\)的网格,旋转\(180^\circ\).问可不可以使每个位置\((i,j)\)的数为\(i+3*(j-1)\).(\(n\leq10^5\)) 题解: ​ 因为在操作中,一列的\(3\)个数不可能被打乱,可以预处理判断.我们思考旋转一次造成的影响有什么?记\(f(0/1).g(0/1)\)分别是一开始奇数位\(/\)偶数位的反列和恢复到原始状态的步数模\(2\)的…