当前位置: 首页 > news >正文

2024年四川省大学生程序设计竞赛 补题记录

文章目录

    • Problem A. 逆序对染色(思维+树状数组)
    • Problem B. 连接召唤(贪心)
    • Problem E. L 型覆盖检查器(模拟)
    • Problem F. 小球进洞:平面版(几何)
    • Problem G. 函数查询
    • Problem H. GG 和 YY 的石子游戏(签到)
    • Problem L. 毛肚下清汤?(签到)

Problem A. 逆序对染色(思维+树状数组)

  • 难似我了
    在这里插入图片描述
#include <bits/stdc++.h>using namespace std;#define int long longstruct BIT
{const int n;vector<int> tree;BIT(int n) : n(n), tree(n + 1) {};// 询问前x个数的和int Query(int x){int res = 0;for (int i = x; i > 0; i -= (i & -i)) res += tree[i];return res;}// 第l个位置+zvoid Modify(int l, int z){if (l <= 0) return;for (int i = l; i <= n; i += (i & -i)) tree[i] += z;}// 区间求和int rangeQuery(int l, int r){return Query(min(n, r)) - Query(max(0ll, l - 1));}
};void solve()
{int n; cin >> n;vector<int> a(n + 1), pos(n + 1);for (int i = 1; i <= n; i ++ ){cin >> a[i];pos[a[i]] = i;}vector<vector<int>> mem(n + 1);vector<bool> st(n + 1);for (int i = 1; i <= n; i ++ ){int t = pos[a[i] - 1] + 1;if (i >= t){mem[t].push_back(i);st[a[i]] = true;}}BIT bit(n);int ans = 0;for (int i = 1; i <= n; i ++ ){for (auto t : mem[i]) bit.Modify(a[t], 1);if (st[a[i]]) bit.Modify(a[i], -1);if (a[i - 1] + 1 <= a[i] - 1) ans += bit.rangeQuery(a[i - 1] + 1, a[i] - 1);}cout << ans << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t -- ){solve();}
}

Problem B. 连接召唤(贪心)

  • 贪心,优先1-5,2-4,3-3匹配,我的代码里单独考虑了出现23的情况,题解好像简单一些,但是能a的代码就是好代码 我就不重写了(
#include <bits/stdc++.h>using namespace std;#define int long longtypedef pair<int, int> PII;void solve()
{vector<int> cnt(6);for (int i = 1; i <= 5; i ++ ) cin >> cnt[i];int ans = 0;int minn = min(cnt[1], cnt[5]);ans += minn;cnt[1] -= minn; cnt[5] -= minn;minn = min(cnt[2], cnt[4]);ans += minn;cnt[2] -= minn; cnt[4] -= minn;ans += cnt[3] / 2;cnt[3] %= 2;auto cal = [&](int id){int need = 6 - id;int nw = 0;for (int i = 1; i < id; i ++ ){if (!cnt[i]) continue;int minn = min((nw + cnt[i]) / need, cnt[id]);cnt[i] -= (minn * need - nw); cnt[id] -= minn; for (int j = 1; j < i; j ++ ) cnt[j] = 0;ans += minn;nw = cnt[i];}if (nw != 0 && cnt[id]){int need = 6 - nw;int c = need / id;if (cnt[id] >= c){need -= c * id;if (need == 0){cnt[id] -= c;ans ++ ;for (int i = 1; i < id; i ++ ) cnt[i] = 0;}else{if (cnt[id] >= need){cnt[id] -= need;ans ++ ;for (int i = 1; i < id; i ++ ) cnt[i] = 0;}}}}if (id == 5) ans += cnt[id] / 2;else if (id == 4 || id == 2) ans += cnt[id] / 3;else if (id == 1) ans += cnt[id] / 6;cnt[id] = 0;};if (cnt[1] && cnt[2] && cnt[3]){cnt[1] -= 1; cnt[2] -= 1; cnt[3] -= 1;ans ++ ;if (cnt[2]) cal(2);if (cnt[1]) cal(1);}else if (cnt[2] && cnt[3] && cnt[5]){cnt[5] -- ; cnt[3] -- ;ans ++ ;if (cnt[5]) cal(5);if (cnt[2]) cal(2);}else if (cnt[2] && cnt[3]){if (cnt[2] >= 2){cnt[2] -= 2; cnt[3] -- ;ans ++ ;}if (cnt[2]) cal(2);}else{for (int i = 5; i >= 1; i -- ){if (cnt[i]) cal(i);}}cout << ans << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t -- ){solve();}
}

Problem E. L 型覆盖检查器(模拟)

#include <bits/stdc++.h>
using namespace std;
#define int long longstring g[510];
pair<int, int> dx[] = {{-1, 0}, {0, 1}, {0, -1}, {-1, 0}};
pair<int, int> dy[] = {{0,1}, {1,0}, {1,0}, {0,-1}};
char fx[] = {'D', 'L', 'R', 'D'};
char fy[] = {'L', 'U', 'U', 'R'};void solve()
{int n, m;cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> g[i];g[i] = " " + g[i];}if (g[1][m] != '.') {cout << "No" << endl;return;}vector<pair<int, int>> cc;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (g[i][j] == 'C')cc.push_back({i, j});}}vector<vector<int>> st(n + 1, vector<int>(m + 1, 0));for (int i = 0; i < cc.size(); i++) {int a = cc[i].x, b = cc[i].y;st[a][b] = i + 1;for (int j = 0; j < 4; j++) {int x1 = a + dx[j].x, y1 = b + dx[j].y;int x2 = a + dy[j].x, y2 = b + dy[j].y;if (x1 < 1 || x1 > n || x2 < 1 || x2 > n)continue;if (y1 < 1 || y1 > m || y2 < 1 || y2 > m)continue;if (st[x1][y1] != 0) continue;if (st[x2][y2] != 0) continue;if (g[x1][y1] == fx[j] && g[x2][y2] == fy[j]) {st[x1][y1] = i + 1, st[x2][y2] = i + 1;}}}bool flag = 0;map<int, int> jk;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (i == 1 && j == m) continue;if (st[i][j] == 0){cout << "No" << endl;return;}jk[st[i][j]]++;}}for (auto bb : jk) {if (bb.y != 3) {cout << "No" << endl;return;}}cout << "Yes" << endl;
}signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t--){solve();}
}

Problem F. 小球进洞:平面版(几何)

  • 待补

Problem G. 函数查询

  • 待补

Problem H. GG 和 YY 的石子游戏(签到)

#include<bits/stdc++.h>
using namespace std;
int t,m,ans;
long long n,a;
int main()
{scanf("%d",&t);for(int i=1;i<=t;i++){cin>>n;ans=0;if(n%3==0){ans=1;}a=(n/3)+n%3;cout<<ans<<" "<<a<<"\n";}return 0;
}

Problem L. 毛肚下清汤?(签到)

#include <bits/stdc++.h>using namespace std;#define int long longtypedef pair<int, int> PII;void solve()
{int n; cin >> n;priority_queue<PII, vector<PII>, greater<PII>> red, green;for (int i = 1; i <= n; i ++ ){int a, b, c, d; cin >> a >> b >> c >> d;if (c == 0 && d == 0) continue;else if (c == 1 && d == 0) red.push({a, i});else if (c == 0 && d == 1) green.push({b, i});else{if (a > b) green.push({b, i});else red.push({a, i});}}cout << red.size() << ' ';while (red.size()){auto t = red.top();red.pop();cout << t.second << ' ';}cout << '\n';cout << green.size() << ' ';while (green.size()){auto t = green.top();green.pop();cout << t.second << ' ';}cout << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t -- ){solve();}
}

相关文章:

2024年四川省大学生程序设计竞赛 补题记录

文章目录 Problem A. 逆序对染色&#xff08;思维树状数组&#xff09;Problem B. 连接召唤&#xff08;贪心&#xff09;Problem E. L 型覆盖检查器&#xff08;模拟&#xff09;Problem F. 小球进洞&#xff1a;平面版&#xff08;几何&#xff09;Problem G. 函数查询Proble…...

17_事件的处理

目录 绑定事件与解绑事件优化事件的绑定和解绑方式处理不同事件类型的绑定处理同一事件类型多个事件处理函数事件冒泡与更新时机问题 绑定事件与解绑事件 既然要处理事件&#xff0c;那么首先面临的问题是如何在 vnode 中描述这个事件&#xff0c;在 vnode.props 中&#xff0…...

1FreeRTOS学习(队列、二值信号量、计数型信号量之间的相同点和不同点)

相同点&#xff1a; &#xff08;1&#xff09;传递区间 队列、二值信号量、计数型信号量均可用在任务与任务&#xff0c;任务与中断之间进行消息传递 &#xff08;2&#xff09; 传递方式 创建队列--发送队列--接受队列 创建二值信号量--发送二值信号量--接受二值信号量 创建计…...

数据库设计与范式及其应用

数据库设计是数据库管理系统&#xff08;DBMS&#xff09;中的核心环节&#xff0c;良好的数据库设计不仅可以提高数据存取的效率&#xff0c;还能增强数据的可维护性和一致性。范式&#xff08;Normalization&#xff09;是一种设计原则&#xff0c;用于减少数据冗余和提高数据…...

笔记-配置PyTorch(CUDA 12.2)

文章目录 前言一、安装 PyTorch&#xff08;CUDA 12.2&#xff09;1. 创建并激活 Conda 环境2. 安装 PyTorch&#xff08;CUDA 12.2&#xff09;3. 安装 torch_geometric 及依赖项4. 验证安装 总结 前言 一、安装 PyTorch&#xff08;CUDA 12.2&#xff09; 1. 创建并激活 Con…...

[C++]——红黑树(附源码)

目录 一、前言 二、正文 2.1 红黑树的概念 2.2 红黑树的性质 2.3红黑树节点的定义 2.4 红黑树的插入 2.4.1 情况一 2.4.2 情况二 ​编辑 2.4.3 情况三 2.5 红黑树的验证 三、全部代码 四、结语 一、前言 在上一篇博客中&#xff0c;为小伙伴们进行了AVL树的讲解&#…...

网络文件系统搭建

在CentOS7上搭建网络文件系统&#xff08;NFS&#xff09;&#xff0c;并让客户端进行挂载&#xff0c;具体步骤如下&#xff1a; 1. 服务器端操作 安装NFS服务器软件包&#xff1a; 执行以下命令安装NFS服务&#xff1a; sudo yum install nfs-utils -y 启动并启用NFS服务&…...

基于vue、VantUI、django的程序设计

首先构建vue项目&#xff0c;构建项目点这里 安装 npm install axios axios简介 Axios 是一个基于 promise 的 HTTP 库&#xff0c;用于发起请求和接收响应&#xff0c;实现异步操作 基本使用 axios对象 请求响应拦截 在utils文件夹里新建ajax.js 创建一个axios对象并…...

京准电钟解读:NTP网络对时服务器助力厂区改造方案

京准电钟解读&#xff1a;NTP网络对时服务器助力厂区改造方案 京准电钟解读&#xff1a;NTP网络对时服务器助力厂区改造方案 1&#xff09;系统概述 时钟系统可通过网络进行管理及时间校对&#xff0c;为厂区提供高精度、全天时、全天候 的授时服务&#xff0c;统一全厂各种系统…...

本地docker-compose仓库搭建以及推送docker镜像到仓库

前言 以下部分知识只适用于linux&#xff0c;不适合小白&#xff0c;请自行甄别执行 1.搭建 #参考 https://blog.csdn.net/u011535199/article/details/107457275 version: 3 services:registry:restart: alwaysimage: registry:2ports:- 5000:5000environment:#REGISTRY_HT…...

WPF+MVVM案例实战(八)- 自定义开关控件封装实现

文章目录 1、案例运行效果2、项目准备2、功能实现1、控件模板实现2、控件封装1、目录与文件创建2、各文件功能实现 3、开关界面与主窗体菜单实现1、开关界面实现2、主窗体菜单实现 4、源代码获取 1、案例运行效果 2、项目准备 打开项目 Wpf_Examples&#xff0c;新建ToggleBut…...

单机kafka性能需要高性能的硬件做支撑

一般来说&#xff0c;单机kafka在硬件支持的情况下&#xff0c;能支持每秒100万写入&#xff0c;如果硬件没有那么好的话(机械硬盘&#xff0c;容器内给内存8G&#xff0c; CPU也不是很好)&#xff0c;就只能减少每秒的写入量&#xff0c;每秒写入5万都比较不错了。 如果强行每…...

Spark 的 Http Broadcast 和 Torrent Broadcast 广播实现类的对比

在 Apache Spark 中&#xff0c;广播机制用于高效地将小型只读数据分发到集群中的各个执行器&#xff08;Executor&#xff09;。Spark 中主要有两种不同的广播实现方式&#xff1a;Http Broadcast 和 Torrent Broadcast。这两种方式的核心目标都是将数据高效地分发给所有工作节…...

030_Subplot_In_Matlab中多图绘制之subplot函数

基于子图的多图方法 专业的论文中通常涉及到多个有逻辑关系的图拼接在一起&#xff0c;构成相互支持或者对照。所以很早之前&#xff0c;Matlab就有这个子图的函数subplot。 这个函数的基本语义有三类&#xff1a; 在图窗上划分出一个矩形区域建立一个坐标系&#xff0c;并指…...

免费云服务器有什么使用限制和注意事项?

在数字化时代&#xff0c;云计算已经成为许多企业和个人用户的重要工具。对于初创企业、开发者和学生来说&#xff0c;免费的云服务器提供了一个低成本的解决方案&#xff0c;使他们能够进行项目开发、学习和实验。但在使用过程中也存在一些限制和注意事项。以下是主要的使用限…...

3-ZYNQ 折腾记录 -PS_PL AXI Interfaces

Zynq UltraScale MPSoC集成了功能丰富的四核或双核Arm Cortex-A53 MPCore基于处理系统(Processing System, PS)和可编程逻辑(Programmable Logic, PL)的单一设备。 PS和PL可以使用多个接口和其他信号进行紧密或松散的耦合。这使设计人员能够有效地将用户创建的硬件加速器和其他…...

总结test

1.IO流 |-- 字节流操作任何类型文件|-- 字符流操作纯字符类文件|-- BIO 传统IO流&#xff0c;阻塞型的&#xff0c;也就是BIO&#xff0c;当执行IO流时&#xff0c;CPU只能等待执行完当前任务&#xff0c;才能去执行其他线程任务|-- NIO非阻塞型IO流&#xff0c;CPU可以同时执行…...

在 On hold 期刊 eLife 上发表一篇生信文章需要什么工作量?

生信碱移 科研圈动态 根据弗雷赛斯以及相关媒体最新消息&#xff0c;中科院一区TOP&#xff0c;著名生命科学期刊 eLife [IF: 6.4]已被科睿唯安官方 On hold&#xff01; ▲ 官网截图。图片来源&#xff1a;https://mjl.clarivate.com/home eLife是一本专注于生物医学和生命科…...

使用Django框架开发企业级Web应用

&#x1f496; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4bb; Gitee主页&#xff1a;瑕疵的gitee主页 &#x1f680; 文章专栏&#xff1a;《热点资讯》 使用Django框架开发企业级Web应用 1 引言 2 Django简介 3 安装Python与Django 4 创建Django项目 5 设计应用结构 6 创…...

认识线程 — JavaEE

目录 认识线程&#xff08;Thread&#xff09; 1 线程是什么? 2 为什么要有线程 3 进程和线程的区别 区别一 区别二 区别三 区别四 4. Java的线程和操作系统线程的关系 认识线程&#xff08;Thread&#xff09; 1 线程是什么? 一个线程就是一个 "执行流"。…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...