首页 > 其他分享 >CF1859B 题解

CF1859B 题解

时间:2023-08-14 16:26:11浏览次数:42  
标签:mins minn int 题解 long 数组 ans CF1859B

题意

给定 \(n\) 个长度为 \(m\) 的数组,每个数组可以向别的数组转移最多一个数字,任意一个数组都可以接受无穷多的数字,最大化每个数组的最小值之和。

做法

考虑贪心。

我们记第 \(i\) 个数组的第 \(j\) 个数字为 \(a_{i, j}\)。

我们先对每一个数组按照升序进行排序,那我们最不愿意看到的就是 \(a_{i, 1}\),因为整个数组的最小值取决于 \(a_{i, 1}\)。

那我们就把 \(n\) 个数组的最小值全部转移到一个数组里面去,假如这个“受害者”是第 \(r\) 个数组 \(a_r\),让它保存所有的最小值 \(a_{i, 1}\)。

这样就让除 \(a_r\) 以外的数组的第 \(2\) 项 \(a_{i, 2}\) 重见光明。

那我们也要榨干第 \(2\) 项,所以我们选择第 \(2\) 项最小的数组作为 \(a_r\)。

最后计算结果为 \(\min\limits_{i = 1}^{n}a_{i, 1} + \sum\limits_{i = 1}^{sz[i]}[i \ne r]a_{i, 2}\)。

可以证明这是最优解。

代码

注意要开 long long

#include <bits/stdc++.h>

#define int long long

using namespace std;

const int N = 25010;

int n;
vector<int> a[N];

void solve() {
	cin >> n;
	int minn = 0x3f3f3f3f3f3f3f3f, mins = 0x3f3f3f3f3f3f3f3f, ans = 0;
	for (int i = 1; i <= n; i++) {
		int sz;
		cin >> sz;
		a[i].resize(sz);
		for (int& x : a[i]) cin >> x;
		sort(a[i].begin(), a[i].end());
		minn = min(minn, a[i][0]);
		mins = min(mins, a[i][1]);
		ans += a[i][1];
	}
	ans += minn;
	ans -= mins;
	cout << ans << '\n';
}

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

标签:mins,minn,int,题解,long,数组,ans,CF1859B
From: https://www.cnblogs.com/Yuan-Jiawei/p/17628996.html

相关文章

  • 【题解】 Call Me Call Me CCPC Mianyang 2022
    https://codeforces.com/gym/104065/原题做法是类似猫树转成前缀后缀,写起来太麻烦,不如如下做法:如果每个区间所需满足的点不超过\(\sqrt{n}\)个,即可以如下暴力:把每个区间拍到线段树上,每次更新一个点,则在线段树上把所有包含他的区间全部\(-1\)看看是否减到了\(0\),拿个队列一......
  • 问题解答:关于 SAP UI5 控制器(Controller) JavaScript 编码里单引号和双引号的用法澄
    笔者这篇教程文末,有朋友提问:SAPUI5应用开发教程之十-什么是SAPUI5应用的描述符文件manifest.json问题1:在index.html文件中body标签添加了代码:<divdata-sap-ui-componentdata-name="sap.ui5.walkthrough"data-id="container"data-settings='{"id":"wa......
  • ARC129C 题解
    problem&blog。提供一种不一样的做法喵。考虑原问题的逆问题。这个很典,直接前缀和\(sum_i\)表示\([1,i]\)顺次拼接的数\(\bmod7\)的值,那么\([l,r]\)符合条件当且仅当\(sum_r-sum_{l-1}=0\),即\(sum_r=sum_{l-1}\)。设\(c_p=\sum\limits_{i=1}^n[sum_i=p]\),这个逆......
  • 【题解】洛谷 P9532 [YsOI2023] 前缀和
    原题链接【LGR-151-Div.2】洛谷8月月赛II&YsOI2023T1解题思路设有一序列a,其中a1 =a2,第k(≥3) 项为前k-1项的前缀和。可以发现前q项分别为第一项的20 倍,20 倍,21 倍,22 倍,23 倍…2q-3 倍,2q-2 倍。扩展到整个序列中,可得第i( ≥ 3)项一定为2i-2a1。......
  • 【LSOIT1】秒速,五厘米 ----题解
    【LSOIT1】秒速,五厘米----题解题目传送门【明里。】【贵树君。】【明年,也能一起看樱花吗?】【昨天,我做了一个梦,在梦里,我们都才十三岁。那是覆盖着厚厚的一层白雪的田园。】【民家的灯火遥不可及,只能看到零星的两点。】很显然,这是一道签到题,出题人非常良心。题目大意:从......
  • 【LSOIT2】言叶之庭 ---题解
    【LSOIT2】言叶之庭---题解题目传送门【你肯定怀疑我有问题吧。】【没有。】【我不介意呀,反正人类,多多少少有点不正常的。】【我知道这不正常,但真的很喜欢设计鞋子,当然,水平还不够。】【不知不觉,我都在期待雨天。晴天里,总觉得被困在孩子气里的世界,焦虑无比。】【在我看来......
  • 【LSOIT3】天气之子 ---题解
    【LSOIT3】天气之子---题解题目传送门【我叫阳菜。请多关照,帆高。】【她一直不断的祈祷着,一边不断地穿过那个鸟居。】【我做了个梦,初见你时,就像是迷途的小猫一样。】【而你却帮我找到了存在的意义。】【呐,马上要开始放晴了哦。】这个题其他做法不知道怎么搞,暴力的话也不......
  • 洛谷P9533 区间翻转区间异或和 题解
    原题:洛谷P9533一道性质题不难发现,区间翻转操作是没有用的(虽然比赛的时候想了好久www)首先,区间翻转要想对答案有贡献,一定是下边这种情况:三个连续的区间:\(A~|~B~|~C\)满足:\(B\oplusC=0,A\oplusC=0\)。将\(B∪C\)这个灵异区间进行翻转,使\(A\)和\(C\)合并到一起,会增加一......
  • 【题解】Educational Codeforces Round 146(CF1814)
    而且怎么感觉E,F比D要简单很多,大概是因为比较套路吧[惊恐]A.Coins题目描述:本题一共有\(t\)组数据。每组数据包含两个整数\(n\)和\(k\),如果存在两个非负整数\(x,y\),满足\(2\timesx+k\timesy=n\),输出YES,否则输出NO(yes,Yes,NO,nO均可)。题目分析:注意到\(y\)可......
  • CF992E 题解
    CF992E题解传送门更好的阅读体验简化题意:单点修改,设序列的前缀和序列是$s_i$,查询是否存在一个$i$满足$a_i=s_{i-1}$。思路:观察满足条件的数的个数。在不考虑$0$的情况下,如果一个$a_i$满足条件,那么对于一个比他小的满足条件的数$a_j$,一定会有$a_j=s_{j-1}$,而$......