Codeforces Round #437 (Div. 2) - C. Ordering Pizza(贪心)

SQL注入实战:order by排序判断字段数原理与防御 SQL注入是Web安全领域最常见的高危漏洞之一,攻击者通过构造恶意SQL语句,能够绕过应用程序的安全机制,直接操作数据库。其核心原理在于应用程序未对用户输入进行充分验证和过滤,导致用户输入被拼接进SQL查询语句中执行。在渗透测试中,判断查询结果字段数是实施联合查询注入的关键前置步骤。order by子句原本用于对查询结果进行排序,但安全人员发现其数字参数特性可被用于字段数探测:当order by后的数字超过实际列数时,数据库会抛出错误,通过观察页面响应状态变化即可精确判断列数。这一技术价值在于为后续的数据窃 阅读详情

C. Ordering Pizza
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

It's another Start[c]up finals, and that means there is pizza to order for the onsite contestants. There are only 2 types of pizza (obviously not, but let's just pretend for the sake of the problem), and all pizzas contain exactly S slices.

It is known that the i-th contestant will eat si slices of pizza, and gain ai happiness for each slice of type 1 pizza they eat, and bihappiness for each slice of type 2 pizza they eat. We can order any number of type 1 and type 2 pizzas, but we want to buy the minimum possible number of pizzas for all of the contestants to be able to eat their required number of slices. Given that restriction, what is the maximum possible total happiness that can be achieved?

Input

The first line of input will contain integers N and S (1 ≤ N ≤ 105, 1 ≤ S ≤ 105), the number of contestants and the number of slices per pizza, respectively. N lines follow.

The i-th such line contains integers si, ai, and bi (1 ≤ si ≤ 105, 1 ≤ ai ≤ 105, 1 ≤ bi ≤ 105), the number of slices the i-th contestant will eat, the happiness they will gain from each type 1 slice they eat, and the happiness they will gain from each type 2 slice they eat, respectively.

Output

Print the maximum total happiness that can be achieved.

Examples
input
3 12
3 5 7
4 6 7
5 9 5
output
84
input
6 10
7 4 7
5 8 8
12 5 8
6 11 6
3 3 7
5 9 6
output
314
Note

In the first example, you only need to buy one pizza. If you buy a type 1 pizza, the total happiness will be 3·5 + 4·6 + 5·9 = 84, and if you buy a type 2 pizza, the total happiness will be 3·7 + 4·7 + 5·5 = 74.


题意:

有两种披萨,给你n个人和他们要吃多少片披萨,和他们分别吃到两种披萨的满足度,在给你一个披萨有s片,让你求:

前提是买最少的披萨,可以获得的最大满足度。

POINT:

贪心,每个人总会比较喜欢吃某一个披萨,记录下来,记录a披萨有几个人喜欢吃的总片数ca,b披萨也一样cb。

ans+=num*max(aa,bb);

那么可以贪心的给他们吃披萨,就会剩下来ca%s个人喜欢吃a披萨,cb%s个人喜欢吃b披萨。

如果这剩下来的总和大于s,说明一块披萨满足不了,那么给他们各自喜欢的,答案就是ans。

如果小于等于s,说明必须有一边的人要不吃他喜欢的披萨,那么就讨论一下,如果ca%s个人吃b披萨会减少多少满足度,

如果cb%s个人吃a披萨会减少多少满足度,取一个较小值,ans-=他  就行了。


所以我们要记录的是,喜欢吃a的差值和对应的片数,b也一样。差值从小到大排序。


#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
#define LL long long
const LL maxn = 100100;
struct node
{
    LL num,cha;
    node(LL n,LL c):
    num(n),cha(c){}
};

vector<node>a,b;
bool cmd(node aa,node bb)
{
    return aa.cha<bb.cha;
}
int main()
{
    LL n,s;
    scanf("%lld %lld",&n,&s);
    LL numa=0,numb=0;
    LL ans=0;
    for(LL i=1;i<=n;i++){
        LL num,aa,bb;
        scanf("%lld %lld %lld",&num,&aa,&bb);
        if(aa>=bb){
            a.push_back(node(num,aa-bb));
            numa+=num;
            ans+=aa*num;
        }else{
            b.push_back(node(num,bb-aa));
            numb+=num;
            ans+=bb*num;
        }
    }
    numa%=s;
    numb%=s;
    if(numa+numb>s){
        printf("%lld\n",ans);
        return 0;
    }
    LL ansa=0;
    sort(a.begin(),a.end(),cmd);
    for(LL i=0;i<a.size();i++){
        if(numa==0) break;
        else if(numa>=a[i].num){
            ansa+=a[i].num*a[i].cha;
            numa-=a[i].num;
        }
        else{
            ansa+=numa*a[i].cha;
            numa=0;
        }
    }
    LL ansb=0;
    sort(b.begin(),b.end(),cmd);
    for(LL i=0;i<b.size();i++){
        if(numb==0) break;
        else if(numb>=b[i].num){
            ansb+=b[i].num*b[i].cha;
            numb-=b[i].num;
        }
        else{
            ansb+=numb*b[i].cha;
            numb=0;
        }
    }
    ans-=min(ansb,ansa);
    printf("%lld\n",ans);

}



Android应用之【巧妙隐藏桌面图标的进阶方案】 本文详细探讨了Android应用中隐藏桌面图标的进阶方案,解决了传统方法在Android 10及以上版本中出现的黑色图标残留问题。通过Intent-Filter配置和厂商适配技巧,实现子应用真正隐身,同时确保主应用正常启动。适用于企业工具套件、模块化系统等场景,提升用户体验和安全性。 阅读详情

相关推荐

【点云可视化】自制ply文件并使用open3d可视化点云

使用open3d可视化点云,需要将点云制作为ply文件传入函数中。 安装open3d 直接使用pip安装 pip install open3d ply文件 ply文件的结构为:文件头+数据内容,文件头从 ply 一行开始,到 end_header 为止,里面定义了此 ply文件中数据的组织形式,包括数据类型和个数。后面是点云的坐标信息及每个点的颜色属性的,参考自 如下为具有5个点的点云,end_header后每一行表示一个点的x,y,z,R,G,B信息 ply format ascii 1.0 comme

这个人很蓝 1万+

CodeForces 867C Ordering Pizza 贪心,思维

CodeForces 867C 题意:一个pizza 可以分成 s 块,有两种类型的 pizza 。有 n 个人,每个人要吃 si 块 pizza,且吃一块类型 1 的 pizza可以得到 ai 的价值,吃一块类型 2 的 pizza得到 bi 的价值。问:在订购 pizza 个数最少的情况下,求 n 个人能得到的最大价值。 tags:一开始想到每个人取最大价值的类型,但没继续想了。。 其...

weixin_30488313的博客 141

半导体行业周期分析:库存、需求与复苏路径深度解读

半导体行业作为现代科技产业的基石,其周期性波动受供需关系、库存水平和宏观经济等多重因素影响。从技术原理上看,行业景气度通常通过库存周转天数、晶圆厂产能利用率等核心指标进行监测,这些指标反映了产业链各环节的健康状况。在工程实践中,理解这些指标有助于企业进行库存管理和产能规划,从而提升运营效率。当前,半导体市场正经历结构性分化,其中**库存周转天数**和**晶圆厂产能利用率**成为判断市场拐点的关键。在应用场景上,汽车电子、人工智能等领域需求相对稳健,而消费电子则面临较大压力。本文聚焦于半导体行业的周期特征,探

weixin_29549793的博客 679

codeforces 867 C Ordering Pizza

题目地址 题意:有两种类型的披萨,是同样价格以及规格的,每块披萨有S块,然后告诉你第i个人吃si片,如果吃类型一,每片能获得ai幸福度,吃类型二则是bi幸福度。问你在满足这些人都能吃饱的情况下,买最少的披萨能获得的最大的幸福度为多少? 思路:先贪心求出每个人都拿满足度最大的类型的披萨,然后我们通过判断现在所要的披萨是不是最少的披萨量,如果不是的话,我们就开始把多余的类型换成另一种类型的,然后我们

不要錯過才珍惜 827

educoder实训——计算几何形状的表面积与体积

educoder python实训

qq_41234663的博客 1230

复制幻灯片到另一个PPT编程

请确保将源PPT文件和目标PPT文件的文件名修改为你实际使用的文件名。运行上述代码后,目标PPT将包含源PPT中的所有幻灯片和形状。这里假设源PPT文件名为"source.pptx",目标PPT文件名为"target.pptx"。方法将每个幻灯片的布局添加到目标PPT中。是一个强大的库,可以用于创建、修改和操作PPT文件。要将一个PPT中的幻灯片复制到另一个PPT,可以使用Python的。这段代码遍历源PPT的每个幻灯片,并使用。步骤 3: 打开源PPT和目标PPT。这将保存修改后的目标PPT文件。

ByteSparkX的博客 1322

Codeforces Round #437 (Div. 2) C. Ordering Pizza (贪心)

原题地址:http://codeforces.com/contest/867/problem/C 题意:有两种披萨,给你n个人和他们要吃多少片披萨,和他们分别吃到两种披萨的满足度,在给你一个披萨有s片,让你求: 前提是买最少的披萨,可以获得的最大满足度。 思路:首先假设没有最小披萨的限制,那么最优解就是每一个人吃1号披萨和2号披萨中取一个较大的值乘上他所要吃的披萨数.但是现在由于有了最小披萨...

yiqzq的博客 523

PyTorch生成式人工智能(7)——生成对抗网络(Generative Adversarial Network, GAN)实践详解

生成对抗网络 (Generative Adversarial Network, GAN) 最早由 Ian Goodfellow 于 2014 年提出,其中生成器试图创建与真实样本无法区分的数据样本,而判别器则试图区分生成器生成的样本与真实样本。在本节中,我们将介绍 GAN 的理论基础。然后,介绍如何使用 PyTorch 从零开始构建 GAN,以便了解所有细节,深入理解 GAN 的内部工作原理,为后续讨论 GAN 的其他更高级内容奠定基础,比如生成高分辨率图像或逼真的音乐。

盼小辉丶的博客 1万+

Codeforces Round #437-贪心-C. Ordering Pizza

http://codeforces.com/contest/867/problem/C 给定m个人,他们吃第一种披萨,吃一片可以获得a的幸福值。 吃2片可以获得b幸福值。他们每个人必须要吃x片。 并且每一个披萨是s片。 问你如何在最少的披萨饼书目下,得到的幸福值最大。 我开始一位计算一下每个人饼数的sum。 然后除s 向上取整 然后计算一下最优解,如果最优解的饼的数目小于等于这数目,就是

天与云与山与水 374

在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch

文章目录在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch结论参考资料解释相关命令版本关系版本选择总结:实验 在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch 结论 使用conda虚拟环境 使用conda命令安装 最重要的是版本关系(python、cuda、cudnn、pytor或者tensorflow框架)的对应。 参考资料 tensorflow2.x安装 理清GPU、

纸上得来终觉浅,绝知此事要躬行! 3万+

5分钟快速上手:用AI生成3D虚拟场景的保姆级教程

你是否想过:不用学复杂的3D建模软件,不用懂“多边形”“UV贴图”这些专业术语,也能快速生成一个梦幻的森林、未来感的城市,甚至外太空基地?本文的目的就是教完全没接触过3D技术的新手,用AI工具5分钟生成3D虚拟场景。我们会覆盖主流AI工具的选择、提示词编写技巧、生成后的简单调整,以及常见问题解决。本文会像“游戏任务指南”一样,从“认识工具”→“写提示词”→“生成场景”→“调整优化”逐步讲解,最后还会教你把生成的3D场景用起来!提示词:你给AI的“订单备注”,越详细效果越好。扩散模型。

AI 原生应用开发的博客 1961

Codeforces Round #437 Div. 2 C. Ordering Pizza (贪心经典)

思路来源 https://blog.csdn.net/so_so_y/article/details/78152910 题意 N个人,每个比萨S块,有两种比萨, 每个人i,需要吃披萨si块,吃比萨1会得到ai快乐值,吃比萨2会得到bi快乐值。 在提供比萨数最小,以确保所有人都有比萨吃的情况下, 问最大的快乐值。 题解 先理想化最大收益,然后贪心地使损失最小。 这是贪心题中...

小衣同学的博客 330

<PLC><工控>汇川Easy521PLC与压力传感器485通讯实例

有些PLC在进行串口通讯时,配置完串口参数后,还需要自己编程序来读写,但本例中汇川Easy521配置完成后,想要读取从站什么数据,只需要在“COM0 Modbus配置窗口”配置即可。可以同时配置多个从站。在配置窗口的右侧点击新增按钮,就会自动生成一条从站的配置,默认从站站号为“1”,触发方式是“循环”,功能码是03(读寄存器),从站寄存器地址为0,长度为“1”,映射地址需要自己添加。因为我们是将PLC设置为Modbus主站,所以压力传感器就是从站,我们的需求时PLC从这些从站传感器中读取数据,比如压力值。

用沸腾的热血,支付我们的人生吧! 6453

Codeforces Round #437 (Div. 2 C. Ordering Pizza 贪心 only two types of pizza

传送门 input 3 12 3 5 7 4 6 7 5 9 5 output 84 input 6 10 7 4 7 5 8 8 12 5 8 6 11 6 3 3 7 5 9 6 output 314 题意: 有n个人,每一份披萨有s块,下面n行,分别代表这个人要吃多少块披萨,第一种披萨获得的快乐值,第二

twh233的算法blog 501

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Codeforces Round #437 (Div. 2) C】 Ordering Pizza

【链接】h在这里写链接 【题意】 给你参赛者的数量以及一个整数S表示每块披萨的片数。 每个参数者有3个参数,si,ai,bi; 表示第i个参赛者它要吃的披萨的片数,以及吃一片第一种披萨增加的幸福感, 以及吃一片第二种披萨增加的幸福感。 两种披萨都能任意数量地订购。 但是总数num有一个上限。 就是S*num>=∑...

AWCXV 98

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Codeforces Round #437 (Div. 2)[A、B、C、E]

Codeforces Round #437 (Div. 2) codeforces 867A. Between the Offices(水) 题意:已知白天所在地(晚上可能坐飞机飞往异地),问是否从西雅图飞到旧金山次数更多。 题解:只要判断第一天和最后一天状态即可。 1 #include<cstdio> 2 #include<cstrin...

dhe56357的博客 212

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Codeforces Round #437 Div. 2 C. Ordering Pizza

DescriptionIt’s another Start[c]up finals, and that means there is pizza to order for the onsite contestants. There are only 2 types of pizza (obviously not, but let’s just pretend for the sake of the

so_so_y的博客 735

Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0 - Round 2) C.Ordering Pizza

C. Ordering PizzaProblem Statement     It’s another Start[c]up finals, and that means there is pizza to order for the onsite contestants. There are only 2 types of pizza (obviously not, but let’s jus

Ephemeral 371

Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0 - Round 2) 题解

题目链接:http://codeforces.com/contest/867 A. Between the Offices 题意:水题。 解法:直接模拟,判断SF和FS的个数的大小即可。 #include using namespace std; char s[110]; int main(){ int cnt1=0,cnt2=0; int n; scanf("%

I good vegetable a! 856

Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0 - Round 2)

A - Between the Offices : 链接http://codeforces.com/contest/867/problem/A 解题心得:就是一个水题,读懂题就好,如果从S到F次数大于F到S就输出YES,否则输出NO。 #include using namespace std; const int maxn = 110; char s[maxn]; int main() {

二营长的意大利炮友 368

CodeForces-867C Ordering Pizza 贪心+优先队列

题意: 第一行给定n,m;n表示有n个人,m表示一张饼可以分成多少片 接下来n行表示n个人的信息,每行输入s,a,b;s表示这个人要吃s片饼,第一种类型的每片获得欢乐值a,第二种类型的每片获得b; 问保证他们吃的的大饼的‘’张数‘’最少的情况下,获得的最大欢乐值是多少; 注意“张”和“片”的关系, 思路: 首先要知道最少需要的大饼张数是多少,这个数量是 所有人需要的饼的数量加和÷每张...

床前明月光 304
上一篇: Codeforces Round #438 - B. Race Against Time
下一篇: Codeforces Round #438 - C. Qualification Rounds (状态压缩)
Mr_Treeeee
博客等级 码龄10年 38粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值