首页 > 其他分享 >CF276C Little Girl and Maximum Sum 题解

CF276C Little Girl and Maximum Sum 题解

时间:2023-08-17 23:12:52浏览次数:38  
标签:Little ch read 题解 Sum long write int void

题目链接

题目大意

通过修改序列 \(a\) 中的数的顺序,使

\[\sum_{i=1}^q\sum_{j=l}^ra[j] \]

最大,并输出它的值。

思路

一道简单贪心 \(+\) 差分,通过差分的优秀的 \(O(1)\) 区间修改能力帮助我们求出每个位置在询问中询问的次数,进行排序,最后次数较多的就让值较大的数来,以此类推。

AC Code

#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+10;
long long n,q,a[MAXN],b[MAXN],s[MAXN];
long long  sum;
template <typename T> inline void read(T &in) {
	in=0;int fh=1;char ch=getchar();
	while(!isdigit(ch)) {
		if(ch=='-') fh=-1;
		ch=getchar();
	}
	while(isdigit(ch)) in=(in<<1)+(in<<3)+(ch^48),ch=getchar();
	in*=fh;
}
template <typename T,typename... Ts> inline void read(T &in,Ts&... ins) {read(in),read(ins...);}
template <typename T> inline void write(T out) {
	static char str[20];int top=0;
	if(out<0) putchar('-'),out-=2*out;
	do{str[++top]=out%10+48,out/=10;} while(out);
	while(top) putchar(str[top--]);
	putchar('\n');
}
template <typename T,typename... Ts> inline void write(T out,Ts... outs) {write(out),write(outs...);}
int main(){
	read(n,q);
	for(int i=1;i<=n;i++) read(a[i]);
	while(q--){
		int l,r;
		read(l,r);
		b[l]++;
		b[r+1]--;
	}
	for(int i=1;i<=n;i++) s[i]=s[i-1]+b[i];
	sort(a+1,a+n+1);
	sort(s+1,s+n+1);
	for(int i=1;i<=n;i++) sum=sum+(a[i]*s[i]);
	cout<<sum;
	return 0;
}

标签:Little,ch,read,题解,Sum,long,write,int,void
From: https://www.cnblogs.com/CodeFishHp/p/17639150.html

相关文章

  • CF1769B1 Копирование файлов I 题解
    题目链接题目大意从小到大输出满足\(\frac{100\timesx}{a_i}=\frac{100\times(\sum_{j=1}^{i-1}a_j+x)}{\suma_j}\)时它们的值。思路看到数据范围\(n\leq100\),考虑暴力枚举传输每一个字节时的情况,判断\(a\)和\(b\)的值是否相等即可。对于答案,我们使用set来储......
  • SP8591 PRIMPERM - Prime Permutations 题解
    题目链接题目大意给出\(1\)个数\(n\),求\(n\)的各位拆分后重新排列组合得到新数是质数的个数。思路(欧拉筛,全排列)对于求质数,与其每组数据运行\(1\)次质数筛,不如在一开始就筛出\([1,10^7]\)内的所有质数,用bool数组统计起来,这样只需运行\(1\)次质数筛,大大节约了时间......
  • P9518 queue 题解
    题目传送门思路一道稍稍有点复杂的模拟好题。本题的关键性就在于需要实现的leave函数必须支持任意位置的删除,任意元素的查询,这对于queue或是deque是十分不利的。故本题使用另外一种STL:list实现。但是,list的查询其实也是比较耗费时间的,那么我们可以使用\(Map\)来......
  • AT_abc182_e [ABC182E] Akari题解
    题目链接思路说实话,这道题其实算模拟,还是挺简单的那种。我们可以定一个int类型的二维数组,表示网格。通过不同的数字来表示该方格内不同的类型。然后,使用枚举法模拟网格内灯泡从上、下、左、右四个方向模拟光线的运动过程,在过程中增加可被照射到的格子数量,最后输出即可。坑点......
  • SP1837 PIE - Pie 题解
    题目链接思路一道简单二分答案题。对于每个确定的派的体积,设置左边界\(l\)、右边界\(r\)和尝试值\(mid\),用\(\operatorname{check}\)函数返回在每份有\(mid\)那么多派的情况下,可以分成几份。将这些结果加起来,与应分人数进行比较,如果份数小于人数,证明每一份分的太多了,将......
  • 【leetcode】1.two sum
    第一题给我干懵了...想达到这个要求把我脑壳都想痛了...Follow-up:CanyoucomeupwithanalgorithmthatislessthanO(n2)timecomplexity?一开始想过用map,但是不能解决重复key的问题。然而我用sort,这个时间复杂度也不好确定。假装我只用了O(n)!(搓手手)(溜走)xxxclassSol......
  • CF1762D GCD Queries 题解
    题面给定一个长度为\(n\)的排列\(0,1,\cdots,n-1\)。可以进行最多\(2n\)次询问,每次询问给出两个下标\(i,j\),交互器会返回\(\gcd(p_i,p_j)\)。询问以后,需要输出两个下标\(x,y\),满足\(p_x=0\lorp_y=0\)。特别地,\(\gcd(0,x)=x\)。题解观察次数限制,我们......
  • 题解 石头剪刀布
    plaesekillme.&&don'tforgetme.题目描述给定\(n\)个字符串\(s_i\)只包含0,1,2,现在要捏一个序列\(A\),\(s_i\)表示\(a_i\)可以捏成什么。1,2,3形成环形吊打关系,\(\omega(X)\)表示序列\(X\)最长的吊打子序列,吊打序列指的是对于\(a_{p_1},\dots,a_{p_k}\),除了......
  • CF1787E The Harmonization of XOR 题解
    CF1787ETheHarmonizationofXOR题目大意给定\(n\)个数\([1,2,3,\cdots,n]\)和两个正整数\(k\)和\(x\)。将这些数分成恰好\(k\)组使得每组的异或和都是\(x\)。(\(1\lek\len\le2\cdot10^5,1\lex\le10^9\))。题解首先,我们知道,如果我们无法从\(n\)......
  • CF1787E The Harmonization of XOR 题解
    题面将集合\(\left\{1,2,\cdots,n\right\}\)划分为\(k\)个非空不交子集,使得每个子集的异或和均为\(x\)。(\(1\len,k\le2\times10^5\))。题解首先显而易见的判断一下无解的情况,记\(sum=\bigoplus\limits_{i=1}^{n}i\),如果\(k\)为奇数但\(sum\neqx\)或......