AtCoder Beginner Contest 374

news2024/10/9 22:16:50

C - Separated Lunch

题目:

思路:

dfs枚举每个数是否选入a数组中,求和比较

代码:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

const int N=25;

int a[N];
bool st[N];
int mn=0x3f3f3f3f;
int sum;
int n;
void dfs(int u, int s)
{
    if(u==n){
        mn=min(mn,max(sum-s,s));
        return;
    }
    dfs(u+1,s);
    dfs(u+1,s+a[u]);
}

int main()
{
    cin>>n;

    for(int i=0; i<n; i++){
        cin>>a[i];
        sum+=a[i];
    }
    dfs(0,0);
    cout<<mn<<'\n';

    return 0;

}

欣赏一下jiangly的代码:

#include <bits/stdc++.h>

using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int N;
    std::cin >> N;
    
    std::vector<int> K(N);
    for (int i = 0; i < N; i++) {
        std::cin >> K[i];
    }
    
    int tot = std::accumulate(K.begin(), K.end(), 0);
    
    int ans = tot;
    std::vector<int> sum(1 << N);
    for (int s = 0; s < (1 << N); s++) {
        if (s > 0) {
            int u = __builtin_ctz(s);
            sum[s] = K[u] + sum[s ^ (1 << u)];
        }
        ans = std::min(ans, std::max(sum[s], tot - sum[s]));
    }
    std::cout << ans << "\n";
    
    return 0;
}

D - Laser Marking 

题目:

思路:

dfs一下1~n的全排列,注意每次递归两个端点,取最小值

代码:

#include <bits/stdc++.h>
#define fi first
#define se second;

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;

int main()
{
    int n;
    cin>>n;

    int s, t;
    cin>>s>>t;
    vector<int> A(n), B(n), C(n), D(n);

    for(int i=0; i<n; i++){
        cin>>A[i]>>B[i]>>C[i]>>D[i];
    }

    double ans=1e18;
    vector<bool> vis(n);
    auto dfs = [&] (auto &self ,int x,int y, double sum=0.0, int c=0){
        if(c==n){
            ans= min(ans,sum);
            return;
        }
        for(int i=0; i<n; i++){
            if(vis[i]){
                continue;
            }
            double d1=hypot(A[i]-x, B[i]-y);
            double d2=hypot(C[i]-x, D[i]-y);
            double d0=hypot(A[i]-C[i], B[i]-D[i]);
            vis[i]=true;
            self(self ,C[i], D[i], sum+d1/s +d0/t, c+1);
            self(self ,A[i], B[i], sum+d2/s +d0/t, c+1);
            vis[i]=false;
        }
    };
    dfs(dfs,0,0);
    cout<<fixed<<setprecision(20)<<ans<<'\n';

    return 0;
}

E - Sensor Optimization Dilemma 2

题目:

思路:

截取了两位博主的思路

代码:

#include <bits/stdc++.h>
#define fi first
#define se second;

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;

int main()
{
    int n,x;
    cin>>n>>x;
    vector<int> A(n), B(n), P(n), Q(n);
    for(int i=0; i<n; i++){
        cin>>A[i]>>P[i]>>B[i]>>Q[i];
        if(A[i]*Q[i]<B[i]*P[i]){
            swap(A[i], B[i]);
            swap(P[i], Q[i]);
        }
    }

    auto check = [&](int u){
        LL ans=0;
        for(int i=0; i<n; i++){
            LL res=1e18;
            for(int j=0; j<=100; j++){
                LL v=j*Q[i];
                int need =u-j*B[i];
                if(need > 0){
                    v+=1LL *(need + A[i]-1)/A[i] *P[i];
                }
                res=min(res,v);
            }
            ans+=res;
        }
        return ans <= x;
    };
    int l=0, r=1e9;
    while(l<r){
        int mid=(l+r+1)/2;
        if(check(mid)){
            l=mid;
        } else {
            r=mid-1;
        }
    }
    cout<<l<<'\n';

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2200181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMWare安装ubuntu22虚拟机

1.下载VMware虚拟机和ubuntu 下载地址&#xff1a; VMware Workstation Pro - Download (softonic.com) Download Ubuntu Desktop | Ubuntu 2.Ubuntu的安装 1.VMware创建虚拟机。 2.选择默认即可点击下一步。 3.找到刚才下载的ubuntu20.04。选择下面的稍后安装操作系统。 …

众智OA办公系统 Account/Login SQL注入漏洞复现

0x01 产品简介 众智OA办公系统是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台。它凭借先进的技术和人性化的设计理念,实现了信息的快速传递和自动化处理,帮助企业和机构实现信息化、自动化、智能化和标准化的办公管理。 0x02 漏洞概述 众智OA办公系统 Acc…

【命令操作】linux上watch命令详解 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【命令操作】linux上basename和dirname使用详解 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于Linux上watch命令的详解文章。watch命令是Linux系统中非常有用的一个工具&#xff0c;它可以定期执行指定的命令并在终端…

解决vscode cpptools-srv.exe占用内存过大,导致系统卡死问题

cpptools-srv.exe是安装了c扩展出来的进程。最新版本c扩展cpptools-srv.exe疯狂的占用内存&#xff0c;笔者机器64G内存 都被占满了&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c; 网上也试了一些其他的办法&#xff0c;设置里面限制内存不过不好…

一入递归深似海,算法之美无止境

最近在刷leetcode hot100,在写二叉树中最大路径和的时候,看到了一个佬对递归的理解,深受启发,感觉自己对于递归的题又行了!!! 这里给大家分享一下(建立大家先去尝试一下这道题再来看 124. 二叉树中的最大路径和 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每…

【优选算法】--- 位运算

位运算 一、常见的位运算总结&#xff08;重点&#xff01;&#xff09;1、关于位运算的符号2、&#xff08;判断&#xff09;给一个数字n&#xff0c;确定它的二进制表示中的第X位&#xff0c;是1还是0&#xff1f;3、&#xff08;修改&#xff09;如何把一个二进制的数字的第…

算法:双指针系列(一)

双指针系列 一、移动零&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示二、复写零&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示三、快乐数&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示&#xff08…

OceanBase 4.x 部署实践:如何从单机扩展至分布式部署

OceanBase 4.x 版本支持2种部署模式&#xff1a;单机部署与分布式部署&#xff0c;同时支持从单机平滑扩展至分布式架构。这样&#xff0c;可以有效解决小型业务向大型业务转型时面临的扩展难题&#xff0c;降低了机器资源的成本。 以下将详述如何通过命令行&#xff0c;实现集…

Matlab数据预处理——最小二乘法消除多项式趋势项

关注公众号“电击小子程高兴的MATLAB小屋”获取专属优惠 概要&#xff1a; 最小二乘法是一种常用的统计方法&#xff0c;用于通过拟合数据来消除多项式趋势项。以下是关于如何使用最小二乘法消除多项式趋势项的步骤和概念&#xff1a; 概念&#xff1a; 多项式趋势项&#…

动态规划一>解码方法

1.题目&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 2.解析&#xff1a; 版本一&#xff1a;图解&#xff1a; 注意&#xff1a; 前导0不能解码&#xff1a;06, 或者两个数字字符&#xff1a;其中一个解码失败&#xff0c;整个也解码失败 /**1.创建dp表2.初始化3.填…

GIS小技巧——一文教会你安装BlenderGIS插件

Blender是一款不错的三维渲染软件&#xff0c;用它来做三维地形图&#xff0c;能够更好地把地形纹理显现出来。不过&#xff0c;原始的Blender是没有地图底图的&#xff0c;要结合三维影像制作三维地形图&#xff0c;需要结合其他的软件&#xff0c;比如ArcGIS Pro&#xff0c;…

基于RSSI原理的蓝牙定位程序(matlab代码,3维空间、基站数量>3即可,可自适应)

目录 商品描述 商品描述 这款基于接收信号强度指示&#xff08;RSSI&#xff09;原理的蓝牙定位程序&#xff0c;专为需要高效、可靠定位解决方案的开发者和研究人员设计。无论是在室内环境还是复杂的三维空间&#xff0c;该程序都能通过N个蓝牙锚点&#xff0c;实现对未知点的…

重学SpringBoot3-集成Redis(十)之实时统计和分析

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis&#xff08;十&#xff09;之实时统计和分析 1. 实时统计和分析的常见场景2. 使用 Redis 数据结构进行实时统计3. 使用Redis String实现计数器…

linux线程 | 一篇文章带你理解线程的概念

前言:本篇讲述linux里面线程的相关概念。 线程在我们的教材中的定义通常是这样的——线程是进程的一个执行分支。 线程的执行粒度&#xff0c; 要比进程要细。 我们在读完这句话后其实并不能很好的理解什么是线程。 所以&#xff0c; 本节内容博主将会带友友们理解什么是线程&a…

vscode软件中可以安装的一些其他插件

一. 简介 前面了解了 在 做 C开发时 vscode软件需要安装的一些常用插件。文章如下&#xff1a; vscode软件在 C发中常用插件-CSDN博客 本文继续了解一些其他好用的插件。 二. vscode软件中可以安装的一些其他插件 1. 字体插件 FIRA CODE FIRA CODE 致力于提升代码的连贯…

Chromium 中chrome.history扩展接口c++实现

一、前端 chrome.history定义 使用 chrome.history API 与浏览器的已访问网页的记录进行交互。您可以在浏览器的历史记录中添加、移除和查询网址。如需使用您自己的版本替换历史记录页面&#xff0c;请参阅覆盖网页。 更多参考&#xff1a;chrome.history | API | Chrome…

LSTM 长短期记忆网络:解锁时间序列数据的深层秘密

在这个数据驱动的时代&#xff0c;理解和预测时间序列数据成为了许多领域的关键。从股票价格预测到天气模式分析&#xff0c;从自然语言处理到健康监测&#xff0c;时间序列数据无处不在&#xff0c;并且蕴含着丰富的信息。然而&#xff0c;传统的神经网络在处理这类数据时往往…

Openstack 安装教程

1.首先更新系统 sudo apt update sudo apt upgrade -y2.安装必要软件包 sudo apt install -y software-properties-common3.添加openstack官方仓库 sudo add-apt-repository cloud-archive:train sudo apt update4.安装openstack核心组件 sudo apt install -y python3-opens…

技术分享 —— JMeter接口与性能测试实战!

前言 在软件开发和运维过程中&#xff0c;接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用&#xff0c;被广泛用于进行各种性能测试&#xff0c;包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…

Redis-02 持久化

redis持久化即将数据从内存写入磁盘&#xff0c;Redis提供了两种持久化的方式&#xff1a;RDB和AOF。 1.RDB RDB持久化&#xff1a;Redis可以将内存中的数据定期快照保存到磁盘上的一个二进制文件中。RDB持久化是一种比较紧凑的文件格式&#xff0c;适用于备份和灾难恢复。通过…