IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Codeforces Round #791 (Div. 2)A-C -> 正文阅读

[C++知识库]Codeforces Round #791 (Div. 2)A-C

A .AvtoBus

题意:
给你一个数由4 6组成最多/少由几个数组成
题解:
4x+6y=num
4(x+y)+2y=num;
当x或y>=1时 num>=4,且为偶数。
num只能由46组成
且最多的数最多只能有一个6因为偶数个6可以由三个4组成
最少的同理
Example
input
4
4
7
24
998244353998244352

output
1 1
-1
4 6
166374058999707392 249561088499561088

看样例数据范围1e18记得开longlong

//
// Created by YikN on 2022/5/13.
//

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 2 * 1e5 + 100;
const int mod = 1e9 + 7;
int y[N], l[N];
int st[N];
long long f[N];
int n, m;

int main() {
    int T;
    cin >> T;
    while (T--) {
        ll x;
        cin >> x;
        if (x & 1 || x < 4)printf("-1\n");
        else {
            ll liu = 0, si = 0;
            while ((x - liu * 6) % 4 != 0) {
                liu++;
            }
            ll ma = liu + (x - liu * 6) / 4;
            while ((x - si * 4) % 6 != 0) {
                si++;
            }
            ll mi = si + (x - si * 4) / 6;
            printf("%lld %lld\n", mi, ma);
        }
    }

    return 0;
}

B. Stone Age Problem

题意:
给你一组数
和m个操作
有两种操作
1.全变某个数,然后输出总和。
2.变单个数,然后输出总和。

数据范围:2*1e5

题解
根据数据范围可以得出我们只需要记录每次的单独操作即可,全部变之后清除这些操作
Example
input
5 5
1 2 3 4 5
1 1 5
2 10
1 5 11
1 4 1
2 1

output
19
50
51
42
5

//
// Created by YikN on 2022/5/13.
//

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 2 * 1e5 + 100;
const int mod = 1e9 + 7;

long long f[N];
ll n, m;
ll a[N];
ll s[N];
map<long long, long long> mp;

int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        scanf("%lld", &a[i]);
        s[i] = s[i - 1] + a[i];
    }
    ll sum = -1, zo = s[n];
    while (m--) {
        int op;
        scanf("%d", &op);
        if (op == 1) {
            ll idx, num, cao = 0;
            scanf("%lld%lld", &idx, &num);
            if (!mp.count(idx)) {
                if (sum == -1)cao = num - a[idx];
                else cao = num - sum;
            } else {
                cao = num - mp[idx];
            }
            zo += cao;
            mp[idx] = num;
            printf("%lld\n", zo);
        } else {
            mp.clear();
            ll fl;
            scanf("%lld", &fl);
            sum = fl;
            zo = fl * n;
            printf("%lld\n", fl * n);
        }
    }

    return 0;
}

C. Rooks Defenders

给你n*n的棋盘有三种操作
1.添加棋子
2.删除棋子
3.查询子矩阵是否被攻击过

主要是查询子矩阵是否被攻击过n*n的范围有点大我们可以通过前缀的方式来看

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N = 2 * 1e5 + 100;
const int mod = 1e9 + 7;

ll x[N], y[N];
ll sumx[N], sumy[N];
int n, m;

ll lowbit(ll x) { return x & -x; }

void add(ll sum[], int x, int c) {
    for (int i = x; i <= n; i += lowbit(i))sum[i] += c;
}

ll query(ll sum[], int x) {
    ll res = 0;
    for (int i = x; i; i -= lowbit(i)) res += sum[i];
    return res;
}


int main() {
    scanf("%d%d", &n, &m);
    int k, a, b, c;
    int x1, x2, y1, y2;
    for (int i = 1; i <= m; i++) {
        scanf("%d", &k);
        if (k == 1) {
            scanf("%d%d", &a, &b);
            x[a]++, y[b]++;
            if (x[a] == 1)add(sumx, a, 1);
            if (y[b] == 1)add(sumy, b, 1);
        }
        if (k == 2) {
            scanf("%d%d", &a, &b);
            if (x[a] >= 1)x[a]--;
            if (y[b] >= 1) y[b]--;
            if (!x[a])add(sumx, a, -1);
            if (!y[b])add(sumy, b, -1);
        }
        if (k == 3) {
            scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
            if (query(sumx, x2) - query(sumx, x1 - 1) == x2 - x1 + 1) {
                puts("Yes");
            } else if (query(sumy, y2) - query(sumy, y1 - 1) == y2 - y1 + 1) {
                puts("Yes");
            } else puts("No");
        }
    }
    return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 11:50:18  更:2022-05-19 11:50:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 21:24:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码