[ZJOI 2006]书架】的更多相关文章

Description 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些书太有吸引力了,所以她看完后常常会忘记原来是放在书柜的什么位置.不 过小T的记忆力是非常好的,所以每次放书的时候至少能够将那本书放在拿出来时的位置附近,比如说她拿的时候这本书上面有X本书,那么放回去时这本书上面就 只可能有X-1.X或X+1本书. 当然也有特殊情况,比如在看书的时候突然…
题面 学习了如何在维护序列的平衡树上查找某个数:按初始的顺序定个权值,然后每次找那个权值的DFS序即可.具体实现就是不停往上跳,然后是父亲的右儿子就加上父亲的左儿子,剩下的就是继续熟悉无旋树堆 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ],rnk[N]; ]; void Pushup(int nde) { siz[nde]=siz[son[nde][]]+s…
Description Input 第一行一个整数N(N<=100),表示玩了N次超级麻将. 接下来N行,每行100个数a1..a100,描述每次玩牌手中各种牌的数量.ai表示数字为i的牌有ai张.(0<=ai<=100) Output 输出N行,若胡了则输出Yes,否则输出No,注意区分Yes,No的大小写! Sample Input 3 2 4 0 0 0 0 0 …… 0(一共98个0) 2 4 2 0 0 0 0 …… 0(一共97个0) 2 3 2 0 0 0 0 …… 0(一…
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪.由于各种因素的存在,有的时候某个码头会无法装卸货物.这时候就必须修改运输路线,让货物能够按时到达目的地.但是修改路线是一件十分麻烦的事情,会带来额外的成本.因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小. Input 第一行是四个整数n(1<=n<=100).m(1&…
禁止DP,贪心真香 有一个比较明显的贪心思路是让每个人和距离为$2$(隔着一个人)的人尽量用一样的,这样只需要扫一遍然后对每对相邻的人之和取最大值即可.但是当人数为奇数时这样就会出锅,因为最后一个人和第一个人是“一套”的勋章(意会一下),解决方法是将答案再对这样的一个东西取$max$ $\left \lceil \frac{\sum\limits_{i=1}^n a_i}{\left \lfloor \frac{n}{2} \right \rfloor} \right \rceil$ 感性分析一…
题面 跟i207M学了学重载运算符后找前驱后继,然后就是练练无旋树堆 #include<map> #include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ; struct a { int id; long long sc; string username; }dat[N…
[题目描述] 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪.由于各种因素的存在,有的时候某个码头会无法装卸货物.这时候就必须修改运输路线,让货物能够按时到达目的地.但是修改路线是一件十分麻烦的事情,会带来额外的成本.因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小. [输入格式] 第一行是四个整数n(1<=n<=100).m(1<=…
[题目链接] 点击打开链接 [算法] 令cost(i,j) = 第i天到第j天走相同的路线,路线长度的最小值 那么,只需筛选出第i天到第j天可以装卸货物的码头,然后将这些码头之间连边,跑弗洛伊德(或其它最短路算法),即可 然后,我们用f[i]表示前i天,总成本最小是多少,显然有 : f[i] = max{f[j-1] + cost(j,i) * (i - j + 1) + k} 特别地,f[0] = -k 那么,最后的答案就是f[n] [代码] #include<bits/stdc++.h>…
题目:https://www.luogu.org/problemnew/show/P2585 首先,三色其实记录两种状态:是绿色,不是绿色 即可,因为红蓝可以随意取反: 一开始因为懒得还原出树,所以写了个错误贪心-_- #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int k,mx,mn,siz[maxn]; c…
\(\\\) \(Description\) 有\(N\)个人的环,每个人需要至少\(x_i\)种不同的物品,并且要求任意相邻的两人都没有相同的物品,求最少需要多少种物品. \(N\in [0,2\times 10^4]\),\(x_i\in [0,10^5]\) \(\\\) \(Solution\ \text O(NlogN)\) 考虑二分答案,首先注意到相邻两人所有物品种类一定不同,所以下界是相邻两人限制之和取\(max\). 注意到限制只是两两之间的,如果是奇环的话只有头尾会出问题,所以…