解题:ZJOI 2006 皇帝的烦恼】的更多相关文章

禁止DP,贪心真香 有一个比较明显的贪心思路是让每个人和距离为$2$(隔着一个人)的人尽量用一样的,这样只需要扫一遍然后对每对相邻的人之和取最大值即可.但是当人数为奇数时这样就会出锅,因为最后一个人和第一个人是“一套”的勋章(意会一下),解决方法是将答案再对这样的一个东西取$max$ $\left \lceil \frac{\sum\limits_{i=1}^n a_i}{\left \lfloor \frac{n}{2} \right \rfloor} \right \rceil$ 感性分析一…
1863: [Zjoi2006]trouble 皇帝的烦恼 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 559  Solved: 295[Submit][Status][Discuss] Description 经过多年的杀戮,秦皇终于统一了中国.为了抵御外来的侵略,他准备在国土边境安置n名将军.不幸的是这n名将军羽翼渐丰,开始展露他们的狼子野心了.他们拒绝述职.拒绝接受皇帝的圣旨.秦皇已经准备好了秘密处决这些无礼的边防大将.不过为防兵变,他决定先…
二分+DP Orz KuribohG 神题啊= = 满足单调性是比较显然的…… 然而蒟蒻并不会判断能否满足……QwQ 神一样的DP姿势:f[i]表示第 i 个与第1个最多有多少个相同,g[i]表示最少.那么如果g[n]==0就表示满足 /************************************************************** Problem: 1863 User: Tunix Language: C++ Result: Accepted Time:116 ms…
863: [Zjoi2006]trouble 皇帝的烦恼 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 465  Solved: 240[Submit][Status][Discuss] Description 经过多年的杀戮,秦皇终于统一了中国.为了抵御外来的侵略,他准备在国土边境安置n名将军.不幸的是这n名将军羽翼渐丰,开始展露他们的狼子野心了.他们拒绝述职.拒绝接受皇帝的圣旨.秦皇已经准备好了秘密处决这些无礼的边防大将.不过为防兵变,他决定先授…
白书原题.l边界又设错啦.一般都是错这里吧.注意为什么这里不能是l=0.(只是为了判断第一个和最后一个 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define rep(i,n) for(int i=1;i<=n;i++) #define clr(x,c) memset(x,c,sizeof(x)) #de…
二分答案..然后从头到尾推一下, 看最后一个能不能取0个和第一个人相同的勋章 ----------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm>   using namespace std;   const int maxn = 20009;   int w[maxn], Min[max…
[BZOJ1863][Zjoi2006]trouble 皇帝的烦恼 Description 经过多年的杀戮,秦皇终于统一了中国.为了抵御外来的侵略,他准备在国土边境安置n名将军.不幸的是这n名将军羽翼渐丰,开始展露他们的狼子野心了.他们拒绝述职.拒绝接受皇帝的圣旨.秦皇已经准备好了秘密处决这些无礼的边防大将.不过为防兵变,他决定先授予这些将军一些勋章,为自己赢得战略时间.将军们听说他们即将被授予勋章都很开心,他们纷纷上书表示感谢.第i个将军要求得到ai枚不同颜色的勋章.但是这些将军都很傲气,如果…
题面 学习了如何在维护序列的平衡树上查找某个数:按初始的顺序定个权值,然后每次找那个权值的DFS序即可.具体实现就是不停往上跳,然后是父亲的右儿子就加上父亲的左儿子,剩下的就是继续熟悉无旋树堆 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ],rnk[N]; ]; void Pushup(int nde) { siz[nde]=siz[son[nde][]]+s…
题面 跟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…
题目描述 经过多年的杀戮,秦皇终于统一了中国.为了抵御外来的侵略,他准备在国土边境安置n名将军.不幸的是这n名将军羽翼渐丰,开始展露他们的狼子野心了.他们拒绝述职.拒绝接受皇帝的圣旨. 秦皇已经准备好了秘密处决这些无礼的边防大将. 不过为防兵变,他决定先授予这些将军一些勋章,为自己赢得战略时间.将军们听说他们即将被授予勋章都很开心,他们纷纷上书表示感谢.第i个将军要求得到ai枚不同颜色的勋章.但是这些将军都很傲气,如果两个相邻的将军拥有颜色相同的勋章他们就会认为皇帝不尊重他们,会立即造反(编号为…
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 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些书太有吸引力了,所以她看完后常常会忘记原来是放在书柜的什么位置.不 过小T的记忆力是非常好的,所以每次放书的时候至少能够将那本书放在拿出来时的位置附近,比如说她拿的时候这本书上面有X本书,那么放回去时这本书上面就 只可能有X-1.X或X+1本书. 当然也有特殊情况,比如在看书的时候突然…
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪.由于各种因素的存在,有的时候某个码头会无法装卸货物.这时候就必须修改运输路线,让货物能够按时到达目的地.但是修改路线是一件十分麻烦的事情,会带来额外的成本.因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小. Input 第一行是四个整数n(1<=n<=100).m(1&…
题解: 具有单调性的题目还是要多想想二分答案 不二分答案暴力dp是n^3的 非常不优秀 二分答案之后就比较好做 mx[i],nx[i]表示最多/最少几个与a[1]相同 代码: #include <bits/stdc++.h> using namespace std; #define rint register int #define IL inline #define rep(i,h,t) for (rint i=h;i<=t;i++) #define dep(i,t,h) for (r…
题目链接-> OVO 题解: 很久没有写博客了,可能是因为最近太颓废了吧. 刚刚考完期末考试,无比期盼早点外出学习,不要面对成绩,害怕. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 20007 using namespace std; int n, a[N], maxn[N], minn[N], l, r, ans; bo…
[题目描述] 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪.由于各种因素的存在,有的时候某个码头会无法装卸货物.这时候就必须修改运输路线,让货物能够按时到达目的地.但是修改路线是一件十分麻烦的事情,会带来额外的成本.因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小. [输入格式] 第一行是四个整数n(1<=n<=100).m(1<=…
BZOJ 1863 lyd口中的夹B递推. 挺妙的解法. 第一个感觉是找到一个最大的相邻的$a_i + a_{i - 1}$就可以了,但是这个想法大概只对了一半,一半的意思是说只有在$n$为偶数的时候才适用,因为只有在偶数的时候,所有数能恰好地被分成两组,两组互不干扰. 奇数的时候就相当于多出了一个$1$,怎么办呢? 显然可以二分答案吧,设$mid$表示当前二分到的颜色的数量. 设$f_i$表示在满足$i - 1$和$i$的限制的条件下,$i$和$1$的颜色冲突的最大个数,再设$g_i$表示这个…
[题目链接] 点击打开链接 [算法] 令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>…
二分答案,注意l是max(a[i]+a[i+1]),r是sum_a 判断的时候用dp,设f[i]为i与1最少的相同颜色数,g[i]为i与1最多的相同颜色数,转移是f[i]=max(a[i]-(w-a[i-1]-(a[1]-g[i-1])),0),g[i]=min(a[1]-f[i-1],a[i]); #include<iostream> #include<cstdio> using namespace std; const int N=20005; int n,a[N],f[N],…
题目: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\) 种货物和 \(n\) 个仓库,开始第 \(i\) 个仓库里有 \(a_{ij}\) 个第 \(j\) 种货物. 现在要让每种货物都只放到一个仓库里,且一个仓库只放一种货物. 货物将在仓库之间移动,总代价就是移动的所有货物的总重. 现不指定哪种货物放到哪个仓库里,求最小总代价. \(n\le 150,a_{ij}\le 100\) \(\\\) Solution 一开始的想法是把限制加到流量上,后来发现不行. 为什么呢?首先这题的建图肯定是一侧…
\(\\\) \(Description\) 有\(N\)个人的环,每个人需要至少\(x_i\)种不同的物品,并且要求任意相邻的两人都没有相同的物品,求最少需要多少种物品. \(N\in [0,2\times 10^4]\),\(x_i\in [0,10^5]\) \(\\\) \(Solution\ \text O(NlogN)\) 考虑二分答案,首先注意到相邻两人所有物品种类一定不同,所以下界是相邻两人限制之和取\(max\). 注意到限制只是两两之间的,如果是奇环的话只有头尾会出问题,所以…
\(\\\) \(Description\) 现有权值分别为\(1\text~100\)的\(100\)种牌,分别给出每种排的张数\(A_i\),试判断能否胡牌,胡牌需要将所有牌不重不漏地分成以下几类: 三张或四张相同的牌 权值连续的三张牌 两张相同的牌,这一类必须要有,而且只能有一个 一组数据共需要\(N\)次判断,胡了输出"\(Yes\)",否则输出"\(No\)". \(N\in [1,100]\),\(A_i\in [0,100]\) \(\\\) \(So…
题目:https://www.luogu.org/problemnew/show/P2593 DP的话,考虑到当前这一位只跟前两位有关,所以记录一下这3位的状态就行: 于是一开始记录的第 i 位,i-1 位的数量,i-2 位的数量,是否有过对子,然后可行性DP: 但是写得太丑,又WA又T... #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using nam…
考场历程十分艰辛啊... 第一题没切掉,还浪费了很长时间,就是一个裸的最小生成树,但是因为可恶的distance为关键字莫名其妙查错了10min.... 本题先乱搞了一下,过了样例 然后看第三题,可写性极差 回头写此题,写了一个自己看起来是正解的二分(正解就是二分) 然后干了两小时第三题 第三题毛线分都没有(据说是线段树合并) 旁边的dalao没有干第三题,人家写了俩小时正解... 以后我要是再干那种题我就把bk201头拧掉掉.... (以上为闲扯) ~~~~~~~~~~~~我是分割线~~~~~…
题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪.由于各种因素的存在,有的时候某个码头会无法装卸货物.这时候就必须修改运输路线,让货物能够按时到达目的地.但是修改路线是-件十分麻烦的事情,会带来额外的成本.因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小. 输入输出格式 输入格式: 第一行是四个整数n(l≤n≤100).m(l≤m≤2…
二分枚举答案,假设是ans,考虑判定答案从前往后计算,算出每一个将军与第一个将军最少和最多有多少个相同的奖牌,贪心转移即可 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,a[20005]; 4 bool pd(int k){ 5 int mi=a[1],ma=a[1]; 6 if (k<a[n]+a[1])return 0; 7 for(int i=2;i<=n;i++){ 8 if (k<a[i]+a[i-…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
小K的农场 难度级别:C: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的作物,农场a比农场b至多多种植了c个单位的作物,农场a与农场b种植的作物数一样多.但是,由于小K的记忆有些偏差,所以他想要知道存不存在一种情况,使得农场的种植作物数量与他记忆中的所有…
皇帝的烦恼(二分答案) Description 经过多年的杀戮,秦皇终于统一了中国.为了抵御外来的侵略,他准备在国土边境安置n名将军.不幸的是这n名将军羽翼渐丰,开始展露他们的狼子野心了.他们拒绝述职.拒绝接受皇帝的圣旨.秦皇已经准备好了秘密处决这些无礼的边防大将.不过为防兵变,他决定先授予这些将军一些勋章,为自己赢得战略时间.将军们听说他们即将被授予勋章都很开心,他们纷纷上书表示感谢.第i个将军要求得到ai枚不同颜色的勋章.但是这些将军都很傲气,如果两个相邻的将军拥有颜色相同的勋章他们就会认为…