首页 > 其他分享 >[USACO17OPEN] Paired Up S

[USACO17OPEN] Paired Up S

时间:2024-06-02 21:04:38浏览次数:11  
标签:产奶 产奶量 10 int Up Paired USACO17OPEN 奶牛 op

---------------------------------------------------------------------------------------------------------------------------------

 题目描述

有M(M为偶数)头奶牛,每头奶牛有一个产奶量,将这些奶牛两两配对,每对奶牛的产奶的时间为两头奶牛产奶量的总和。现在这M/2对奶牛同时产奶,问所需的最短时间是多少 M保证为偶数

第一行为一个正整数N

接下来有N行,每行两个正整数x和y,表示有x头奶牛的产奶量为y。保证所有x的总和等于M

【输出格式】

输出产奶时间的最小值

【输入输出样例#1】

输入#1

3
1 8
2 5
1 2

输出#1

10

【说明提示】

奶牛的产奶量分别为8,5,5,2。

让8和2配对,5和5配对,则产奶时间分别为10,10,所以这两对奶牛同时产奶的时间为10.

---------------------------------------------------------------------------------------------------------------------------------

这道题我先翻译了一下题意,他是想让我们把这些奶牛两两配对,让最大和最小,所以让第yi'ge一配倒数第一,第二配倒数第二就行了。

然后我先是用一个vector把所有产奶量记下来,如样例我会输入成8,5,5,2。但是因为m的范围是10^9,所以要直接往vector里装struct。

结果,我的做法超时了,我爸爸说这是因为我是一个一个算最大值的,但这样算的东西一直一样,相当于白算了。所以,我又改成了一段一段算,就全部AC了。

---------------------------------------------------------------------------------------------------------------------------------

#include <bits/stdc++.h>
using namespace std;

struct node
{
    int x,y;
};
vector<node>v;
bool cmp(node n1,node n2)
{
    return n1.y<n2.y;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        node op;
        cin>>op.x>>op.y;
        v.push_back(op);
    }
    int m=v.size();
    sort(v.begin(),v.end(),cmp);
    int maxx=0;
    int l=0,r=m-1;
    while(l<=r)
    {
        int sum=v[l].y+v[r].y;
        int minn=min(v[l].x,v[r].x);
        v[l].x-=minn;
        v[r].x-=minn;
        if(v[l].x<=0)
            l++;
        if(v[r].x<=0)
            r--;
        maxx=max(maxx,sum);
    }
    cout<<maxx;
    return 0;
}

标签:产奶,产奶量,10,int,Up,Paired,USACO17OPEN,奶牛,op
From: https://blog.csdn.net/AnnaWu13/article/details/139247635

相关文章

  • LitCTF2024-ZongRan战队WriteUp
    ZongRan战队WriteUpWeb+Misc:MuneyoshiCrypto:chachaReverse:laonazaixiuxingMisc涐贪恋和伱、甾―⑺dé毎兮毎秒解题思路:lsb隐写,直接提取LitCTF{e8f7b267-9c45-4c0e-9d1e-13fc5bcb9bd6}你说得对,但__一张二维码扫描一下发现不对,发现这是原神网页binwalk提取一下然后......
  • 借助x64dbg及Scylla的UPX手工脱壳
    参考文章:https://bbs.kanxue.com/thread-268159.htm很多地方都是复制粘贴的,学习学习大佬的文章。寻找入口点1、加载程序F9运行,会发现停在push处,push操作将所有寄存器的值压栈,这一步之后会加载UPX的解压代码用于将原始程序解压。2、upx工作原理首先将程序压缩。所谓的压缩......
  • [论文速览] DualVector@ Unsupervised Vector Font Synthesis with Dual-Part Represe
    Pretitle:DualVector:UnsupervisedVectorFontSynthesiswithDual-PartRepresentationaccepted:CVPR2023paper:https://arxiv.org/abs/2305.10462code:https://github.com/thuliu-yt16/dualvector关键词:Unsupervison,VectorFontSynthesis,TrueTypeFontConv......
  • 记录自己在upload-labs的解题过程
    第十二关(get%00截断)打开第十二关,查看源代码发现进行了白名单过滤,只允许上传jpg、png、gif的图片格式,move_uploaded_file本函数检查并确保由 file 指定的文件是合法的上传文件(即通过PHP的HTTPPOST上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件......
  • 楚颖i2024polarctf夏季个人挑战赛WriteUp
     PolarCTF网络安全2024夏季个人挑战赛WRITEUP参赛人员:楚颖iPolarCTF网络安全个人挑战赛组委会制目录第一部分:MISC11-1祺贵人告发11-2费眼睛的flag21-5你耳机听什么5第二部分:CRYPTO72-1pici72-2翻栅栏82-3Hello9第三部分:WEB133-2审......
  • Python利用Seaborn绘制ROC和PR曲线以及AUC与AUPR的计算
    目录一、ROC和PR曲线定义1.1ROC曲线与AUROC1.2PR曲线与AUPRC二、环境需求三、样例数据四、Seaborn绘制ROC和PR曲线4.1ROC曲线绘制和AUROC计算4.2PR曲线绘制和AUPRC计算五、参考文献一、ROC和PR曲线定义1.1ROC曲线与AUROC  ROC曲线[1],[2](ReceiverOpera......
  • Java泛型中<? extends E>和<? super E>的区别
    <?extendsE>      <?extendsE>是UpperBound(上限)的通配符,用来限制元素的类型的上限,比如List<?extendsFruit>fruits;表示集合中的元素类型上限为Fruit类型,即只能是Fruit或者Fruit的子类,因此对于下面的赋值是合理的fruits=newArrayList<Fruit>();fruits......
  • Alpine Linux apk add DNS lookup error
    起因最近做了需要做几个基础镜像,Dockerfile来自Github某仓库,镜像使用的是AlpineLinux3.18,且这个镜像已经更改过软件包管理器apk所使用的软件包仓库(记住这句话),后面基于这个镜像我还需要额外加了一些其他软件包,Dockerfile大致如下FROM某个第三方镜像:alpine-3.18..........
  • centos 重启挂载错误 failed to mount /backup
    方法一重新挂载即可1、错误界面登录 2、查看错误日志journalctl-xb 3、查到是failedtomount/backup挂载错误,打开fstab文件vi/etc/fstab 4、退出重启,卸载后重新挂载,再次打开 vi/etc/fstab取消注销,重启即可umount/dev/sdb1/backupmount/dev/sdb1......
  • 继承,super,重写,多态,抽象,接口
    继承,super,重写,多态,抽象,接口继承extends用于表示两个类之间的继承关系,继承是OOP的四大特性之一,他允许一个类(称之为子类或派送类)继承另一个类(称之为父类或基类)的变量和方法,子类可以复用父类的方法和变量,也可以添加和覆盖父类的方法和变量extends的基本语法使......