Codeforces Round #594 (Div. 2)

本文详细解析了Codeforces Round #594 (Div. 2)的六道编程题目,包括整数交点计算、木棍摆放策略、矩阵合法性、括号序列优化、火车接水队列模拟以及猫的选美比赛的解决方案。
摘要由CSDN通过智能技术生成


Codeforces Round #594 (Div. 2)

A. Integer Points

有一个长度为n的序列p1,p2…pn,代表n条直线 y=x+pi
有一个长度为m的序列q1,q2…qm,代表m条直线 y=-x+qi
问这n+m条直线之间有多少个整数交点。


题解:

y = x + p i y=x+pi y=x+pi                     y = ( p i + q i ) / 2 y=(pi+qi)/2 y=(pi+qi)/2
                           − > - > >
y = − x + q i y=-x+qi y=x+qi                  x = ( p i − q i ) / 2 x=(pi-qi)/2 x=(piqi)/2
所以找到 p i pi pi q i qi qi同奇同偶的对数即可


#include <bits/stdc++.h>
using namespace std;
int a[1000010],h1[2],h2[2],b[10000010];
int main()
{
   
	int n,T,i,m;
	scanf("%d",&T);
	while(T--)
	{
   
		scanf("%d",&n);
		h1[0]=h1[1]=h2[0]=h2[1]=0;
		for(i=1; i<=n; i++) scanf("%d",&a[i]),h1[a[i]%2]++;
		scanf("%d",&m);
		for(i=1; i<=m; i++) scanf("%d",&b[i]),h2[b[i]%2]++;
		long long ans=0;
		ans=1ll*h1[0]*h2[0]+1ll*h2[1]*h1[1];
		printf("%lld\n",ans);
	}
	return 0;
}


B. Grow The Tree

有n个木棍,从(0,0)点开始,每次你可以选一根木棍平行于x轴或y轴的摆,但不能有连续两个或以上的木棍是选择同一状态的(只能横竖横竖或竖横竖横地摆)。每次木棍摆的起始位置是上一根木棍的结束位置,问最后一条木棍的终点距离(0,0)点最远的距离的平方最大是多少。


题解:
  • 需要将两个部分和的差值尽可能大
    • 若n为偶数,则两个部分刚好为前 n / 2 n/2 n/2小的数,后 n / 2 n/2 n/2大的数
    • 若n为奇数,则两个部分为前 ( n − 1 ) / 2 (n-1)/2 (n1)/2小的数,后 ( n + 1 ) / 2 (n+1)/2 (n+1)/2大的数

#include <bits/stdc++.h>
using namespace std;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值