Codeforces Round 945 (Div. 2) A~E

A. Chess For Three (思维)

题意:

三个人在一起下棋。每盘棋都有两个人对弈。胜者得 222 分,负者得 000 分,如果和棋,双方各得 111 分。请注意,同一对棋手可能下过任何次数的非负数(可能为零)。也有可能根本没有下过棋。下完所有棋局后,他们的得分分别是 p1p_1p1p2p_2p2p3p_3p3 。此外,可以保证 p1≤p2≤p3p_1 \leq p_2 \leq p_3p1p2p3 成立。
找出可能发生的最大和棋次数,如果无解则输出 −1-11

分析:

三个人每局对总分数的贡献都是偶数,所以最后分数总和一定是偶数。如果a+b≥ca+b \ge ca+bc,那么可以找到一种方法平局(a+b+c)/2(a+b+c)/2(a+b+c)/2次。否则最多平局a+ba+ba+b次。

代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
   
   
    int t;
    cin >> t;
    while (t--) {
   
   
        int a, b, c;
        cin >> a >> b >> c;
        int s = a + b + c;
        if (s % 2)
            cout << -1 << endl;
        else
            cout << min(s / 2, a + b) << endl;
    }
    return 0;
}

B.Cat, Fox and the Lonely Array (位运算)

题意:

aaa 的孤度定义为:对于任意两个正整数 iiijjj ( 1≤i,j≤n−k+11 \leq i, j \leq n - k +11i,jnk+1 ),以下条件成立的最小正整数 kkk ( 1≤k≤n1 \le k \le n1kn ):

ai∣ai+1∣…∣ai+k−1=aj∣aj+1∣…∣aj+k−1, a_i | a_{i+1} | \ldots | a_{i+k-1} = a_j | a_{j+1} | \ldots | a_{j+k-1}, aiai+1ai+k1=ajaj+1aj+k1,

即对于连续的kkk个元素,它们的位相 OROROR 应该是相同的。求数组aaa的孤度

分析:

我们分别对于每一位进行考虑,满足条件kkk的最小值,为最长连续的000的长度加111,如果没有111,那么这个值是可以任意取的,最后对所有的值取最大值即可。

代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
   
   
    int t;
    cin >> t;
    while (t--) {
   
   
        int n;
        cin >> n;
        vector<int> a(n);
        for (int i = 0; i < n; i++) {
   
   
            cin >> a[i];
        }
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值