题解:CF1483E Vabank

news/2025/10/16 19:34:43/文章来源:https://www.cnblogs.com/LUlululu1616/p/19146443

题意:交互题。现在有个隐藏的数 \(M\),你可以询问 \(X\)\(M\) 的大小关系,如果 \(X\le M\) 则你会增加 \(X\) 块钱,如果 \(X>M\) 你需要支付 \(X\) 块钱,如果你付不起就挂了。初始有 \(1\) 块钱,要找出 \(M\) 是多少,最多 \(105\) 次询问。\(M\le 10^{14}\)

做法:

首先我们先不管支付的事情,那么就是直接二分,有付钱这个事情就不是很好做,直接二分的话我们需要补次钱。我们一开始肯定还是直接倍增,这样刚好是在我有钱的前提下尽量扩大范围去找。同时这样可以更快地缩小范围,方便我们去补钱这一部分最多需要用掉 \(47\) 次操作。

然后我们这个时候就可以找出来答案应该在 \([2^x,2^{x+1})\) 这个范围内,这个时候我们再去进行二分。

但是这里有个问题,正常的二分向左向右是没有什么去别的,这里向左是有负的代价而向右是有正的贡献的,并不是同等地位的,所以我们其实应该考虑适当地向左偏移一点,这样去平衡一下两侧的代价。假设我取在整条线段的 \(\frac{1}{p}\) 的位置,那么向左一次,我们就需要补 \([1,2]\) 次钱,\(1\) 次钱居多,最少的步数就是 \(2\log_p(r-l)\) 次,这里 \([l,r)\) 是确定的答案区间。那么因为剩下 \(58\) 次操作,就大概要求 \(\frac 1 p \ge 0.3\) 左右,实则并没有这么严因为这本身就是个比较松的做法。

然后我们考虑怎么取这个位置,那我这里肯定是和钱有关的,我的钱越多肯定是更不怕挂掉的,当我怎么用钱都不会挂的时候就全部二分就行;当我没钱的时候,我肯定是取在 \(\frac{1}p\)。因为我不会分析,所以我认为放置位置关于钱数是线性的。粗略地估计最大钱数,那就是每次都挂掉我还能继续二分,大概是 \(l\log_2(r-l)+r-l\),就是每轮先认为要 \(l\) 块钱再算一下剩下的贡献,取 \(\frac 1 p = 0.3\),实测可以在 \(103\) 次内解决。

(尝试卡了几下但是最后还是在 \(103\) 次止步了。)

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
int nwc;
bool query(int x) {cout << "?" << " " << x << endl;string s; cin >> s;if(s == "Lucky!") {nwc += x;return 1;}elsenwc -= x;return 0;
}
void solve() {nwc = 1;int bs = 1;while(bs <= (int)(1e14)) {if(!query(bs))break;bs <<= 1;}int lp = (bs >> 1), rp = min((int)(1e14), bs - 1) + 1;while(lp + 1 < rp) {int mid = lp + rp >> 1, len = rp - lp, pos;double rat = log2(len) * lp + 2 * (mid - lp);if(nwc >= rat) pos = mid;else {double t = 0.3 + 0.2 * nwc / rat;pos = lp + (rp - lp) * t;}while(nwc < pos)query(lp);if(query(pos))lp = pos;elserp = pos;}cout << "! " << lp << endl;
}
signed main() {int T; cin >> T;while(T--)solve();return 0;
}

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

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

相关文章

20251016 正睿二十连测

正睿二十连测 C 最后的 DP 比较神奇,花了至少 \(1h\) 才搞懂。 给定 \(n, k\),问有多少长度为 \(n\) 的排序能在至多 \(k\) 次 “双向冒泡排序” 后变得有序。一个经典的套路:对于每个 \(x\),将 \(\le x\) 的数看成…

[贝佐斯-六页纸]

1) 结论先行,明确要做什么 2)原因,解决什么问题 3)打算怎么做,和之前做法不同 4)验证效果 5)讨论分析,关键控制点 6)总结,谁具体负责。

cc

#include <stdio.h> main() {int a=1,i,j=10000,m=0,n;for(j=10000;j>=0;j--){m=0;n=j;for(i=1;i<=9;i++)n=n/2-1;if(n==1){m=1;break;}} }getch();}

感知节点@7@ ESP32+arduino+ 第五个程序FreeRTOS 上 增加一个新任务ADC任务

思路:1、提出AI得到初始化+Loop代码2、将初始化+Loop代码,修改为任务函数3、为此任务函数,创建一个新任务,并执行。1、提问AI: ESP32 ADC arduino 编程,使用ADC读取输入两路电压信号,范围0-3.3V 给出代码:// 定…

2025年10月切削液厂家 TOP 企业品牌推荐排行榜,全合成切削液,半合成切削液,微乳切削液推荐这十家公司!

在金属加工行业中,切削液扮演着极为关键的角色,其性能优劣直接关乎加工效率、产品质量以及设备寿命。然而,当下切削液市场存在诸多问题。一方面,市场上切削液产品种类繁杂,质量参差不齐,这使得采购者在选择时面临…

普源精电RIGOL DS2202A示波器保存波形到CSV文件过慢解决方法:保存为WFM格式、通过LAN接口使用SCPI+PyVISA控制

提示:本文包含AI编写的代码。 前言 最近我正在研究学校的这个包浆示波器,发现它在保存内存所有采样点为CSV文件时的速度非常堪忧,于是准备研究一下解决办法。 通过自行搜索和询问群友,我找到了以下两种方法。 方法…

动手学深度学习——引言

机器学习中的关键组件 1.数据 数据集由一个个样本组成。样本由一组特征或者协变量组成 2.模型 深度学习的模型由神经网络交织在一起构成。 3.目标函数 一个定义的函数,希望优化它到最小值。有时候被称为损失函数,但是…

CF1989E Distance to Different

首先想一想最终的 \(b\) 的形式应该是什么样子,我们断言:\(b\) 为左右两边各接了一个单调下降和单调上升的段,中间一定可以被划分为若干个单峰回文子段。发现子段内元素必定固定,所以考虑 DP 段的个数,此时除了旁…

详细介绍:学习:uniapp全栈微信小程序vue3后台(29)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

lianxi

import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms from multiprocessing import freeze_support import sys def load_data(): tran…

AngularJS:构建更智能的Web应用框架

AngularJS是一个强大的JavaScript MVC框架,通过扩展HTML语法、双向数据绑定和依赖注入等特性,让开发者能够更高效地构建动态Web应用。虽然官方支持已于2022年结束,但其设计理念和功能仍值得学习借鉴。AngularJS Ang…

给档案装上“智慧大脑”:文档抽取技术的四大赋能场景

随着数字化转型的深入,档案管理正从传统的实体保管向数字化、智能化的知识服务转变。在这一变革中,文档抽取技术作为自然语言处理和人工智能的关键分支,正扮演着愈发重要的角色。本文将深入探讨文档抽取技术如何重塑…

P11816QOJ1250 Pionki 轮廓线DP

判定有解是一个比较经典的Hall定理。 也即,将 \(a\) 看作正数,将 \(b\) 看作负数,那么一个在 \((i,j,k)\) 的 \(1\),可以与一个在 \((a,b,c)(a\ge i,b\ge j,c\ge k)\) 的 \(-1\) 进行匹配。 根据 Hall 定理,有 \(…

Zookeeper 技术详细介绍 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Bug——PaddleX人脸识别报错:Process finished with exit code -1073741819 (0xC0000005) - 教程

Bug——PaddleX人脸识别报错:Process finished with exit code -1073741819 (0xC0000005) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !…

linux系统scatter/gather I/O技术

struct iovec 是一种用于分散/聚集 I/O 操作的数据结构,它允许在一次系统调用中从多个非连续内存缓冲区读取或写入多个非连续内存缓冲区。 该结构通常与 readv 和 writev 等函数一起使用。#include <sys/uio.h>…

PostgreSQL 为什么不选择 B+ 树索引? - Lafite

我们知道,MySQL 的索引设计使用了 B+Tree,而 PostgreSQL 使用了 B-Tree, 那 PostgreSQL 为什么不使用 B+Tree 做索引结构呢?今天就来聊一聊这个话题。 B+Tree 和 B-Tree B+TreeB+Tree 主键索引的叶子节点存储数据,…

Joeys shell

您熟悉bash的语法吗?"Youre afraid of bugs? Get a bug!" --Joey Tribbiani, "FRIENDS". 想找个mini shell来看看源码,浏览了些网页,有“这玩意也配叫shell?”之感。bash-1.14.7.tar.gz 1996…

Redis 集群从部署到可视化管理全流程(超详细实战指南)

一、为什么需要 Redis 集群? Redis 单机模式存在三大瓶颈: 容量瓶颈:单机内存有限,无法存储海量数据; 并发瓶颈:单线程处理能力有限,高并发下性能易打满; 高可用瓶颈:单机故障会导致服务中断,无自动容灾能力…

什么是BPM流程自动化?从“财务报销”入手,一文读懂企业效率引擎

在企业的日常运营中,我们总能听到“数字化转型”、“降本增效”这样的热词。但它们究竟意味着什么?对于终日忙于具体事务的部门负责人和一线员工而言,这些宏大的概念,有时远不及一张迟迟未能签批的报销单来得真切。…