Codeforces Round #594(Div.2.ABC)

A

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述把求x的方程列出来后,可以发现实际上看的是奇偶性
奇偶性相同则为整数点,不同则不是整数点
代码如下

#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
 ios::sync_with_stdio(false);
 int t;
 for(cin >> t;t--;)
 {
  int n,x;
  int a1,a2,b1,b2;
  a1 = a2 = b1 = b2 = 0;
  for(cin >> n;n-- && cin >> x;)
   	if(x & 1)
    	a1++;
   else
    	a2++;
  for(cin >> n;n-- && cin >> x;)
   	if(x & 1)
   	b1++;
   else
    	b2++;
  cout << a1 * b1 + a2 * b2 << endl;
 }
}

B

在这里插入图片描述
在这里插入图片描述

这道题为了使答案最大,应该让树枝沿一个方向排布
所以将最长的一半的树枝放在一个方向,
将最短的一半的树枝放在其相对的方向
奇数棍子则把中位数放在最长的方向
代码如下

#include <iostream>
#include<algorithm>
#include <cmath>
#define int long long
using namespace std;
int n,a[1234567];
signed main()
{
 ios::sync_with_stdio(false);
 cin >> n;
 for(int i = 1;i <= n;i++)
  cin >> a[i];
 sort(a + 1,a + n + 1);
 int x = 1,sum = 0,sum2 = 0;
 for(int i = n;i >= x;i--)
 {
  sum += a[i];
  if(x != i)
   sum2 += a[x++];
 }
 cout << sum * sum + sum2 * sum2 << endl;
}

C

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述当时做的时候感觉没有思路
后来发现第一行如果严格黑白相间,
整个涂色方案全由第一列决定
如果第一行不是严格黑白相间,
整个涂色方案直接由第一行决定
代码如下

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e6 + 2,D = 1e9 + 7;
int f[N][3];
signed main()
{
 int n,m;
 cin >> n >> m;
 f[1][0] = 2;
 for(int i = 2;i <= max(n,m);i++)
  (f[i][0] = f[i - 1][0] + f[i - 1][1]) %= D, f[i][1] = f[i - 1][0];
 cout << (f[n][0] + f[n][1] + f[m][0] + f[m][1] - 2 + D) % D << endl;
 return 0;
}
发布了11 篇原创文章 · 获赞 0 · 访问量 188

猜你喜欢

转载自blog.csdn.net/YeHosea/article/details/102691313