15503 - C

Accepted: 6    Submissions: 27    Time Limit: 3000 ms    Memory Limit: 1048576 KB

在解决了小女孩的谜题后,小女孩很大方的告诉了deemo她的名字:Alice。
从此deemo不再孤单一人了。他们每天快乐的生活在一起。deemo平时喜欢弹钢琴,Alice会静静的坐在他的身边,看deemo以前看过的书。

“deemo,你的书里的谜题都好难啊。”Alice歪着脑袋愁眉苦脸的看着书。
“想知道答案可以问我,我都解决了。”deemo的琴声欢快了起来。
“真的?这么厚的一本书?,那这题你知道答案吗?”
“嗯,因为在你来之前,我都是一个人。”

谜题:
n个人在玩一个关于蜡烛的游戏。这些人编号为1,2,…,n。一开始,第i个人有ai根蜡烛在手上。
这个游戏进行m轮。在每一轮,蜡烛最少的人可以获得x根蜡烛。如果有多于两个人有最少的蜡烛,则编号最小的人获得蜡烛。
编号为1的是他们的老大。所以他可以在游戏开始前从其他途径多获得y根蜡烛。现在他想知道他在m轮之后最多可以拥有多少根蜡烛。

Input
一个整数t,表示样例个数($t\leq 10$)。每组样例第一行有四个整数 $n,m,x,y (1\leq n,m\leq 200000,1\leq x,y\leq 10^9)$.第二行有n个整数 $a_1,a_2,…,a_n (1\leq a_i\leq 10^9)$.

Output
每组样例一个整数表示蜡烛的最大数量。

Input
1
2 1 2 2
1 2

Output
4

Source

XTU OnlineJudge

解题:假设不把$a_0$放进去,我们可以通过x和y使得a[0]等于剩余的某个数的现在的值,这样搞下去即可

 #include <bits/stdc++.h>
using namespace std;
const int maxn = ;
typedef long long LL;
typedef pair<LL,int> PLI;
priority_queue<PLI,vector<PLI >,greater<PLI > >p,q;
int cnt[maxn],n,m,x,y;
LL a[maxn];
LL solve(int st,LL ret = ) {
while(!q.empty()) q.pop();
while(!p.empty()) p.pop();
memset(cnt,,sizeof cnt);
for(int i = ; i < n; ++i) {
q.push(PLI(a[i],i));
p.push(PLI(a[i],i));
}
p.push(PLI(a[] + st,));
ret = a[];
for(int i = ; i < m; ++i) {
PLI now = q.top();
q.pop();
if(now.first >= a[]){
LL k = ceil(double(now.first - a[] - y)/x);
if(i + max(k,0LL) + <= m && a[] + k*x <= now.first)
ret = max(ret,now.first + x);
}
now.first += x;
q.push(now);
}
ret = max(ret,a[] + st);
for(int i = ; i < m; ++i) {
PLI now = p.top();
now.first += x;
p.pop();
if(now.second == ) ret = max(ret,now.first);
p.push(now);
}
return ret;
}
int main() {
int kase;
scanf("%d",&kase);
while(kase--) {
scanf("%d%d%d%d",&n,&m,&x,&y);
for(int i = ; i < n; ++i) scanf("%I64d",a + i);
if(n == ) {
printf("%I64d\n",LL(m)*x + (a[] + y));
continue;
}
printf("%I64d\n",solve(y));
}
return ;
}
/*
1
5 4 8 4
1 5 5 7 8
*/

XTUOJ 15503 - C的更多相关文章

  1. XTUOJ 1248 TC or CF 搜索

    这个题一眼看上去不会 然后有人说是网络流 然后我就想怎么建图啊,然后不会(是本蒟蒻太垃圾了),肯定有网络流解法 然后去群里问了gdut的巨巨,他说他队友爆搜+剪枝过了(我也是非常的叹服) 然后我也写了 ...

  2. XTUOJ 1246 Heartstone 贪心

    题意:挺好懂得 分析:先计算出如果不能用(减2)操作,至少需要多少个(减3)操作,这个很好计算 然后就是尽量多的去减少(减3)操作,肯定先抹平 余2 和 余1 的,然后就可以了 #include &l ...

  3. XTUOJ 1252 Defense Tower 贪心

    题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1252 思路:考虑每条边对玩家的伤害 假设连接的节点是u,v,破坏 ...

  4. 计蒜客 444 / xtuoj 1024 京东的物流路径(并查集+离线lca)或者 (点分治)

    题意:一颗树,定义一条路径的权值等于路径的边权之和,需要求这颗树所有路径中权值的最大值 思路: 考虑到路径权值与点权的最值有关,而最值的问题通常可以通过排序就行处理,于是想到先把点权排序. 容易看出如 ...

  5. xtuoj 1233 coins(dp)

    Coins Accepted : 120   Submit : 305 Time Limit : 1000 MS   Memory Limit : 65536 KB Coins Problem Des ...

  6. xtuoj 1235 CQRXLB(博弈论)

    CQRXLB Accepted : 19   Submit : 40 Time Limit : 1000 MS   Memory Limit : 65536 KB CQRXLB Problem Des ...

  7. XTUOJ 1176 I Love Military Chess(模拟)

     I Love Military Chess Accepted : 45   Submit : 141 Time Limit : 1000 MS   Memory Limit : 65536 KB ...

  8. XTUOJ 1238 Segment Tree

    Segment Tree Accepted : 3 Submit : 21Time Limit : 9000 MS Memory Limit : 65536 KB Problem Descriptio ...

  9. XTUOJ 1205 Range

    Range Time Limit : 1000 MS Memory Limit : 65536 KB Problem Description For an array, the range funct ...

随机推荐

  1. 双端队列 HDOJ 3530 Subsequence

    题目传送门 题意:问最长子序列,满足区间最大值 - 最小值在[m, k]之间 分析:用双端队列维护最大值和最小值,保存的是位置.当满足条件时,更新最大值. /********************* ...

  2. MySQL5.5升级到5.6

    5.6的新的特性 .支持GTIDs,Failover.多线程复制. 新增binlog_row_image只记录row格式下所用字段的修改(而不是像以前一样记录全部列),节省空间等资源: master. ...

  3. rhel7使用centos7yum组件

    1)rpm -qa|grep yum --查看已安装的yum组件包 2)rpm -e 包名 --nodeps --卸载包 3)下载安装以下组件包: 使用rpm -ivh yum-* yum-3.4.3 ...

  4. AJPFX总结Collection集合(下)

    List集合特有方法 特有方法.凡是可以操作角标的方法都是该体系特有的方法. 增          add(index,element);在指定位置添加元素          addAll(index ...

  5. 洛谷P4013 数字梯形问题(费用流)

    题意 $N$行的矩阵,第一行有$M$个元素,第$i$行有$M + i - 1$个元素 问在三个规则下怎么取使得权值最大 Sol 我只会第一问qwq.. 因为有数量的限制,考虑拆点建图,把每个点拆为$a ...

  6. 关于maven source1.5报错

    是因为maven 默认是1.5编译的 <build>//加上这个配置,把编译给改掉试试 <pluginManagement> <plugins> <plugi ...

  7. 利用Jenkins打包ISO和QCOW2镜像文件

    现在的云虚拟化环境越来越多,经常会碰到需要修改并重新打包新的ISO或QCOW2镜像文件.通过手工的方式会比较麻烦,所以在镜像发布的生产环境中可以利用Jenkins来进行定期打包发布,以下介绍Jenki ...

  8. 推荐一个高大上的网易云音乐命令行播放工具:musicbox

    网易云音乐上有很多适合程序猿的歌单,但是今天文章介绍的不是这些适合程序员工作时听的歌,而是一个用Python开发的开源播放器,专门适用于网易云音乐的播放.这个播放器的名称为MusicBox, 特色是用 ...

  9. maven打包的含义

    我们在用maven构建java项目时,最常用的打包命令有mvn package.mvn install.deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命 ...

  10. 7-Java-C(冰雹数)

    题目描述: 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过观察发现,这个数字会一会儿上升到很高, 一会 ...