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 #813 (Div. 2) A~C -> 正文阅读

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

Codeforces Round #813 (Div. 2)

A. Wonderful Permutation

题目大意

给出一串排列,问通过几次交换数字可以使前 k 个数字之和最小。排列中每个数字只出现一次

题目分析

前 k 个数字最小则使前 k 个数字为 1~k 即可,出现一个大于 k 的数字即需要交换一次。

code
#include<bits/stdc++.h>

using namespace std;

const int N = 110;

int n, m, k, t;

struct node
{
    int l, r;
}q[N];

void solve()
{
    int a[N] = {0};
    cin >> n >> k;

    for(int i = 1; i <= n; i ++)
    {
        cin >> a[i];
    }

    int cnt = 0;
    for(int i = 1; i <= k; i++)
        if(a[i] > k)cnt ++;
    cout << cnt << "\n";
}

int main()
{
    cin >> t;
    while(t --) solve();
    return 0;
}

B. Woeful Permutation

题目大意

求出满足 lcm(1,p1)+lcm(2,p2)+…+lcm(n,pn)lcm?(1,p1)+lcm?(2,p2)+…+lcm?(n,pn)最小的含 n 个数字的排列。排列中每个数字只出现一次。(lcm为最大公约数)

题目分析

有序排列中,相邻两个数互质,最小公倍数为它们的乘积。交换相邻两个数字即可满足题意。要注意,排列元素个数为偶数的时候应从第二位开始换

code
#include<bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;

int n, m, k, t;

void solve()
{
    int a[N] = {0};
    cin >> n;

    if(n % 2)
    {
        cout << 1 << " ";
        for(int i = 2; i < n; i += 2)
            cout << i + 1 <<" " << i << " ";
    }
    else
    {
        for(int i = 1; i < n; i += 2)
        {
            cout << i + 1 << " " << i << " ";
        }
    }
    puts("");
}

int main()
{
    cin >> t;
    while(t --) solve();
    return 0;
}

题目大意

给出一串数字,问通过几次操作(将某个数全部变为零)可以将序列从小到大排列。

题目分析

当数列本身有序则不需要进行操作。

当其本身无序时,从后往前找到第一个大于最后一个数字的数u,并求出他之前的数字种类,再次过程中若u后的数字u也受到影响,也需要加上 u v 之间之前未出现过的数字种类。

code
#include <bits/stdc++.h>

using namespace std;

const int N = 1e5+10;

int n, m, k, t;

void solve()
{
    int a[N] = {0}, b[N] = {0};

    cin >> n;
    int sum = 0;

    for(int i = 1;i <= n;i++) cin >> a[i];

    int flg = 1;
    int tem = 0;

    for(int i = n; i >= 1; i--)
    {
        if(a[i-1] > a[i])
        {
            tem = i-1;
            flg = 0;
            break;
        }
    }

    if(flg) cout << 0 << "\n";
    else
    {
        for(int i = 1;i <= tem;i++)
        {
            if(!b[a[i]])
            {
                sum ++;
                b[a[i]] = 1;
            }
        }
        int res = -1;
        for(int i = n;i > tem; i--)
        {
            if(b[a[i]])
            {
                res = i;
                break;
            }
        }
        for(int j = tem;j <= res; j ++)
        {
            if(!b[a[j]])
            {
                sum++;
                b[a[j]] = 1;
            }
        }
        cout << sum << "\n";
    }
}

int main()
{
    cin >> t;
    while(t--) solve();
    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-08-19 18:45:50  更:2022-08-19 18:48:58 
 
开发: 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/12 23:40:51-

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