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. HtmlUnit爬取Ajax动态生成的页面内容

    HtmlUnit说白了就是一个浏览器,这个浏览器是用Java写的无界面的浏览器,正因为其没有界面,因此执行的速度还是可以滴. HtmlUnit提供了一系列的API,这些API可以干的功能比较多,如表单 ...

  2. jQuery将json字符串显示在页面上

    js代码: function syntaxHighlight(json) { if (typeof json != 'string') { json = JSON.stringify(json, un ...

  3. LinQ的高级查询

    模糊查询: //数据库 + 自定义名称 =new 数据库 //例子: mydbDataContext con = new mydbDataContext(); //模糊查询表达式中用.Contains ...

  4. C#将excel数据按照需求导入Sql server遇到的问题(参考而已)

    1.千万不要使用永中表格(WPS没用过,这里只是个人观点,不是说永中表格的) 我在公司得到的任务是将excel数据按照需求导入数据库总共主表大概3张,所以有点复杂(列子用的简单表,公司东西还是不要放出 ...

  5. VCS 查看代码覆盖率

    代码覆盖率 代码覆盖率测试一般包括行覆盖,条件覆盖,FSM覆盖,翻转覆盖率等.在不同的代码级别有不同的覆盖率,Behavioral code包含line+condition+path(branch)+ ...

  6. Bloom Filter概念和原理【转】

    Bloom Filter概念和原理 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合.Bloom Filter的这种高效是有 ...

  7. IE8提速经验

    给人写了个web程序,其中detail页要加载不少东西,所以耗时略长.因为bootstrap的原因,我要求用户使用chrome; 而chrome出了名的快,所以也基本没觉得什么. 后来用户因为别的原因 ...

  8. 工作笔记:复制文件--从windows到ubuntu,再到fedora

    最近在测试跨平台类库,于是写了一些小程序. 当然主要利用vs进行主要的代码开发.eclipse进行linux的调试. 那么需要不时同步项目文件. 考虑到项目简单,所以没有使用svn. 1. 从wind ...

  9. OpenJudge_2757:最长上升子序列

    描述一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1 ...

  10. Java之流水号生成器实现

    参考:https://www.jianshu.com/p/331b872e9c8f 1.建立一张存放的表 CREATE TABLE `sys_serial_number` ( `id` bigint( ...