首页 > 其他分享 >「模拟赛」暑期集训CSP提高模拟14(8.6)

「模拟赛」暑期集训CSP提高模拟14(8.6)

时间:2024-08-07 20:28:44浏览次数:16  
标签:14 val 8.6 int ll long 模拟 烙板 张饼

A.BA 100pts

开场 \(3min\) 先打了个假做法向上取整求平均数,细看看到了 一张饼一个单位时刻只能在一张烙板上 这句话,重新想,困得要死,\(40min\) 才做完。

题意:

现在有 \(n\) 块烙板,\(m\) 张饼,第 \(i\) 张饼有 \(a_i\)​ 个面。
烙板一单位时刻可以烙熟一个面,一张饼一个单位时刻只能在一张烙板上,问都烙熟所需最少时间。

正解:

因为上文那句话的限制所以不能直接求总面数除以烙板数(向上取整)求平均数,根据该限制我们可以得到需要的时间至少为一张饼最多的面数(设为 \(t\) )。

那么我们先假设答案为 \(t\),此时可以理解为是面数最多的那张饼自己占了一个烙板 \(t\) 个时间,那么判断剩下 \((n-1)\) 张饼在 \(t\) 个时间内用 \((m-1)\) 个烙板是否可以完全烙熟。

这 \((n-1)\) 张饼中任意一张的面数都是小于等于 \(t\) 的,所以不再受那句话来限制,可以直接算 \((n-1)\) 张饼的总面数与 \((m-1)\) 作比,结果小于等于 \(t\) 则满足要求,答案为 \(t\);否则 \(t\) 不够用。

\(t\) 不够用的时候,我们算一下 \(t\) 时间内没烙到的面数与总烙板数 \(m\) 的比值,加上 \(t\) 即为答案。

code:

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

const int N = 1e6 + 10;

int n, m, a[N], cnt[N];

int main(){
	// freopen("in.in", "r", stdin); freopen("out.out", "w", stdout);
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

	cin>>n>>m; ll sum = 0;
	for(int i=1; i<=n; i++){
		cin>>a[i]; sum += a[i];
	}
	sort(a+1, a+1+n);

	if(n <= m) cout<<a[n];
	else{
		if(sum - a[n] < (ll)a[n] * (m - 1)) cout<<a[n];
		else{
			sum -= (ll)a[n] * m;
			cout<<(sum+m-1)/(ll)m+a[n];
		}
	}

	return 0;
}

B.BB 5pts

原题 THUPC 2023

题意:

luv...

正解:

见官方题解:

排序后 A 和 B 按排序一人取一个,算 A 的话,就是隔一个取一个。

code:

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

const int N = 2e5 + 10;

int n, w[N], A;
int dep[N], size[N];
ll val[N];
vector<int>to[N];

void dfs(int rt, int p){
	dep[rt] = dep[p] + 1, size[rt] = 1;
	for(int i=0; i<to[rt].size(); i++){
		int y = to[rt][i];
		dfs(y, rt);
		size[rt] += size[y];
	}
	val[rt] = size[rt] - dep[rt] - w[rt];
}

int main(){
	// freopen("in.in", "r", stdin); freopen("out.out", "w", stdout);
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

	cin>>n;
	for(int i=1; i<=n; i++) cin>>w[i];
	for(int i=2; i<=n; i++){
		int p; cin>>p;
		to[p].push_back(i);
	}

	dfs(1, 0);

	sort(val+1, val+1+n);

	ll ans = 0;
	for(int i=n; i>=1; i-=2){
		ans += val[i];
	}
	cout<<ans;

	return 0;
}

剩下未改

标签:14,val,8.6,int,ll,long,模拟,烙板,张饼
From: https://www.cnblogs.com/YuenYouth/p/18347846

相关文章

  • 转发wsa和安卓模拟器网络
    adb连接上设备后,执行执行端口转发adbforwardtcp:6789tcp:888'就可以了,把设备的8888端口转发到本机6789,本机postman之类直接访问127.0.0.1:6789即可其他笔记:连接wsa:adbconnect127.0.0.1:58526连接安卓模拟器:adbconnectemulator-5554安装appadb-s127.......
  • 『模拟赛』暑假集训CSP提高模拟15
    Rank小寄一手A.串串原[THUPC2018]绿绿和串串一眼manacher,但是当时虚空了没搞懂,只打了暴力(还挂分了稍微学了一下,板子很短,主要依据是可以通过一个已经确定的与目前最长回文串的中心对称的半径来预先确定目标点最短的回文半径长度,从而优化复杂度达到线性。manacher主要......
  • 2024.8.7 模拟测
    A(P7968[COCI2021-2022#2]Osumnjičeni)考虑对于一次询问直接从左往右划分段,直至当前加入的人与前面某个人的身高有交集,则新开一个段。设\(nx_i=j\)表示从第\(i\)个人开始划分,要到第\(j\)个人才会出现冲突(若永远不会冲突则让\(nx_i=n+1\))。一次询问相当于初始时让......
  • 蒙特卡洛模拟(6)————旅行商问题
    旅行商问题(TravelingSalesmanProblem,TSP)是一个经典的组合优化问题。经典的TSP可以描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。目录一、问题提出二、代码预备1.plot([a,b],[c,d])2.r......
  • P10814 【模板】离线二维数点
    原题链接题解对于一段区间\([l,r]\)我们可以在\(r\)的位置查询一次,然后利用差分的思想跑到l-1再查一次虽然这样不行,但是可以先在\(l-1\)的位置查询一次,然后再在\(r\)的位置查询一次,然后顺序遍历,每次遍历就把对应位置上的数激活,可以用树状数组code#include<bits/stdc+......
  • 使用Streamlit构建一个web模拟HTTP请求工具
    目录前言HTTP工具功能点:1.导入库: 2.设置页面配置:3.Markdown格式的说明文本:4.用户输入界面:5.发送请求按钮和逻辑:6.发送HTTP请求并计算请求细节:7.总结 前言    最初就是因为在微信看到一篇文章中,看到此http工具的制作因为觉得Streamlit有无限......
  • 洛谷P1480 A/B Problem
    4.高精度除以低精度题目叙述:A/BProblem题目描述输入两个整数\(a,b\),输出它们的商。输入格式两行,第一行是被除数,第二行是除数。输出格式一行,商的整数部分。样例#1样例输入#1102样例输出#15提示\(0\lea\le10^{5000}\),\(1\leb\le10^9\)。代码本题为高精......
  • leetcode 1486. 数组异或操作 https://leetcode.cn/problems/xor-operation-in-an-arr
    1486.数组异或操作题目描述给你两个整数,n和start。数组nums定义为:nums[i]=start+2*i(下标从0开始)且n==nums.length。请返回nums中所有元素按位异或(XOR)后得到的结果。示例示例1:输入:n=5,start=0输出:8解释:数组nums为[0,2,4,6,8],其中(0^......
  • [赛记] 暑假集训CSP提高模拟15
    原题还是没找串串49pts用的$manacher$,板子差点没打对,但好歹还是打对了。。。赛时写的时候没有考虑到不用管偶回文,导致递归的时候有点问题。。。其实根本用不到递归,将循环顺序改为倒序即可;有三种情况:回文半径+位置能够到达右端点;显然,这种情况是合法的;既到不了左......
  • nextjs14 跨域该如何处理
    nextjs官方地址next.config.js和next.config.mjs他有什么区别next.config.js:使用的是CommonJS模块系统。这是Next.js默认的配置文件格式,也是大多数情况下使用的格式。使用require语法导入模块,使用module.exports导出对象。next.config.mjs:使用的是ESMod......