BZOJ4007 [JLOI2015]战争调度】的更多相关文章

第一眼DP,发现不可做,第二眼就只能$O(2^{1024})$暴搜了. 重新审视一下这个DP,f[x][i]表示在x的祖先已经全部染色之后,x的子树中共有i个参战平民的最大贡献. 设k为总结点数,对于DFS,我们有$T(1)=O(\log k)$,$T(k)=4T(\frac{k}{2})+O(k^2)$. 根据主定理,$O(n^{\log_ba})=O(n^2)$.故时间复杂度为$O(k^2\log k)$,即$O(2^{2n}n)$. #include<cstdio> #include&l…
根本想不出来... 原来还是暴力出奇迹啊QAQ 无限ymymym中 /************************************************************** Problem: 4007 User: rausen Language: C++ Result: Accepted Time:240 ms Memory:13216 kb ****************************************************************/…
[BZOJ4007][JLOI2015]战争调度(动态规划) 题面 BZOJ 洛谷 题解 神仙题,我是做不来. 一个想法是设\(f[i][j]\)表示当前考虑到\(i\)节点,其子树内有\(j\)个人选择了打仗的最大贡献. 但是我们发现直接做我们并不会转移,因为我们不知道每个儿子的选择情况. 那么我们直接爆搜这条链上的每个点的情况,这样子到了叶子节点就可以直接转移上去. 而这样子爆搜的条件下,显然一个点的左右两个儿子是独立的,即转移是互不影响的,所以这样子并没有问题. 那么复杂度是什么呢? 我们…
[JLOI2015]战争调度 题目 解题报告 考试打了个枚举的暴力,骗了20= = $qsy$大佬的$DP$: 其实就是枚举= =,只不过枚举的比较强= = #include<iostream> #include<cstring> #include<cstdio> using namespace std; inline int read(){ ); char ch(getchar()); ';ch=getchar()); +(ch^),ch=getchar()); re…
题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $m$ ,求最大总贡献值. $n\le 10$ 输入 第一行两个数 n;m.接下来 2^(n-1) 行,每行n-1 个数,第 i 行表示编号为 2^(n-1)-1+ i 的平民对其n-1直系上司的作战贡献度,其中第一个数表示对第一级直系上司,即编号为 (2^(n-1)-1+ i)/2 的贵族的作战贡献…
Description 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有下属,这种 关系刚好组成一个 n 层的完全二叉树.公民 i 的下属是 2 * i 和 2 * i +1.最下层的公民即叶子 节点的公民是平民,平民没有下属,最上层的是国王,中间是各级贵族.现在这个王国爆发了 战争,国王需要决定每一个平民是去种地以供应粮食还是参加战争,每一个贵族(包括国王自 己)是去管理后勤还是领兵打仗.一个平民会对他的所有直系上司有贡献度,若一个平民 i 参 加战争,他的某个直系上司 j…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4007 https://loj.ac/problem/2111 题解 同 [NOI2006]网络收费,背包很显然,然后因为祖先的状态不确定对之的影响,直接枚举就可以了. 具体见 https://www.cnblogs.com/hankeke/p/bzoj1495.html. #include<bits/stdc++.h> #define fec(i, x, y) (int i = head[…
Online Judge:Bzoj4007,Luogu P3262 Label:暴力,树形Dp 题解 参考了这篇blog https://www.cnblogs.com/GXZlegend/p/8300883.html. 定义状态\(dp[i][j]\),表示以i为根的子树中有j个叶子节点打战的收益. 由于是一棵标准的完全二叉树,所以转移时用类似背包的方式合并两棵子树的贡献. 能产生贡献的只有平民(叶子节点),所以递归到叶子时才能计算贡献,而这个贡献值还与祖先的选择有关,所以必须在之前递归的时候…
搜索+状压+DP. 注意到一个性质:考虑一棵以x为根的子树,在x到原树的根的路径上的点如果都已经确定了方案,那么x的左右儿子的决策就彼此独立,互不影响了.所以我们考虑状压一条路径上每一层节点的状态,求出dp[u][x] : 以u为根的子树中分配x个作战平民的最大收益是多少(注意因为是在dfs当中,所以dp数组存的是在当前状况下的最优解). 代码挺短的,可食用~ #include <bits/stdc++.h> using namespace std; #define maxn 1025 int…
又是一道思路清新的小清晰. 观察题目,如果我们确定了平民或者贵族的任意一方,我们便可以贪心的求出另一方,至此20分:我们发现层数十分小,那么我们就也是状压层数,用lca转移,线性dp,至此50分(好像数据很水这么打能A):至今我们没有用到他是一棵完全二叉树,那么我们发现如果进行树dp,也就是说从子节点转移到父节点,f[i][j],以i为根的子树里的平民有j个参战贡献最大值,我们需要确定平民的请况而且有不能状压,但是结合我们上次得出的结论,我们发现如果我们dp状态的意义为,在确定由此节点到root…
题意 给定一棵高度为 \(n\) 的完全二叉树,可以将节点设置成两种状态.如果某个叶子 \(x\) 的状态为 \(i\) 同时他的某个祖先也为 \(i\),那么这个叶子就会对祖先产生 \(f_{x,i}\) 的贡献.求叶子状态为 \(0\) 的数量小于等于 \(m\) 的最大贡献. \(\texttt{Data Range:}1\leq n\leq 10,m\leq 2^{n-1}\) 题解 考虑先设一个 \(f_{i,j}\) 表示到了 \(i\) 点,叶子选了 \(j\) 个 \(0\) 的…
「JLOI2015」战争调度 感觉一到晚上大脑就宕机了... 题目本身不难,就算没接触过想想也是可以想到的 这个满二叉树的深度很浅啊,每个点只会和它的\(n-1\)个祖先匹配啊 于是可以暴力枚举祖先链的选择 然后处理某个点\(i\)时,已经枚举了\(i\)到根的祖先的选择 这时候我们发现枚举\(i\)后,左右儿子的贡献的独立的,然后左右儿子的选择对上面是没有影响的 可以直接设\(dp_{i,j}\)表示\(i\)子树\(j\)黑点的最大值 然后直接子树合并两个儿子就可以了 复杂度? \(T(n)…
题目 [内存限制:256 MiB][时间限制:1000 ms] [标准输入输出][题目类型:传统][评测方式:文本比较] 题目描述 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有下属,这种关系刚好组成一个 $n$ 层的完全二叉树.公民 $i$ 的下属是 $2i$ 和 $2i +1$.最下层的公民即叶子节点的公民是平民,平民没有下属,最上层的是国王,中间是各级贵族. 现在这个王国爆发了战争,国王需要决定每一个平民是去种地以供应粮食还是参加战争,每一个贵族(包括国王自己)是去管…
题解 记录一个数组dp[i][S][k]表示第i个点,它上面所有的点的状态(参军或者后勤)可以用状态S来表示,一共有k个平民参军的最大收益,当然数组开不下,可以用vector动态开 我们对于每个平民枚举它上面所有贵族的状态来计算如果对于这个平民,上面所有贵族状态为S的时候,收益是多少 然后对于每个贵族只要枚举它上面的二进制状态S,左子树参军人数a,右子树参军状态b,在左右儿子分别取较大的状态来转移即可 代码 #include <bits/stdc++.h> #define fi first #…
\(\mathcal{Description}\)   Link.   给定一棵 \(n\) 层的完全二叉树,你把每个结点染成黑色或白色,满足黑色叶子个数不超过 \(m\).对于一个叶子 \(u\),若其 \(k\) 级父亲与其同为黑色,则对答案贡献 \(a_{uk}\):若同为白色,则对答案贡献 \(b_{uk}\).求最大贡献和.   \(n\le10\). \(\mathcal{Solution}\)   想要 DP,比如令 \(f(u,i)\) 表示 \(u\) 子树内有 \(i\) 个…
树形dp专题总结 大力dp的练习与晋升 原题均可以在网址上找到 技巧总结 1.换根大法 2.状态定义应只考虑考虑影响的关系 3.数据结构与dp的合理结合(T11) 4.抽直径解决求最长链的许多类问题(T12) 5.dp题最基本的考察是对题意模型的转化,以应用在各个方面 6.前缀和等技巧优化dp 7.树形背包是n*n的! T1 BZOJ1304 [CQOI2009]叶子的染色 首先是对于固定根节点的\(dp\) \(dp\)状态\(dp[3]\)为子树还需要颜色\(1,2\),或不需要 转移比较简…
JLOI2015 真的不愧是NOI出题组出的,题目难度够吊.不过每一道都是结论题和乱搞题真的很不好玩... T1:[JLOI2015]有意义的字符串 首先贴下popoqqq的blog吧 感性的认识就是感觉到部分分是个斐波那契数列的通项公式然后考虑是否能把该式子化成递推式然后矩阵乘法算了..感觉是超级恶心的一道题了,还得用快速乘法... T2:[JLOI2015]城池攻占 首先这道题我们先考虑暴力,也就是每个点向父亲跑,我们考虑能否一起做,可以发现在同一个点的骑士可以用一个堆维护一起跳(因为没有改…
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27update : 开学了终于搞到了550  可还行 *数据结构 *可持久化线段树/主席树 *bzoj3932 [CQOI2015] 任务查询系统 : 比较裸的主席树,任务查分一下就好了  cqoi真良心 *bzoj4026 dC Loves Number Theory :  数论个头啊,对每个数分解质因数…
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…
「JLOI2015」骗我呢 题意 问有多少个 \(n \times m\) 的矩阵 \(\{x_{i, j}\}\) 满足 对于 \(\forall i \in [1, n], j \in [1, m]\) 有 \(x_{i, j} \in[0, m]\) : 对于 \(\forall i \in [1, n], j \in [1, m)\) 有 \(x_{i, j} < x_{i, j + 1}\) : 对于 \(\forall i \in (1, n], j \in [1, m)\) 有 \…
#include <iostream> #include <cstring> #include <cstdio> using namespace std; namespace Dp{//状态转移 void shudp()/*"树Dp"*/{ cout<<"树Dp"<<endl;{ cout<<"hzoj:800 1040"<<' '<<"熟练…
日期: 八月第一天  总分: 300分  难度: 提高 ~ 省选    得分: 100分(不应该啊!) 题目目录: T1:战争调度 T2:选数 T3:由乃的OJ 赛后心得: MMP,首先第一题花了大概一半的时间,碰巧想到了正解. 好吧,作为数学渣的我看到T2肯定是懵的啦!T3又那么难,导致我后半场比赛都在发呆…… 看来我要恶补数学了!!…… 题解: T1:战争调度 树形dp,暴力枚举每个点的染色情况,发$f[i][j]$表示$i$的子树中,有$j$个黑点,所产生的最大贡献. 时间复杂度 $O(2…
这类题目是真的很头疼....其实这类题目的特征也很明显,叶子结点贡献答案时和其所在链的祖宗有关,也就是说要想得知其贡献必须知道他的所有祖宗的贡献,其实处理方法也不是太难,就是在dfs枚举时顺便把祖宗的状态状压一下. 到叶子结点时统计答案,最后将答案上传就行了. 战争调度 这个算是这类题目最好的例题了.很显然,一个平民的贡献只和他的直系上属有关转化为图论的语言就是和他的所有祖宗有关.而非叶结点又不会贡献答案. 我们直接给每个非叶结点一个状态0/1表示其参与战争还是后勤,我们在dfs传参数时直接记录…
试想一下,你现在所在的公司有一个hadoop的集群.但是A项目组经常做一些定时的BI报表,B项目组则经常使用一些软件做一些临时需求.那么他们肯定会遇到同时提交任务的场景,这个时候到底如何分配资源满足这两个任务呢?是先执行A的任务,再执行B的任务,还是同时跑两个? 如果你存在上述的困惑,可以多了解一些yarn的资源调度器. 在Yarn框架中,调度器是一块很重要的内容.有了合适的调度规则,就可以保证多个应用可以在同一时间有条不紊的工作.最原始的调度规则就是FIFO,即按照用户提交任务的时间来决定哪个…
简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告警 场景2:监听事务 场景3:定时作业 Quartz的安装 安装 1.可以直接在官网:http://www.quartz-scheduler.org/ 下载jar包. 2.如果使用maven,可以在pom.xml中添加以下依赖jar包: <dependency> <groupId>or…
概述 如果想在Spring中使用任务调度功能,除了集成调度框架Quartz这种方式,也可以使用Spring自己的调度任务框架. 使用Spring的调度框架,优点是:支持注解(@Scheduler),可以省去大量的配置. 实时触发调度任务 TaskScheduler接口 Spring3引入了TaskScheduler接口,这个接口定义了调度任务的抽象方法. TaskScheduler接口的声明: public interface TaskScheduler { ScheduledFuture<?>…
在上一篇  Quartz.net 开源job调度框架(一) 中讲到了基本的使用以及配置job轮训数据执行 这种做法适用于对数据操作实时性要求不高的场景,在实际场景中还有一种比较常用的场景就是我们需要在某一个时间点立即执行某个操作,比如商城做抢购活动,同时开启多个活动在不同的时间点开始促销.如果我们采用轮训数据库的方式来实现的话会出现处理数据不及时的情况,因为每次都需要从数据库捞取一批次的数据,根据状态或者设定的活动开启时间循环比对,如果达到时间点就更新数据状态,开启活动,每一批次处理的数据都需要…
前面篇已经介绍了Quartz.NET的配置,使用和Cron表达式表达式的写法.基本上后台的定时任务的定时执行已经完成,并能正确的按照执行计划,执行相关的job . 然后,如果任务需要更新,停止某个任务呢 ? 总不能上服务器去改相关job 的配置吧. 所以,Quartz.NET 也给我们提供了远程调度的方法.这次就简单介绍下Quartz.NET 远程调度的配置和方法. 1. 配置Quartz.NET 远程方式执行 计划任务的服务器上配置远程调用Quartz的出口, quartz.config 增加…
一.需求分析 日志数据在很多行业中都是非常敏感的数据,它们不能删除只能保存和查看,这样日志表就会越来越大,我们不可能永远让它无限制的增长下去,必须采取一种手段将数据分散开来.假设现在整个数据库需要保存的数据量比较少,但是只有日志表的数据量会很大,在这种情况下我们可以考虑使用分表策略分散保存日志数据. 针对当前系统来讲,可以这么做:每个月创建一张新表用于保存当月的日志数据.当然这只是初期的保存日志的思路. 1.解决问题的方法就是分表,那么什么时候创建新表呢? (1).如果服务器不关闭,假设一直处于…
Quartz定时调度框架CronTrigger时间配置格式说明 CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59, - * / 2 分 是 0-59, - * / 3 小时 是 0-23, - * / 4 日 是 1-31, - * ? / L W 5 月 是 1-12(JAN-DEC), - * / 6 周 是 1-7(SUN-SAT…