2022 China Collegiate Programming Contest (CCPC) Guilin Site

A.Lily

Problem - A - Codeforces

题意

思路

数所有周围没L的格子

#include <bits/stdc++.h>

using i64 = long long;

constexpr int N = 2e5 + 10;
constexpr int mod = 1e9 + 7;
constexpr int Inf = 0x3f3f3f3f;
constexpr double eps = 1e-10;

std::string s;

int n;

void solve() {
    std::cin >> n >> s;
    s = " " + s;
    for (int i = 1; i <= n; i ++) {
        if (s[i] == 'L') continue;
        if (i == 1) {
            if (s[i + 1] != 'L') {
                s[i] = 'C';
            }
        }else if (i == n) {
            if (s[i - 1] != 'L') {
                s[i] = 'C';
            }
        }else {
            if (s[i - 1] != 'L' && s[i + 1] != 'L') {
                s[i] = 'C';
            }
        }
    }
    std::cout << s.substr(1, n) << "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    while(t --) {
        solve();
    }
    return 0;
}

M. Youth Finale

Problem - M - Codeforces

题意

给定一个排列,每次可以翻转这个排列,或者循环往左一个单位,给定操作序列,问操作之后给序列做冒泡排序的操作次数

思路

冒泡排序的操作次数其实就是逆序对的对数,那就是求操作之后的逆序对有多少

考虑DS的思想,我们对它的逆序对统计,考虑两次操作对逆序对的贡献

第一种就是逆序对个数 = 长度 - 逆序对个数

对于第二种,考虑操作一下,变化量就是 cur - pre

cur就是原序列中比操作数大的数

pre就是原序列中比操作数小的数

减一下就行

然后发现需要维护操作数,那就拿个 idx 维护即可,发现第一种操作会让方向反向,因此维护 x 方向

#include <bits/stdc++.h>

#define int long long

using i64 = long long;

#define lowbit(x) (x & (- x))

constexpr int N = 1e6 + 10;
constexpr int mod = 1e9 + 7;
constexpr int Inf = 0x3f3f3f3f;
constexpr double eps = 1e-10;

std::string s;

int n, m;
int p[N];
int tr[N];

void add(int x, int k) {
    for (int i = x; i <= n; i += lowbit(i)) tr[i] += k;
}
int query(int x) {
    int res = 0;
    for (int i = x; i; i -= lowbit(i)) res += tr[i];
    return res;
}
void solve() {
    std::cin >> n >> m;
    for (int i = 1; i <= n; i ++) std::cin >> p[i];
    std::cin >> s;
    s = " " + s;

    int cur = 0;
    for (int i = 1; i <= n; i ++) {
        cur += query(n) - query(p[i]);
        add(p[i], 1);
    }
    std::cout << cur << "\n";

    int idx = 1, x = 1;
    for (int i = 1; i <= m; i ++) {
        if (s[i] == 'S') {
            cur = cur - (p[idx] - 1) + (n - (p[idx] + 1) + 1);
            idx = idx + x;
            if (idx == n + 1) idx = 1;
            else if (idx == 0) idx = n;
        }else {
            cur = n * (n - 1) / 2 - cur;
            idx = idx - x;
            if (idx == 0) idx = n;
            else if (idx == n + 1) idx = 1;
            x = -x;
        }
        std::cout << cur % 10;
    }
    std::cout << "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    while(t --) {
        solve();
    }
    return 0;
}

E. Draw a triangle

题意

思路

#include <bits/stdc++.h>

#define int long long

using i64 = long long;

#define lowbit(x) (x & (- x))

constexpr int N = 1e6 + 10;
constexpr int mod = 1e9 + 7;
constexpr int Inf = 0x3f3f3f3f;
constexpr double eps = 1e-10;

int a, b, c, d;
int v, u;

int exgcd(int a, int b, int &v, int &u) {
    if (!b) {
        v = 1, u = 0;
        return a;
    }
    int gcd = exgcd(b, a % b, u, v);
    u -= (a / b) * v;
    return gcd;
}
void solve() {
    std::cin >> a >> b >> c >> d;
    int x = c - a;
    int y = d - b;
    int gcd = exgcd(x, -y, v, u);
    std::cout << a + u << " " << b + v << "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    std::cin >> t;
    while(t --) {
        solve();
    }
    return 0;
}

C. Array Concatenation

题意

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define int long long
typedef long long lld;
const int N = 100005;
const lld p = 1000000007;
lld sum[N], a[N], tot[N];
lld powe(lld a, lld b) {
	lld base = 1; 
	while(b) {
		if(b & 1) base = base * a % p;
		a = a * a % p; b >>= 1;
	}
	return base;
}
lld pos_t = 0, neg_t = 0, squ = 0;
lld ans1 = 0, ans2 = 0;
signed main() {
	int n, m; scanf("%lld%lld", &n, &m);
	for(int i = 1; i <= n; i++) {
		scanf("%lld", &a[i]);
		squ += a[i]; squ %= p;
	}
	for(int i = 1; i <= n; i++) {
		sum[i] = (sum[i - 1] + a[i]) % p;
		pos_t = (pos_t + sum[i]) % p;
	}
	for(int i = n; i >= 1; i--) {
		tot[i] = (tot[i + 1] + a[i]) % p;
		neg_t = (neg_t + tot[i]) % p;
	}
	squ = squ * n % p;
	ans1 = ans2 = squ * powe(2, m - 1) % p * (powe(2, m) - 1 + p) % p; 
	ans1 = (ans1 + powe(2, m - 1) * pos_t % p) % p;
	ans1 = (ans1 + powe(2, m - 1) * neg_t % p) % p;
	ans2 = (ans2 + powe(2, m) * pos_t % p) % p;
	printf("%lld", max(ans1, ans2)); 
	return 0;
} 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/218120.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3 + TS 项目中使用pinia-plugin-persistedstate持久化缓存

Vue 3和Pinia是一对非常好的组合&#xff0c;可以帮助你构建现代化的Vue应用程序。而pinia-plugin-persistedstate是一个用于在Pinia存储中实现状态持久化的插件。下面我将详细介绍如何在Vue 3应用程序中使用Pinia和pinia-plugin-persistedstate模块。 首先&#xff0c;确保你…

Redis高可用之Sentinel哨兵模式

一、背景与简介 Redis关于高可用与分布式有三个与之相关的运维部署模式。分别是主从复制master-slave模式、哨兵Sentinel模式以及集群Cluster模式。 这三者都有各自的优缺点以及所应对的场景、对应的业务使用量与公司体量。 1、主从master-slave模式 【介绍】 这种模式可以采用…

Vue学习计划--Vue2(二)Vue代理方式

Vue data中的两种方式 对象式 data:{}函数式 data(){return {} }示例&#xff1a; <body><div id"app">{{ name }} {{ age}} {{$options}}<input type"text" v-model"value"></div><script>let vm new Vue({el: …

【C++】STL简介(了解)【STL的概念,STL的历史缘由,STL六大组件、STL的重要性、以及如何学习STL、STL的缺陷的讲解】

这里写自定义目录标题 一、什么是STL二、STL的版本1. 原始版本2. P. J. 版本3. RW版本★ 4. SGI版本 三、STL的六大组件四、STL的重要性五、如何学习STL六、STL的缺陷 一、什么是STL STL ( standard template libaray - 标准模板库 )&#xff1a;是C标准库 的重要组成部分&…

nodejs+vue+微信小程序+python+PHP就业求职招聘信息平台的设计与实现-计算机毕业设计推荐

主要有前端和后端&#xff0c;前端显示整个网站的信息&#xff0c;后端主要对前端和网站的基本信息进行管理。用户端模块主要是系统中普通用户在注册、登录系统可以看到自己的基本信息&#xff0c;维护自己的信息&#xff1b;管理员端模块主要是管理员登录后对整个系统相关操作…

【算法】算法题-20231205

这里写目录标题 一、LCS 01. 下载插件二、已知一个由数字组成的列表&#xff0c;请将列表中的所有0移到右侧三、实现一个trim()函数&#xff0c;去除字符串首尾的空格&#xff08;不能使用strip()方法&#xff09; 一、LCS 01. 下载插件 简单 小扣打算给自己的 VS code 安装使…

自动化巡检实现方法 (一)------- 思路概述

一、自动化巡检需要会的技能 1、因为巡检要求一天24小时全天在线&#xff0c;因此巡检程序程序一定会放在服务器上跑&#xff0c;所以要对linux操作熟悉哦 2、巡检的代码要在git上管理&#xff0c;所以git的基本操作要熟悉 3、为了更方便不会代码的同学操作&#xff0c;所以整个…

LaTex入门简明教程

文章目录 写在前面安装Texlive的安装TeXstudio 的安装 LaTex 的使用节指令图指令表指令公式指令参考文献指令引用指令TeXstudio 编译 LaTex 的 \label{} 写法建议最后 写在前面 这篇文章面向没有任何 LaTex 基础的小白&#xff0c;主要讲解了 LaTex 的安装和使用。读完文章之后…

父类的@Autowired字段被继承后能否被注入

可以 示例 父类&#xff1a;Animal.class public class Animal {Autowiredprivate PrometheusAlertService prometheusAlertService;public void eat(){System.out.println("eat food");}} 子类&#xff1a;Dog.class Service public class Dog extends Animal …

Vue3 组合式实现 带连接线的Tree型 架构图(一级树形图)

创建组件名称 TreeNodeView.vue <template><div class"tree-node"><div class"node">{{ rootNodeName }}</div><div class"children" :style"childrenLineStyle"><div class"child-node"…

Affinity VS PS 2024最新功能详细对比?Affinity Photo与Photoshop比哪家强?

多年来&#xff0c;ps已经有了大量竞争对手。然而每次Photoshop都足以保持其领先地位。开源GIMP和Pixelmator都试图取代Photoshop&#xff0c;不过Photoshop对此不屑一顾。英国Serif公司研发了一款名为Affinity Photo的软件&#xff0c;声称可以叫板ps。今天我们看看有最有可能…

12.4作业

1. #include <iostream>using namespace std;class Sofa { private:string sitting;string *lying; public:Sofa(){cout << "Sofa::无参构造函数" << endl;}Sofa(string sitting,string lying):sitting(sitting),lying(new string(lying)){cout &…

ffmpeg格式转换 免费使用视频格式转换教程

下载安装 首先去官网下载ffmpeg的软件包https://ffmpeg.org/ 如果是windows可以在直接下载编译好的软件包 https://www.gyan.dev/ffmpeg/builds/ 进入解压后的目录&#xff0c;子目录bin中的ffmpeg.exe就是我们要使用的转换器 视频信息查看 打开cmd控制台&#xff0c;从…

【开源】基于JAVA语言的天沐瑜伽馆管理系统

项目编号&#xff1a; S 039 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S039&#xff0c;文末获取源码。} 项目编号&#xff1a;S039&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课…

Latex去掉参考文献后面的参考文献所在页(去掉参考文献的反向超链接)

如下&#xff1a; 在使用latex插入参考文献的时候&#xff0c;最后面总是会出现这种代号。这是表明的是这条参考文献所在的页码&#xff0c;并且点击之后可以跳转到该页。正式来讲&#xff0c;这个叫超链接的BACKREF。若要去掉&#xff0c;只需要在引用hyperref的时候去掉page…

C++学习之路(十八)C++ 用Qt5实现一个工具箱(点击按钮以新窗口打开功能面板)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《增加托盘图标并且增加显示和退出菜单》功能。今天我们把按钮打开功能的方式改一改&#xff0c;让点击按钮以新窗口打开功能面板。下面我们就来看看如何来规划开发这样的小功能并且添加到我们的工具箱中吧。 老规矩&…

Ubuntu之Sim2Real环境配置(坑居多)

不要一上来就复制哦&#xff0c;因为很多下面的步骤让我走了很多弯路&#xff0c;如果可能的话&#xff0c;我会重新整理再发出来 前提&#xff1a; 参考教程 Docs 创建工作空间(不用跟着操作&#xff0c;无用&#xff09; 1.创建sim2real server container 1.尝试创建sim2r…

导入JDBC元数据到Apache Atlas

前言 前期实现了导入MySQL元数据到Apache Atlas, 由于是初步版本&#xff0c;且功能参照Atlas Hive Hook&#xff0c;实现的不够完美 本期对功能进行改进&#xff0c;实现了导入多种关系型数据库元数据到Apache Atlas 数据库schema与catalog 按照SQL标准的解释&#xff0c;…

直观清晰的带你了解KMP算法(超详细)

KMP算法用来找某个字符串是否存在某个连续的真子串的 下面举一个例子让抽象的KMP算法更加直观&#xff0c;有助于理解 首先我们要了解KMP算法首先要找到一个next数组来表示主串中每一个字符的回退的下标&#xff08;这个下标是对于真子串而言的&#xff0c;主串不需要回退&…

编写并调试运行一个简单的 Java 应用程序,显示自己的学号、姓名、兴趣爱好等。

源代码&#xff1a; public class Main { public static void main(String[] args) { System.out.println("学号是:""0233217821"); System.out.println("姓名是:""赵港"); System.out.println("兴趣爱好是:""运动&qu…