@bzoj - 3711@ [PA2014]Druzyny】的更多相关文章

目录 @description@ @solution@ @accepted code@ @details@ @description@ 体育课上,n个小朋友排成一行(从1到n编号),老师想把他们分成若干组,每一组都包含编号连续的一段小朋友,每个小朋友属于且仅属于一个组. 第i个小朋友希望它所在的组的人数不多于d[i],不少于c[i],否则他就会不满意. 在所有小朋友都满意的前提下,求可以分成的组的数目的最大值,以及有多少种分组方案能达到最大值. 原题传送门. @solution@ 记 \(dp_…
3721: PA2014 Final Bazarek Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 645  Solved: 261[Submit][Status][Discuss] Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n<=1000000),表示商品数量.接下来一行有n个整数,表示每件商品的价格,范围在[1,10^9].接下来一行有一个整数m(1&l…
3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1050  Solved: 352[Submit][Status][Discuss] Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降到0(或0以下).请问是否存在一种打怪顺…
3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 653  Solved: 220[Submit][Status][Discuss] Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降到0(或0以下).请问是否存在一种打怪顺序…
斐波那契数列<10^9的数很少很少...所以直接暴力枚举就行了... ------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream>   #define rep( i , n ) for( int i = 0 ; i < n ; ++i )…
[PA2014]Kuglarz Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1335  Solved: 672[Submit][Status][Discuss] Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,…,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子i,i+1,…,j底下藏有球的总数的奇偶性.采取最优的询问策略,你至少需要花费多少元,才能保证…
3722: PA2014 Final Budowa Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 303  Solved: 108[Submit][Status][Discuss] Description Fancy爷宣布XJOI群将要选举下一任群主.候选人有两名,分别是XYW和吉丽.共有n个人(从1~n编号)参加这次投票.他们之间形成了一个树结构,根结点(1号结点)为Fancy.树上的结点有两种身份:专家(叶子结点)或领导(非叶子结点).每位专家…
3712: [PA2014]Fiolki Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 437  Solved: 115[Submit][Status][Discuss] Description 化学家吉丽想要配置一种神奇的药水来拯救世界. 吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号).初始时,第i个瓶内装着g[i]克的第i种物质.吉丽需要执行一定的步骤来配置药水,第i个步骤是将第a[i]个瓶子内的所有液体倒入第b[i]个瓶子,此后第a…
LINK:Druzyny 这题研究了一下午 终于搞懂了. \(n^2\)的dp很容易得到. 考虑优化.又有大于的限制又有小于的限制这个非常难处理. 不过可以得到在限制人数上界的情况下能转移到的最远端点 且这个数组是单调的. 而下界是随意的. 这个可以利用单调队列做 也可以暴力线段树. 然后考虑怎么优化 考虑CDQ分治 不过这里算是基于时间的分治吧. 大体上就是求出来左边让左边对右边进行贡献. 考虑这部分怎么做 左边为 \([l,mid]\)右边为\(mid+1,r\) 分别设两个决策\(j,i\…
设f[i]为[1,i]分组的最优解,则 f[i]=max(f[j]+1),max(c[j+1],c[j+2],...,c[i-1],c[i])<=i-j<=min(d[j+1],d[j+2],...,d[i-1],d[i]) 设g[i]=min(j),i-j<=min(d[j+1],d[j+2],...,d[i-1],d[i]) 容易发现g[i]单调不下降,可以通过线段树$O(n\log n)$预处理 考虑通过分治优化DP 在solve(l,r)时,求出[l+1,r]中c[]最大的位置,…
Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,-,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子i,i+1,-,j底下藏有球的总数的奇偶性.采取最优的询问策略,你至少需要花费多少元,才能保证猜出哪些杯子底下藏着球? Input 第一行一个整数n(1<=n<=2000).第i+1行(1<=i<=n)有n+1-i个整数,表示每一种询问所需的花费.其中c_ij(对区间[i,j]进行询问的费用,…
Description Byteasar公司专门外包生产带有镜子的衣柜.刚刚举行的招标会上,有n个工厂参加竞标.所有镜子都是长方形的,每个工厂能够制造的镜子都有其各自的最大.最小宽度和最大.最小高度.镜子不可以旋转.如果存在某家工厂满足这样的条件:其他所有工厂能够制造的镜子,它都能够制造.那么这家工厂显然会胜出.若不存在,评判工作将会遇到麻烦.Byteasar想知道,是否存在某家工厂符合上述条件. Input 第一行有一个整数t(1<=t<=10),表示测试数据数量.对于每一组测试数据,第一行…
Description 斐波那契数列的定义为:k=0或1时,F[k]=k:k>1时,F[k]=F[k-1]+F[k-2].数列的开头几项为0,1,1,2,3,5,8,13,21,34,55,-你的任务是判断给定的数字能否被表示成两个斐波那契数的乘积. Input 第一行包含一个整数t(1<=t<=10),表示询问数量.接下来t行,每行一个整数n_i(0<=n_i<=10^9). Output 输出共t行,第i行为TAK(是)或NIE(否),表示n_i能否被表示成两个斐波那契数…
Description 你的老板命令你将停车场里的车移动成他想要的样子. 停车场是一个长条矩形,宽度为w.我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系.停车场很长,我们可以认为它一直向右边伸展到无穷远处. 车都是边平行于坐标轴的矩形,大小可能不同.你可以将车任意地平移(但不能旋转),只要他们不超出停车场的边界,且不能互相碰撞,但紧挨着是允许的(即任意时刻任两辆车的重叠面积为0). 你知道目前各辆车的摆放位置,以及老板心中所想的位置.你需要判断是否可以办到老板的任务. Input…
Description 你有n个物品和m个包.物品有重量,且不可被分割:包也有各自的容量.要把所有物品装入包中,至少需要几个包? Input 第一行两个整数n,m(1<=n<=24,1<=m<=100),表示物品和包的数量. 第二行有n个整数a[1],a[2],-,a[n](1<=a[i]<=10^8),分别表示物品的重量. 第三行有m个整数c[1],c[2],-,c[m](1<=c[i]<=10^8),分别表示包的容量. Output 如果能够装下,输出一…
Description 化学家吉丽想要配置一种神奇的药水来拯救世界.吉丽有n种不同的液体物质,和n个药瓶(均从1到n编号).初始时,第i个瓶内装着g[i]克的第i种物质.吉丽需要执行一定的步骤来配置药水,第i个步骤是将第a[i]个瓶子内的所有液体倒入第b[i]个瓶子,此后第a[i]个瓶子不会再被用到.瓶子的容量可以视作是无限的.吉丽知道某几对液体物质在一起时会发生反应产生沉淀,具体反应是1克c[i]物质和1克d[i]物质生成2克沉淀,一直进行直到某一反应物耗尽.生成的沉淀不会和任何物质反应.当有…
题目描述 体育课上,n个小朋友排成一行(从1到n编号),老师想把他们分成若干组,每一组都包含编号连续的一段小朋友,每个小朋友属于且仅属于一个组.第i个小朋友希望它所在的组的人数不多于d[i],不少于c[i],否则他就会不满意.在所有小朋友都满意的前提下,求可以分成的组的数目的最大值,以及有多少种分组方案能达到最大值. 题解 现在假设不考虑C的限制,那么它的转移是一段连续的区间我们可以用单调队列求出来这一段区间. 加上C的限制以后,我们不好直接处理,所以考虑分治. 假设我们当前处理的区间为[l,r…
Description 吉丽的漫展有n件手办和m名警卫.建立平面直角坐标系,每个手办和警卫都可以看做一个点.警卫们的目光都朝着y轴负方向,且都有相同大小的视角.警卫可以看见自己视角内(包括边界上的点)的所有手办,不用考虑视线的遮挡. 你打算抢劫吉丽的漫展,但不可被警卫发现.为了实施这次抢劫计划,你可以事先贿赂某些警卫,让他们闭上眼睛.只要某件手办不在任何睁着眼睛的警卫的视野内,你就可以偷走它.你知道每件手办的价格,以及每位警卫需要接受多少钱的贿赂.你想知道自己的最大收益是多少. Solution…
题目: 在一款电脑游戏中,你需要打败\(n\)只怪物(从\(1\)到\(n\)编号).为了打败第\(i\)只怪物,你需要消耗\(d_i\)点生命值,但怪物死后会掉落血药,使你恢复\(a_i\)点生命值.任何时候你的生命值都不能降到\(0\)(或\(0\)以下).请问是否存在一种打怪顺序,使得你可以打完这\(n\)只怪物而不死掉 所有数均\(\leq 10^5\) 题解: 首先很明显地要先收掉所有总收益为正的怪物. 顺序的话稍微\(YY\)一下就会发现是按照消耗的生命值从小到大. 那么下面考虑如何…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3709 题意: 在一款电脑游戏中,你需要打败n只怪物(从1到n编号). 为了打败第i只怪物,你需要消耗atk[i]点生命值,但怪物死后会掉落血药,使你恢复rec[i]点生命值. 任何时候你的生命值都不能降到0(或0以下). 请问是否存在一种打怪顺序,使得你可以打完这n只怪物而不死掉. 题解: 怪物总共分两种,一种是打完能回血的,一种是打完会掉血的. 显然,先打能回血的,再打能掉血的. 分别…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3714 如果用s[ i ]表示前 i 个的奇偶性,那么c(i_j)表示s[ i-1 ]^s[ j ].知道其中一个就能知道另一个. 已知s[ 0 ]=0.所以把 c 看成连边,从0能走到每个点就行.即求一个最小生成树. 然后跑得很慢地A了.也不知为何这么慢. #include<iostream> #include<cstdio> #include<cstring>…
题目大意:给定一棵树,令一个点到全部点的距离与点权的乘积之和为b[i].求每一个点的权值a[i] 首先假设给定a[i]我们能够非常轻松的求出b[i] 可是反过来怎么搞?高斯消元?30W? 考虑已知a[i]求b[i]的情况 令这棵树的根为1 点i到根节点的距离为dis[i] 以i为根的子树的a值之和为size[i] 那么有递推式 b[1]=Σa[i]*dis[i] b[x]=b[fa[x]]-2*size[x]+size[1] 将上式变形得: 2*size[x]=b[fa[x]]-b[x]+siz…
有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n<=1000000),表示商品数量.接下来一行有n个整数,表示每件商品的价格,范围在[1,10^9].接下来一行有一个整数m(1<=m<=1000000),表示询问数量.接下来m行,每行一个整数k[i](1<=k[i]<=n). Output 对于每个询问,输出一行表示保证奇数的情况下最大的总价.若无法满足要求,输出-1. Sample Input 44 2 1…
先打能回血的,按消耗从小到大打: 然后按回血量降序打剩下的(把消耗和回血反着看就是上一种怪,打法一样): 中间体力小于0就输出无解 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=100005; int n,t1,t2; long long z; struct qwe { int d,a,id; }a[N],b[N]; bool cmp1(c…
参考:https://blog.csdn.net/aarongzk/article/details/48883741 没想到吧.jpg 来自题解: "如果用sum[i]表示前i个杯子底球的总数,那么知道一个c[i][j],等于是知道了sum[j]和sum[i-1]的差的奇偶性.而sum[0]的奇偶性是知道的,所以只需要知道所有sum[i]与sum[0]的差的奇偶性,就可以推出每个杯子是否有球." 所以这意味着什么呢,你需要直接或间接的知道sum[i]和sum[0]之间的关系,并且,知道…
如果没有限制,直接取前 $k$ 大即可. 有限制,则只有几种可能:奇换偶,偶换奇. 维护奇数偶数的前缀最小值和后缀最大值即可. code: #include <bits/stdc++.h> #define N 1000005 #define LL long long #define inf 2000000000 using namespace std; namespace IO { char *p1,*p2,buf[100000]; #define nc() (p1==p2&&…
看上去像是一个最大权闭合子图裸题但是数据太大 我们可以先把守卫的视野转换到第二象限(每个守卫可以看到横坐标比他小 纵坐标比他大的宝物) 然后按X从小到大 再按Y从大到小排 这样我们就可以按SORT序遍历守卫 然后贪心地把每个守卫的流量流给离他最近的Y最小的宝物 易证这样是最优的 #include<bits/stdc++.h> #define ll long long using namespace std; inline void read(int &x) { char c; ; ')…
首先,这是我n久之前培训的时候老师讲的题目了,今天突然看到,那就讲讲吧. 首先,我们考虑怎么打怪... 显然,我们需要保证这个怪要尽可能的打死(就是尽量不被干死),并且保证尽可能的净获得血量大的在前面 但是我们注意到,题目十分友好的说出了我们只需用输出一种方案就行 所以考虑最边界的情况(即贪心) 贪心,对于怪兽可以分成两类: 一类,打完之后血量不降反升,这些怪兽按照消耗血量从小到大排序: 一类,打完之后血量不升反降,这些怪兽按照恢复血量从大到小排序. 血量上升怪一定排在血量下降怪前面,易知这种打…
有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮. 你可以去附近的商店换新灯泡,商店里所有正整数功率的灯泡都有售.但由于背包空间有限,你至多只能换k个灯泡. 你需要找到一个合理的方案使得每个房间都被完全照亮,并在这个前提下使得总功率尽可能小. Input 第一行两个整数n,k(1<=k<=n<=500000). 第二行n个整数pi,表示你现有的灯泡的功率. 第三行n个整数wi,表示照亮每间房间所需要的最小功率. Out…
转载请注明出处:http://www.cnblogs.com/TSHugh/p/8858805.html Prepared: (无notes的波兰题目的notes见我的波兰题目补全计划)BZOJ #3831.[Poi2014]Little BirdBZOJ #2091.[Poi2010]The Minima GameBZOJ #4385.[POI2015]Wilcze dołyBZOJ #4379.[POI2015]Modernizacja autostradyBZOJ #3830.[Poi20…