Codeforces Round 997 (Div. 2) A~D题解

Codeforces Round 997 (Div. 2) A~D题解

A. Shape Perimeter

Q1 周长如何表示?

A1 可以表示为若干个 m × m m\times m m×m 的正方形的周长之和减去重叠部分的周长之和。

Q2 重叠部分如何表示?

A2 设往右边移动 x 个单位,往上边移动 y 个单位,则会产生一个 ( m − y ) × ( m − x ) (m-y)\times(m-x) (my)×(mx) 的重叠矩形。重叠部分是由上一个矩形的右上角和下一个矩形的左下角重叠而成,所以重叠矩阵的四条边都不会被计算。减去所有重叠矩阵周长即可。

#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#define ll long long
#define PII pair<int,int>
#define endl "\n"
#define INF 1e18
#define int long long
const int N = 1000005; // 1e6 + 5

void solve () {
   
    int n, m;
    cin >> n >> m;
    int ans = 0;

    for (int i = 1; i <= n; i++) {
   
        int x, y;
        cin >> x >> y;
        if (ans != 0)
            ans = ans + m*4 - (2*(m - y)+2*(m - x));
        else ans = 4*m;
    }
    cout << ans << endl;
}

signed main () {
   
    std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

    int t;
    cin >> t;

    while(t--){
   
        solve();
    }
}
B. Find the Permutation

Q1 图和排列有什么关系?

A1 对于任意一对顺序对在图中都能找到一条边。顺序对表示对于任意一对 ( i , j ) ( i < j ) (i,j) (i<j) (i,j)(i<j) 都有 p i < p j p_i<p_j pi<pj,同理一,对于图中的一条边 ( u , v ) (u,v) (u,v), 若 p u < p v p_u<p_v pu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

louisdlee.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值