Survivor

(https://codeforces.com/group/L9GOcnr1dm/contest/422378/problem/F)

血的教训

比较有意思的一个贪心题

简单翻译一下题目:
输入第一行n,m,k;分别代表有几个人,几分钟,和总共能治疗的次数
输入第二行n个数,代表他们个别的初始血量
第三行n个数,代表每分钟他们会被扣掉的血
第四行,代表如果你用技能可以给这个人加多少血
问你,最后一共能活多少个人

看到题目第一想法就是用每轮加的血量去比较能不能救活,毫无列外t了(没看好k的数据范围,到1e11了

code

while (1){
co++;
for (int i = 1; i <= n; i++) {
toadd[i]+=ad[i];
if(toadd[i] + hp[i] > 0 && !vis[i]){
k-=co;
if(k >= 0){
count++,vis[i] = true;
}
}
}
if(co >= k || k == 0){
cout << count << endl;
return 0;
}
}
既然t了那换个思路。首先人得活到m分钟后,也就是说连带加血,你m分钟后的血量一定得大于0。那么就是计算出m分钟后他们所剩的血量,然后用这个血量去除于每次他们每个人能加的血量再加上1,就是他们m分钟后需要治疗多少次就能存活了
这里注意三点,一:有可能他们m分钟后血量还是正的。二:有可能m分钟后他们的血量刚好为0。三:为啥要加1呢,如果他们的剩余的血量刚好可以整除他们每次加的血量,那么治疗后他们的血量刚好是0,依旧是不能活的

Acode

ll count = 0;
vector<ll> co(n+1);
co[0] = -1;
for (int i = 1; i <= n; i++) {
if(hp[i] > 0)co[i] = 0;
else if(hp[i] == 0)co[i] = 1;
else co[i] = abs(hp[i])/ad[i]+1;
}
sort(co.begin(),co.end(),cmp);
for (int i = 1; i <= n; i++) {
k -= co[i];
if(k >= 0)count++;
else break;
}
cout << count << endl;

还有一个特别有意思的

wacode

ll count = 0;
vector<ll> co(n+1);
co[0] = -1;
for (int i = 1; i <= n; i++) {
if(hp[i] > 0)co[i] = 0;
else if(hp[i] == 0)co[i] = 1;
else co[i] = abs(hp[i])/ad[i]+1;
}
sort(co.begin(),co.end(),cmp);
for (int i = 1; i <= n; i++) {
k -= co[i];
if(k >= 0)count++;
else {
cout << count << endl;
return 0;
}
}

两个代码相差很小,但是由于提前输出就给wa了,所以千万不能提前输出!千万不能提前输出!千万不能提前输出!

Survivor的更多相关文章

  1. JVM内存结构之二--新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数

    一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  2. JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释

    以下内容转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29632145&id=4616836 jvm区域总体分两 ...

  3. JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释(转)

    jvm区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分: ...

  4. 为什么新生代内存需要有两个Survivor区

    转载自:http://blog.csdn.net/antony9118/article/details/51425581 在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? ...

  5. JVM(六)为什么新生代有两个Survivor分区?

    本文会使用排除法的手段,来讲解新生代的区域划分,从而让读者能够更清晰的理解分代回收器的原理,在开始之前我们先来整体认识一下分代收集器. 分代收集器会把内存空间分为:老生代和新生代两个区域,而新生代又会 ...

  6. JVM内存结构--新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数

    一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  7. JVM内存区域划分Eden Space,Survivor Space,Tenured Gen,Perm Gen

    jvm区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分: ...

  8. JVM内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)

    JVM区域总体分两类,heap区和非heap区.heap区又分为: Eden Space(伊甸园). Survivor Space(幸存者区). Old Gen(老年代). 非heap区又分: Cod ...

  9. JVM虚拟机20:内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)

    1.内存区域划分 根据我们之前介绍的垃圾收集算法,限定商用虚拟机基本都采用分代收集算法进行垃圾回收.根据对象的生命周期的不同将内存划分为几块,然后根据各块的特点采用最适当的收集算法.大批对象死去.少量 ...

  10. JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释 (生动形象)

    [转自]:https://blog.csdn.net/sd4015700/article/details/50109939 jvm区域总体分两类,heap区和非heap区.heap区又分:Eden S ...

随机推荐

  1. Pytorch Chain-Rules

    Derivative Rules \[\begin{aligned} &\frac{\delta E}{\delta w^1_{jk}}=\frac{\delta E}{\delta O_k^ ...

  2. Do whlie 循环

    Do whlie 循环 ◆对于while语句而言,如果不满足条件,则不能进入循环.但有时候我们需要即使不满足条件,也至少执行-次. ◆do...while循环和while循环相似,不同的是,do... ...

  3. Edge 访问网站强制HTTPS

    edge://net-internals/#hsts 1)開啟Edge chromium 瀏覽器,輸入edge://net-internals/#hsts,開啟設定介面2)找到 Delete doma ...

  4. selenium--- 数据驱动测试 ddt

    通过使用数据驱动测试的方法,可以在需要验证多组数据的测试场景中,使用外部数据源实现对输入值和期望值的参数化,从而避免在测试中仅使用硬编码的数据.将测试数据和测试脚本分离开,使得测试脚本在不同数据集合下 ...

  5. Python中的startswith()函数用法

    函数:startswith() 作用:判断字符串是否以指定字符或子字符串开头 一.函数说明语法:string.startswith(str, beg=0,end=len(string))        ...

  6. IDEA如何使用Maven不通过模板创建javaWeb项目

    IDEA如何使用Maven不通过模板创建javaWeb项目 1.创建项目 进入IDEA,点击"项目">"新建项目",填写项目信息,最后点击"创建 ...

  7. Tesseract5+OpenCV4(VS2017+win10)实现OCR识别

    一.环境配置 较之前采用cppan进行编译的方式,vcpkg的方式已经发生了许多变化,带来的最大不同就是便捷. 对于在NuGet中能够找到的Vcpkg的export,真的实现了开箱即用 这样的话对于普 ...

  8. NGINX配置SSL支持

    前言 在文章-腾讯云申请免费SSL证书中, 我们已经申请好了SSL证书. 那么现在, 我们就要配置全站SSL了! 这次的工作主要是NGINX的配置, 同时会有一些我的博客本身的配置. 博客本身配置更改 ...

  9. Vue基础语法整理

    vue基础用法&基础原理整理 1. vue基础知识和原理 1.1 初识Vue 想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 demo容器里的代码依然符合html规范,只不过混 ...

  10. idea application.properties图标显示异常(无小树叶)

    项目中(多级模块)如果没有主启动类时,新建的application.properties文件显示图标是文本格式图标,就如第一张图所示 添加该项目该模块下主启动类,就可以解决图标显示问题,也就可以看到可 ...