ICPC 山东省省赛刷题 浙江农林大学第二十二届程序设计竞赛(同步)牛客 CEJ题解

C 瓜瓜喜欢做 A + B

题意:n*m的网格,给你k次染色的机会,每次染色都可以选择一个点,把这个点所在的行和列染上ci的颜色,ci互不相同。

分析:每次染的格子数都是n*m-1,最后一次染色的颜色面积不被覆盖,一定最大。

题解:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n, m, k;
	cin >> n >> m >> k;
	int a,b,c;
	for(int i=0;i<k;i++)
	{
		cin >> a >> b >> c;
	}
	cout << n+m-1 << " " << c;
	return 0;
}

E 瓜瓜不想上电工课

题意:n个二极管灯泡串联,灯泡的正向和反向电阻不同,首先灯泡是正向连接的,可以至多进行k次操作,操作可以反转灯泡,求总电阻的最小值。

分析:求正反电阻的差,排序,调换至多k次使总电阻变小。

题解:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100010];
ll b[100010];
ll c[100010];
ll s;
int main()
{
	ll n, k;
	cin >> n >> k;
	for(ll i=1;i<=n;i++)
	{
		cin >> a[i];
		s += a[i];
	}
	for(ll i=1;i<=n;i++)
	{
		cin >> b[i];
		c[i] = b[i]-a[i];
	}
	sort(c+1,c+n+1);
	for(ll i=1;i<=k&&i<=n;i++)
	{
		if(c[i]>=0) break;
		s += c[i];
	}
	cout << s << endl;
	return 0;
}

J 策策学长找py

题意:n*m的网格里有很多碎片,学长从(1,1)出发只能往下和往右走,问能否拿到所有的碎片。

分析:把碎片坐标排序,如果后一个碎片在这个碎片的左边或者上边,就no。

题解:

#include<bits/stdc++.h>
using namespace std;
struct ff{
	int x, y;
};
ff a[200010];
bool cmp(ff a, ff b)
{
	if(a.x == b.x)
	return a.y < b.y;
	return a.x < b.x;
}
int main()
{
	int t;
	cin >> t;
	while(t--)
	{
		int n, m, k;
		cin >> n >> m >> k;
		for(int i=0;i<k;i++)
		{
			cin >> a[i].x >> a[i].y;
		}
		sort(a,a+k,cmp);
		bool f = 1;
		for(int i=1;i<k;i++)
		{
			if(a[i].x<a[i-1].x||a[i].y<a[i-1].y)
			{
				f = 0;
				break;
			}
		}
		if(f) cout << "YES\n";
		else cout << "NO\n";
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三元湖有大锦鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值