首页 > 其他分享 >ABC379

ABC379

时间:2024-11-11 21:12:17浏览次数:1  
标签:10 cn int cin long qzh ABC379

C

link

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

#define int long long

using namespace std;

int n,m;
struct nd{
	int x,a;
}y[200005];
int qzh;
int ans;

bool cmp(nd l,nd r){
	return l.x < r.x;
}

signed main(){
	
	cin >> n >> m;
	for(int i = 1;i <= m;++ i)
		cin >> y[i].x;
	for(int i = 1;i <= m;++ i)
		cin >> y[i].a,qzh = qzh+y[i].a;
	sort(y+1,y+1+m,cmp);
	
	y[m+1].x = n+1;
	
	if(qzh != n){
		cout << -1;
		return 0;
	}
	if(y[1].x != 1){
		cout << -1;
		return 0;
	}
	
	for(int i = 1;i <= m;++ i){
		int gs = y[i+1].x-1-y[i].x;
		ans += (1+gs)*gs/2;
		gs = y[i].a-gs-1;
		if(gs < 0){
			cout << -1;
			return 0;
		}
		ans += gs*(y[i+1].x-y[i].x);
		y[i+1].a += gs;
	}
	
	cout << ans;
	
	return 0;
	
}

D

link

其实\(10^{100}\)个花瓶并没有用,只是告诉你花瓶够用。
对于每一个花瓶,我们记录是在哪一个时刻种上的并用小根堆维护种上的时刻并记录当前时间即可做这三种操作。
第一种操作:新增一个时刻。
第二种操作:时间戳增加。
第三种操作:因为是小根堆,所以可以取出时间最小的(但由于一定是按时间顺序加入的,所以其实数组也行),判断一下时间最小的是否够了高度,即和当前时间的差是否大于要求高度,如果符合,收获这个,弹出,再找最小的。

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

#define int long long

using namespace std;

int q,t;
priority_queue<int,vector<int>,greater<int> > h;

signed main(){
	
	cin >> q;
	
	while(q--){
		int op,x;
		cin >> op;
		if(op == 1) h.push(t);
		else if(op == 2){
			cin >> x;
			t += x;
		}
		else if(op == 3){
			cin >> x;
			int g = t-x,ans = 0;
			while(!h.empty()){
				int w = h.top();
				if(w <= g) h.pop(),ans++;
				else break;
			}
			cout << ans << endl;
		}
	}
	
	return 0;
	
}

E

link

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

using namespace std;

int n;
char s[200005];
long long qzh;
long long x[3000005],cn;

signed main(){
	
	cin >> n >> s+1;
	
	for(int i = 1;i <= n;++ i)
		qzh += (s[i]-'0')*i;
	
	for(int i = n;i >= 1;-- i){
		x[++cn] = qzh;
		x[cn] += x[cn-1]/10;
		x[cn-1] %= 10;
		qzh -= (s[i]-'0')*i;
	}
	
	while(x[cn] >= 10){
		cn++;
		x[cn] += x[cn-1]/10;
		x[cn-1] %= 10;
	}
	
	for(int i = cn;i >= 1;-- i)
		cout << x[i];
	
	return 0;
	
}

标签:10,cn,int,cin,long,qzh,ABC379
From: https://www.cnblogs.com/wmmdbk/p/18540561

相关文章

  • ABC372D ABC379F 题解 单调栈二分
    ABC372DABC379F题解单调栈二分一直觉得AT上面学到的东西比CF要多一些,无意捧一踩一,但可能是我太菜的原因,毕竟ABC的题目普遍要比Div.2简单一些。好多次碰到这个单调栈里面二分的trick了,所以写一篇来总结一下。ABC372D形象地给定一系列Buildings的高度\(h\),保证每个......
  • ABC379E 题解
    ABC379E题解一道很好的题,开始还以为是高精度来着,但是发现不必要也不能用高精度,而是用一种技巧代替。题意Youaregivenastring\(S\)oflength\(N\)consistingofdigitsfrom1through9.Foreachpairofintegers\((i,j)\(1\leqi\leqj\leqN)\),define\(f(......
  • 题解:[ABC379D] Home Garden
    [ABC379D]HomeGarden题意:开始有一个空集,有\(Q\)次操作,每次有标识数\(op\):若\(op\)为\(1\):为集合添加一个元素\(0\)。若\(op\)为\(2\):输入\(T\),为集合内所有元素增加\(T\)。若\(op\)为\(3\):输入\(H\),删除集合内不小于\(H\)的元素,并输出删除元素个数。......
  • 题解:AT_abc379_e [ABC379E] E - Sum of All Substrings
    很水的一道题。我们先把题目上各地的数字看成一个序列,然后考虑计算该序列分别会对答案的每一位产生多少贡献。具体的,我们从后往前考虑答案的每一位。通过简单推演可知,设你当前考虑到答案的第\(i\)个数字,那么原序列对这一位的贡献为\(\sum_{j=1}^{n-i+1}a_j\timesj\)。这个......
  • 题解:AT_abc379_d [ABC379D] Home Garden
    难度严格小于C题。你考虑每盆花被种植的时间一定单调不降,这启示我们去用二分。具体的,我们用一个数组\(a\)表示当前所有的花的种植时间,并记录一个当前时间\(t\)。对于每个1操作都在数组后面加上个元素\(t\),对于\(2\)操作让\(t\leftarrowt+T\)。对于操作3,能够摘取的......
  • AT_abc379_g
    过于一眼的轮廓线dp。兼纪念abc首场无伤AK。首先我们可以经过缜密的计算的得到矩形的宽不超过\(14\)。然后现在你有\(4\)个数(边界视作\(0\))。不难想到\(4\)进制状压轮廓线dp。轮廓线dp状压dp的一种,轮廓线是分隔已处理部分与未处理部分的线。在本题中,轮廓线......