2021CCPC网络赛:G - Function HDU - 7106

news2024/9/19 10:50:46

题意

定义g(x)为x的各数位之和

求该方程:

在给定x范围内的最小值

思路:

一个x对应一个g(x),一个g(x)对应多个x
由于g(x)最多取到54,所以可以枚举所有的g(x)所以想到当取到g(x)的时候,只取能使原方程f(x)最小的那几个x
当枚举g(x)的时候,g(x)看作一个常数,此时方程就变成了一个二元一次方程(A*g(x)+B==0的时候为一元一次方程)
那么此时的x可以当做定义域,使得函数最小的x,无论是不同开口朝向的二元一次方程还是一元一次方程,最小值一定在
1.左右端点
2.对称轴左右两边(对称轴不一定是整数)
中取到

代码

#include<iostream>
#include<map>
#include<cmath>
#include<string>
#include<vector>
#include<cstring>
#include<algorithm>
#include<unordered_map>
#define pb push_back
#define fi first
#define se second
#define int long long
#define all(x) (x).begin(),(x).end()
#define _for(i, a) for(int i = 0; i < (a); ++i) 
#define _rep(i, a, b) for(int i = (a);i <= (b); ++i)
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define endl '\n'
using namespace std;
typedef pair<int,int> PII;

const int INF=4e18;
const int MOD=1e9+7;
const int N=1e6,M=2*N;
vector<int> v[100];
int a,b,c,d,n=1000000,ta,tb,x;
int get(int x){
    int res=0;
    while(x){
        res+=x%10;
        x/=10;
    }
    return res;
}
void init(){
    _rep(i,1,N){
        int t=get(i);
        v[t].pb(i);
    }
}
int right(int g,int x){
    auto t=lower_bound(v[g].begin(),v[g].end(),x);
    if(t==v[g].end()) return -1;
    return *t;
}
int left(int g,int x){
    auto t=lower_bound(v[g].begin(),v[g].end(),x);
    if(t==v[g].begin()) return -1;
    t--;
    return *t;
}
bool check(int x){
    return x>=1&&x<=n;
}
int cal(){
    return x*x*ta+tb*x;
}
void solve(){
    cin>>a>>b>>c>>d>>n;
    int res=INF;
    _rep(i,1,54){
        ta=a*i+b;
        tb=c*i*i+d*i;
        double mid=0;
        if(ta!=0) mid=(tb/(-2*ta));
        int midl=floor(mid);
        int midr=ceil(mid);
        //对称轴左边
        x=left(i,midl);
        if(check(x)) res=min(res,cal());
        x=right(i,midl);
        if(check(x)) res=min(res,cal());
        //对称轴右边
        x=left(i,midr);
        if(check(x)) res=min(res,cal());
        x=right(i,midr);
        if(check(x)) res=min(res,cal());
        //左端点
        x=right(i,1);
        if(check(x)) res=min(res,cal());
        
        //右端点
        x=left(i,n);
        if(check(x)) res=min(res,cal());
        x=right(i,n);
        if(check(x)) res=min(res,cal());
    }
    cout<<res<<endl;//
}
signed main(){
    init();
    IOS;
    int T=1;
    cin>>T;
    _rep(i,1,T){
        solve();
    }
    return 0;
}

实现

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

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

相关文章

干货分享:精选四大Win10录屏工具推荐!

无论你是制作教程视频、游戏实况分享还是日常办公中的演示记录&#xff0c;一款好的录屏软件都能让你事半功倍。Windows 10作为当下最流行的桌面操作系统之一&#xff0c;本文推荐几款优秀的win10录屏工具 福昕录屏大师 链接&#xff1a;www.foxitsoftware.cn/REC/ 福昕录屏…

石油钻杆对直线度测量的需求

关键字&#xff1a;石油钻杆直线度测量仪&#xff0c;钻杆测量仪&#xff0c;钻杆直线度 石油钻杆对直线度测量的需求主要源于其在石油勘探和开发过程中的关键作用以及严苛的工作环境。以下是对这一需求的详细分析&#xff1a; 一、石油钻杆的功能与重要性 石油钻杆是石油钻探…

十五分钟速通Vue

绑值语法( {{}} ) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head…

热失控传感器在换电站消防安全解决方案中的应用

随着新能源技术的飞速发展&#xff0c;工程车辆行业正逐步向绿色化、电动化转型&#xff0c;作为这一转型过程中的关键设施&#xff0c;换电站的数量日益增多。作为电池集中储存与交换的核心区域&#xff0c;换电站的消防安全问题成为了不容忽视的重大挑战。特别是电池仓&#…

骑行适合戴的耳机?开放式耳机测评

当我们在享受骑行的乐趣时&#xff0c;音乐往往是不可或缺的伴侣。但选择耳机却是一门学问&#xff0c;尤其是在安全和听觉享受之间找到平衡。今天&#xff0c;我就来和大家探讨一下&#xff0c;在骑行时究竟是选择开放式耳机还是封闭式耳机。 骑行时选择耳机的考量因素 1.安全…

二手电脑配置给你不一样的成就感之三

近期和着了魔一样&#xff0c;一直在搜罗二手乐色&#xff0c;之前说过的推荐配置基本都试了一遍&#xff0c;今天来说下APU系列和E3系列&#xff0c;还是那个选择&#xff0c;主板30以下&#xff0c;cpu二十以下&#xff0c;这次有增加了二手风扇&#xff0c;二手固态&#xf…

vue part 5

生命周期 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>引出生命周期</title><!-- 引入Vue --><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js&quo…

filezilla使用教程(window下filezilla使用教程)

filezilla使用教程&#xff08;window下filezilla使用教程&#xff09; 一、安装与配置 首先&#xff0c;你需要从FileZilla的官方网站下载并安装适合你操作系统的版本。安装完成后&#xff0c;打开FileZilla&#xff0c;你将看到一个简洁的用户界面。 在FileZilla中&#x…

day-43 Z 字形变换

思路 只需要依次按照行进行遍历即可 解题过程 第一行位置&#xff1a;0 2*(numRows-1) 4*(numRows-1) 第二行位置&#xff1a;1 2*(numRows-1)-1 2*(numRows-1)1 。。。。。。 注意&#xff1a;当numRows为1时&#xff0c;直接返回s Code class Solution {public String con…

Android 获取安装包的签名,获取签名文件的MD5值

一般情况下通过下面的语句就开业获取MD5值; keytool -list -v -keystore 签名文件.jks -alias 别名也可以直接:keytool -list -v -keystore 签名文件.jks但结果只有SHA1和SHA256,没有MD5值; 是因为升级java JDK以后 keytool 不支持MD5,所以就需要像其他的办法; 解决办…

西门子PLC、倍福PLC如何接入ThingsKit物联网平台?

随着工业4.0的推进&#xff0c;物联网(IoT)技术在智能制造领域的应用日益广泛。本文将探讨如何将西门子PLC和倍福PLC接入ThingsKit物联网平台&#xff0c;实现工业设备的远程监控与管理。 引言 在智能制造和工业自动化中&#xff0c;PLC&#xff08;可编程逻辑控制器&#xf…

[000-01-001].第06节:Shell环境变量深入学习

1、Shell环境变量深入&#xff1a;加载流程原理介绍 本节目标 1.能够说出交互式Shell与非交互式Shell2.能够说出登录Shell与非登录Shell环境 1.1.Shell工作环境介绍 用户进入linux系统就会初始化Shell环境, 这个环境会加载全局配置文件和用户个人配置文件中环境变量.每个脚本文…

【项目篇】WS2812 炫彩LED灯驱动笔记(C51/STM32)

优信电子:51系列驱动WS2812 3528 幻彩雾状 贴片式发光二极管 XL-3528RGBW-WS2812B C51 驱动 使用 C51 单片机&#xff08;如 8051 系列&#xff09;驱动 WS2812 全彩 LED 需要仔细考虑 WS2812 的时序要求&#xff0c;因为 WS2812 使用的是单线通信协议&#xff0c;而 8051 系…

JavaEE(2):前后端项目之间的交互

现在&#xff0c;在网页中通过超链接&#xff0c;表单就可以向后端发送请求&#xff0c;后端也可以正常响应内容。 以前通过表单访问后端的请求方式称为同步请求 同步请求 当网页与后端交互时&#xff0c;前端不能再进行其他操作 服务器端响应回来的内容&#xff0c;会把整个浏…

1895. 二分查找右侧边界

代码 #include<bits/stdc.h> using namespace std; int a[100010],n,q; int yc(int x) {int l1,rn,mid;while(l<r){mid(lr)/2;if(x<a[mid]) rmid-1;else if(x>a[mid]) lmid1;}if(a[l-1]x) return l-1;else return -1; } int main() {int i,x;cin>>n;for(…

迷雾大陆游戏辅助:VMOS云手机强势辅助宠物推荐!

在《迷雾大陆》游戏中&#xff0c;选择合适的宠物是提升战斗力的关键。通过使用VMOS云手机&#xff0c;你可以体验到更为顺畅的游戏过程。VMOS云手机为《迷雾大陆》专门定制了专属的云手机版本&#xff0c;内置游戏安装包&#xff0c;不需要重新下载安装。此外&#xff0c;VMOS…

第一次使用Visual Studio社区版

由于C代码的需要&#xff0c;我开始尝试使用VS。 下载 下载地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/downloads/ 网上关于专业版的教程较少&#xff0c;所以我猜测需求不大&#xff0c;于是我也下载社区版。 安装地址&#xff1a; &#xff08;工作负荷…

从 7000 余项目脱颖而出,飞轮科技《新一代实时分析数据仓库解决方案》荣获 HICOOL 2024 全球创业大赛二等奖

HICOOL 2024 全球创业者峰会于 2024 年 8 月 23 日 -25 日 在中国国际展览中心&#xff08;顺义馆&#xff09;成功举行&#xff0c;峰会以“新质引领 创新共融”为主题&#xff0c;聚焦技术创新、产业融合、新质共享与国际合作四大要素。 在 8 月 23 日晚的峰会开幕式上&…

一文速学-零成本与数据沟通NL2SQL的概念和实现技术

前言 关于NL2SQL的技术&#xff0c;如果大家最近有关注AI圈的话&#xff0c;或多或少都有所了解。其实很多业务场景下&#xff0c;于用户而言更多的是想要获取到最终数据的呈现效果&#xff0c;关于数据是如何获取得到的学习成本&#xff0c;是尽可能越少越好。众所周知当学习…

零知识证明-椭圆曲线(四)

前言 零知识证明(Zero—Knowledge Proof)&#xff0c;是指一种密码学工具&#xff0c;允许互不信任的通信双方之间证明某个命题的有效性&#xff0c;同时不泄露任何额外信息 上章介绍了基础数字知识&#xff0c;这章主要讲 椭圆曲线 方程 2&#xff1a;椭圆曲线方程 y2axybyx3…