首页 > 其他分享 >The 17th Heilongjiang Provincial Collegiate Programming Contest A(思维 + 二分)

The 17th Heilongjiang Provincial Collegiate Programming Contest A(思维 + 二分)

时间:2024-09-15 21:03:26浏览次数:12  
标签:Provincial cnt 17th Contest int lo mid i64 return

题意

有 \(n\) 本类型 \(A\) 的书

题解

点击查看代码
#include <bits/stdc++.h>

using i64 = long long;

void solve() {
	int a, b, n, m, h;
	std::cin >> a >> b >> n >> m >> h;
	
	i64 cnt = i64(n / b) * (h - a);
	if (cnt >= m - 1) {
		std::cout << n + 1 << "\n";
		return ;
	}
	
	if (h == b) {
		std::cout << n + m - cnt << "\n";
		return ;
	}
	
	int lo = 0, hi = m - 1 - cnt;
	auto check = [&](int k) -> bool {
		int A = n % b;
		int B = m - cnt - k;
		if (k < h - b) {
			return true;
		}
		if (k % (h - b) == 0) {
			return A + B >= i64((k + h - b - 1) / (h - b) - 1) * b + 
			(b + 1) / 2;
		} else {
			return A + B >= i64((k + h - b - 1) / (h - b)) * b;
		}
	};
	
	while (lo < hi) {
		int mid = (lo + hi + 1) / 2;
		if (check(mid)) {
			lo = mid;
		} else {
			hi = mid - 1;
		}
	}
	i64 up = (i64((lo + h - b - 1) / (h - b)) + n / b) * b;
	i64 down = n + m - cnt - lo;
	std::cout << std::max(up, down) << "\n";
}

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
	
	int T;
	std::cin >> T;
	
	while (T--) {
		solve();
	}
	return 0;
}

标签:Provincial,cnt,17th,Contest,int,lo,mid,i64,return
From: https://www.cnblogs.com/LDUyanhy/p/18415631

相关文章

  • AtCoder Beginner Contest 371
    A-Jiro(abc371A)题目大意三个人,给定他们相互之间的大小关系。问谁在中间。解题思路排个序,大小结果就是题目给的,因为问的是中间是谁,所以写的时候并没在意是升序排还是降序排。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmai......
  • AtCoder Beginner Contest 371
    ABC371总结AtCoderBeginnerContest371一些废话想着以后换一种方式写总结,不再以那种题解形式,写起来又累又难写,只对其中部分有意思的题目写出完整的题解。就是以随笔的形式,在打完比赛后写出自己的一些感悟,每道题做的过程中的一些思路、用时和需要改进的地方,就是类似随笔之类的......
  • AtCoder Beginner Contest 371
    https://atcoder.jp/contests/abc371C:暴力。思路是把1-8的点映射到全排列上面,然后把有的点去掉没的点加上取ans最小值。这题复杂度是\(8!\times7\times4\),暴力求全排列即可(第一次写暴力全排列思索了一会复杂度#include<bits/stdc++.h>usingnamespacestd;#definepiipai......
  • The 2024 CCPC Online Contest
    Preface最唐氏的一集,这场现场打的时候中间出现了“消失的150min”很难相信在93min过了D之后下一次过题要等到241min过E,虽然后面全力追赶最后也是出了9题,但罚时也是突破天际,险些拿下同题数罚时倒一后面分析了下最大的原因就是我比赛的时候想不出E导致心态崩了没法正......
  • The 2020 ICPC Asia Shenyang Regional Programming Contest
    D-JourneytoUn'Goro记\(p_i\)表示前缀\(i\)中\(\mathrmr\)的个数。则题目要求的是\(p_r-p_{l-1}\)为奇数最多有多少对。显然应该越平均越好。\(p_i\)总共有\(n+1\)个,则奇偶数的数量均不超过\(m=\left\lceil\frac{n+1}{2}\right\rceil\),答案就是\((n+1-m)\time......
  • AtCoder Beginner Contest 370 补题记录
    A-RaiseBothHands题意:给出Snuke举的左右手情况,如果只举左手,输出Yes,如果只举右手,输出No,否则输出Invalid思路:举左手:(l==1&&r==0)举右手:(l==1&&r==0)其他情况都是Invalidvoidsolve(){intl=read(),r=read();if(l==1&&r==0){......
  • 2016 ACM/ICPC Asia Regional Qingdao Online(SDKD 2024 Summer Training Contest H2)
    A-ICountTwoThree题意给定n,求第一个\(\ge\)n的数k,且k=\(2^a3^b5^c7^d\)。思路考虑到样例很多,直接打表存入set省去数组排序操作,由于n$\le$1e9,所以只需要打到1e9后二分即可。(记得加上快读快写,T得饱饱的......
  • Contest7685 - 综合训练-105
    题目按难度顺序排序。C合体原题:P3147[USACO16OPEN]262144P\(O(n\times(V+\logn))\)TODO:\(O(n\logn)\)TODO:\(O(n)\)TODO:A迷宫设计注意到题目是特殊性质的最小生成树问题。直接Kruskal能获得没有什么分数的好成绩。注意到,根据Kruskal算法的过程,每次选......
  • The 2024 CCPC Online Contest
    B-军训II题意n个人,第i个人身高为\(a_i\),定义不整齐度为所有区间的身高极差之和。求不整齐度的最小值以及现在的排列方案数。不整齐度:\(\sum_{l=0}^n\sum_{r=l}^nmax(a_{pl}+a_{pl+1},···,+a_{pr})-min(a_{pl}+a_{pl+1},···,+a_{pr})\)思路按身高排......
  • The 2024 CCPC Online Contest
    目录写在前面LKBDEJIGC写在最后写在前面补题地址:https://codeforces.com/gym/105336以下按个人向难度排序。唉唉唐吧真是我去居然还能打出名额哈哈真牛逼L签到。K签到。dztlb大神直接秒了。显然奇数先手取1必胜,则偶数时为了让自己不输,先手和后手均会保证在取到2之......