前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Codeforces Round #559

Codeforces Round #559

作者头像
用户2965768
发布2019-06-14 20:50:39
3080
发布2019-06-14 20:50:39
举报
文章被收录于专栏:wym

A.有加才减

代码语言:javascript
复制
//A 
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	string s;
	cin>>n;
	cin>>s;
	int ad = 0,sub = 0;
	for(int i=0;i<s.size();i++){
		if(s[i]=='+'){
			ad++;
		}else {
			if(ad>0){
				ad--;
			}
		}
	}
	printf("%d\n",ad);
	return 0;
}

B.

代码语言:javascript
复制
//B
#include <bits/stdc++.h>
using namespace std;
int mi = 1e9+1;
int  main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int t;
		scanf("%d",&t);
		mi = min(mi, t/max(i-1,n-i));
	}
	printf("%d\n",mi);
	return 0;
 } 

C.

n个男生给m个女生每人都送糖果,

接下来n个数a1~an是男生送出的最小数量,然后是m个 b1~bm 是女生收到的最大数量。

问最少多少糖果。

解:

    先假设男生送给女生每个人都是最小的,则ans = sum(a1~an)*m.

再补偿差距  = bj  -  ai.   补偿尽可能少,bj是不变的,ai就尽可能大。将n个数排序,从最大的a1开始每个可以补偿m-1次。

因为要保证本身最小为ai。

  若有bj<amax,则输出-1

代码语言:javascript
复制
//559 C
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1000005;
ll n,m;
ll a[N],b[N];
int cmp(int c,int d){
	return c>d;
}
int main()
{
	ll ans = 0;
	ll sum = 0;
	int flag = 0;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>a[i];
		sum+=a[i];
	}
	ans = sum*m;
	sort(a,a+n,cmp);
	int j = 0;
	int count = m-1;
	for(int i =0;i<m;i++){
		cin>>b[i];
		if(b[i]>a[0]){
			ans+=b[i]-a[j];
			count--;
			if(count==0){
				j++;
				count = m-1;
			}
			
		}else if(b[i]<a[0]){
			flag = 1;
		}
	}
	if(flag)printf("-1\n");
	else printf("%I64d\n",ans);
	
	return 0;
} 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年05月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档