【历年CSP-S复赛第一题】暴力解法与正解合集(2019-2022)

  1. P5657 [CSP-S2019] 格雷码
  2. P7076 [CSP-S2020] 动物园
  3. P7913 [CSP-S 2021] 廊桥分配
  4. P8817 [CSP-S 2022] 假期计划

P5657 [CSP-S2019] 格雷码

暴力50分

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) 
#define int long long
#define PII pair<int,int> 
#define pb push_back
using namespace std;
const int N = 1e6+5;
int n,k;
signed main()
{IOS;cin>>n>>k;vector<string> v;v.pb("0");v.pb("1");for(int j=1;j<=n-1;j++) {vector<string> vt;for(int i=0;i<(int)v.size();i++){vt.pb("0"+v[i]);}for(int i=(int)v.size()-1;i>=0;i--){vt.pb("1"+v[i]);}v = vt;}cout<<v[k];
}

正解

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) 
#define int long long
#define PII pair<int,int> 
#define pb push_back
using namespace std;
const int N = 1e6+5;
unsigned long long n,k;
signed main()
{IOS;cin>>n>>k;__int128 sum = (__int128)pow(2,n);int pre = -1;while(1){if(pre==-1){if(k<=sum/2-1){cout<<0;pre = -1;}else{cout<<1;pre = 1;k -= sum/2;}	}else{if(k<=sum/2-1)//k下标从1开始 {cout<<1;pre = -1;}else{cout<<0;pre = 1;k -= sum/2;}}sum /= 2;if(sum==1) break;}
}

P7076 [CSP-S2020] 动物园

暴力

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) 
#define int long long
#define PII pair<int,int> 
#define pb push_back
using namespace std;
const int N = 1e6+5;
int n,m,c,k;
int limit[N],va[N];
signed main()
{IOS;cin>>n>>m>>c>>k;for(int i=1;i<=n;i++) cin>>va[i];while(m--){int a,b;cin>>a>>b;limit[a] = b;//动物编号第a为1就必须有b号饲料 }set<int> s;for(int i=1;i<=n;i++)//由已有动物来倒推我有哪些饲料{for(int j=0;j<=k-1;j++){if((va[i]>>j)&1)//动物编号的二进制第j位为1 {s.insert(limit[j]);//动物编号的二进制第j位为1,即需要limit[j]号饲料}}}int sum = 0;for(int i=0;i<=pow(2,k)-1;i++){int suc = 1;for(int j=0;j<=k-1;j++){if((i>>j)&1){if(limit[j]==0) continue;if(s.count(limit[j])) continue;suc = 0;}}if(suc==1) sum++;}cout<<sum-n;
}

正解

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) 
#define int long long
#define PII pair<int,int> 
#define pb push_back
using namespace std;
const int N = 1e6+5;
int n,m,c,k;
int limit[N],va[N];
bool vis[N];
signed main()
{IOS;cin>>n>>m>>c>>k;for(int i=1;i<=n;i++) cin>>va[i];while(m--){int a,b;cin>>a>>b;limit[a] = b;//动物编号第a为1就必须有b号饲料 }for(int j=0;j<=k-1;j++){if(limit[j]==0) vis[j] = 1;for(int i=1;i<=n;i++){if((va[i]>>j)&1) vis[j] = 1;//由已有动物来倒推我哪些位置有哪些饲料}}int sum = 0;for(int i=0;i<=k-1;i++){if(vis[i]==1) sum++;}if(sum==64){if(n==0) cout<<"18446744073709551616";else cout<<(1ull<<(sum-1))-n+(1ull<<(sum-1));}else cout<<(1ull<<sum)-n;
}

P7913 [CSP-S 2021] 廊桥分配

暴力

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) 
#define int long long
#define PII pair<int,int> 
#define pb push_back
using namespace std;
const int N = 1e6+5;
int n,m1,m2;
struct node{int in;int out;
}va[N],vb[N];
bool cmp(node a,node b)
{return a.in<b.in;
}
int solve(int sum1,int sum2)
{int ans = 0;priority_queue <int,vector<int>,greater<int> > q1,q2;for(int i=1;i<=m1;i++) { while(q1.size()&&q1.top()<=va[i].in) q1.pop();if(q1.size()<sum1){ans++;q1.push(va[i].out);}}for(int i=1;i<=m2;i++) { while(q2.size()&&q2.top()<=vb[i].in) q2.pop();if(q2.size()<sum2){ans++;q2.push(vb[i].out);}}return ans;
}
signed main()
{IOS;cin>>n>>m1>>m2;int maxn = 0;for(int i=1;i<=m1;i++){cin>>va[i].in>>va[i].out;}for(int i=1;i<=m2;i++){cin>>vb[i].in>>vb[i].out;}sort(va+1,va+1+m1,cmp);sort(vb+1,vb+1+m2,cmp);for(int i=0;i<=n;i++){maxn = max(maxn,solve(i,n-i));}cout<<maxn;
}

正解

#include<bits/stdc++.h>
#define PII pair<int,int>
#define fi first
#define se second
#define int long longusing namespace std;const int N = 1e5+10;int n,m1,m2;
PII va[N],vb[N];
int cnt1[N],cnt2[N];priority_queue<PII,vector<PII>,greater<PII>> q1,q2;int solve1()
{for(int i=1;i<=n;i++) q1.push({0,i});for(int i=1;i<=m1;i++){int min_id = 1e9;vector<PII > v;while(q1.size()&&q1.top().fi<=va[i].fi){v.push_back(q1.top());if(min_id>q1.top().se) min_id = q1.top().se;q1.pop();}for(auto t:v){if(t.se==min_id) q1.push({va[i].se,t.se});else q1.push({0,t.se});}if(min_id!=1e9) cnt1[min_id]++;}for(int i=1;i<=n;i++) cnt1[i] = cnt1[i]+cnt1[i-1];
}int solve2()
{for(int i=1;i<=n;i++) q2.push({0,i});for(int i=1;i<=m2;i++){int min_id = 1e9;vector<PII > v;while(q2.size()&&q2.top().fi<=va[i].fi){v.push_back(q2.top());if(min_id>q2.top().se) min_id = q2.top().se;q2.pop();}for(auto t:v){if(t.se==min_id) q2.push({va[i].se,t.se});else q2.push({0,t.se});}if(min_id!=1e9) cnt2[min_id]++;}for(int i=1;i<=n;i++) cnt2[i] = cnt2[i]+cnt2[i-1];
}signed main()
{
//	freopen("w.in","r",stdin);
//  freopen("ho.out","w",stdout);cin>>n>>m1>>m2;for(int i=1;i<=m1;i++) cin>>va[i].fi>>va[i].se;for(int i=1;i<=m2;i++) cin>>vb[i].fi>>vb[i].se;sort(va+1,va+1+m1);sort(vb+1,vb+1+m2);solve1();solve2();int anw = 0;for(int i=0;i<=n;i++) anw = max(anw,cnt1[i]+cnt2[n-i]);cout<<anw;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android 源码分析】Activity生命周期之onStop-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

【2024】前端学习笔记11-网页布局-弹性布局flex

学习笔记 网页布局弹性布局&#xff1a;flex案例&#xff1a;flex布局案例 网页布局 在页面布局中&#xff0c;display属性用于设置一个元素的显示方式。它可以指定元素是作为块级元素、内联元素还是充当表格元素显示。 display的常见属性值&#xff1a; block&#xff1a;将…

解决方案:机器学习中,出现欠拟合和过拟合,这两种情况分别如何解决

文章目录 一、现象二、解决方案欠拟合&#xff08;Underfitting&#xff09;过拟合&#xff08;Overfitting&#xff09; 一、现象 在工作中&#xff0c;在机器学习中&#xff0c;出现欠拟合和过拟合的时候&#xff0c;需要有对应的解决方法&#xff0c;所以整理一下 二、解决…

k8s 中微服务之 MetailLB 搭配 ingress-nginx 实现七层负载

目录 1 MetailLB 搭建 1.1 MetalLB 的作用和原理 1.2 MetalLB功能 1.3 部署 MetalLB 1.3.1 创建deployment控制器和创建一个服务 1.3.2 下载MealLB清单文件 1.3.3 使用 docker 对镜像进行拉取 1.3.4 将镜像上传至私人仓库 1.3.5 将官方仓库地址修改为本地私人地址 1.3.6 运行清…

驱动中的device和device_driver结构体

device和device driver是Linux驱动开发的基本概念。Linux kernel的思路很简单&#xff1a;驱动开发&#xff0c;就是要开发指定的软件&#xff08;driver&#xff09;以驱动指定的设备&#xff0c;所以kernel就为设备和驱动它的driver定义了两个数据结构&#xff0c;分别是devi…

ensp回顾--聚合链路技术简介与详细案例(构建基于交换机到交换机的聚合链路)

文章目录 什么是聚合链路&#xff1f;聚合链路的工作原理聚合链路的优势使用场景 案例ensp版本图例pc的ip地址具体步骤连通性测试 在现代网络中&#xff0c;聚合链路&#xff08;Link Aggregation&#xff09;是一种常见的技术&#xff0c;用于提高网络连接的带宽和可靠性。本文…

RNN经典案例——构建人名分类器

RNN经典案例——人名分类器 一、数据处理1.1 去掉语言中的重音标记1.2 读取数据1.3 构建人名类别与人名对应关系字典1.4 将人名转换为对应的onehot张量 二、构建RNN模型2.1 构建传统RNN模型2.2 构建LSTM模型2.3 构建GRU模型 三、构建训练函数并进行训练3.1 从输出结果中获得指定…

【可答疑】基于51单片机的智能台灯(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

2025秋招LLM大模型多模态面试题(九)-- LoRA 面试问题大全:从理论到实践

随着深度学习模型的不断发展,微调大模型的需求也逐渐增多。然而,传统的全参数微调需要消耗大量的计算资源和显存,对于普通用户和中小企业来说负担较大。为了应对这些问题,LoRA(Low-Rank Adaptation)应运而生。LoRA 是一种高效微调技术,通过低秩分解的方式显著减少训练参…

单目三d重建学习笔记2024

从单目视频生成动态多物体场景 已经开源&#xff1a; https://github.com/dreamscene4d/dreamscene4d 2021年&#xff1a; 浙大团队研发NeuralRecon&#xff0c;首个基于学习的实时单目三维重建系统 https://github.com/zju3dv/NeuralRecon https://github.com/zju3dv/Neura…

数据分析-28-交互式数据分析EDA工具和低代码数据科学工具

文章目录 1 数据分析的七步指南1.1 第一步:问题定义和数据采集1.2 第二步:数据清洗和预处理1.3 第三步:数据探索和分析1.4 第四步:模型建立和分析1.5 第五步:数据可视化1.6 第六步:结果解释和报告1.7 第七步:部署和维护1.8 基础的数据分析库1.9 低代码数据科学工具2 EDA…

Flutter InAppWebView 路由导航处理

flutter InAppWebView路由导航处理&#xff0c;有以下两种处理方案&#xff1a; H5层控制路由&#xff0c;H5拥有自己的路由&#xff0c;当返回到跟路由root时&#xff0c;此时点击跟节点&#xff0c;通过jsbridge调用flutter提供的方法来关闭当前widget&#xff0c;flutter关…

改变数组页面重新渲染的操作/那些操作不会重新渲染页面以及解决方法

在前端开发中&#xff0c;当数组数据发生变化时&#xff0c;是否会导致页面重新渲染&#xff0c;以及如何进行相关操作&#xff0c;这取决于使用的具体框架或库&#xff08;如React、Vue等&#xff09;及其内部机制。以下是对这一问题的详细解答&#xff1a; 一、会导致页面重…

STM32 通用定时器

一、概述 STM32内部集成了多个定时/计数器&#xff0c;根据型号不同&#xff0c;STM32系列芯片最多包含8个定时/计数器。其中&#xff0c;TIM6、TIM7为基本定时器&#xff0c;TIM2~TIM5为通用定时器&#xff0c;TIM1、TIM8为高级控制定时器。 1.定时器的类型 基本定时器通用定…

实战案例:结合大模型与爬虫技术实现12306智能查票系统

大语言模型&#xff0c;例如 GPT-4&#xff0c;拥有强大的知识储备和语言理解能力&#xff0c;能够进行流畅的对话、创作精彩的故事&#xff0c;甚至编写代码。然而&#xff0c;它们也面临着一些难以克服的困境&#xff0c;就像一个空有知识却无法行动的巨人 信息滞后&#xf…

Linux 之 安装软件、GCC编译器、Linux 操作系统基础

安装软件、GCC编译器、Linux 操作系统基础 学习任务&#xff1a; 安装 Vmware虚拟机、掌握Ubuntu 系统的使用认识 Ubuntu 操作系统的终端和 Shell掌握软件安装、文件系统、掌握磁盘管理与解压缩掌握 VIM 编辑器、Makefile 基本语法熟悉 Linux 常见指令操作 安装好开发软件&…

148.排序链表

文章目录 方法1&#xff1a;自顶向下的归并排序方法2 自底向上的归并排序 方法1&#xff1a;自顶向下的归并排序 使用归并排序算法。归并排序是一种分治算法&#xff0c;它将链表分成两半&#xff0c;然后对每一半进行排序&#xff0c;最后将两个有序的链表合并。由于链表不支…

[Go语言快速上手]初识Go语言

目录 一、什么是Go语言 二、第一段Go程序 1、Go语言结构 注意 2、Go基础语法 关键字 运算符优先级 三、Go语言数据类型 示例 小结 一、什么是Go语言 Go语言&#xff0c;通常被称为Golang&#xff0c;是一种静态类型、编译型的计算机编程语言。它由Google的Robert Gr…

用HTML5+CSS+JavaScript庆祝国庆

用HTML5CSSJavaScript庆祝国庆 中华人民共和国的国庆日是每年的10月1日。 1949年10月1日&#xff0c;中华人民共和国中央人民政府成立&#xff0c;在首都北京天安门广场举行了开国大典&#xff0c;中央人民政府主席毛泽东庄严宣告中华人民共和国成立&#xff0c;并亲手升起了…

Vue3 中Ref的最佳实践

在vue3中如果我们需要获取一个响应式的变量&#xff0c;可以使用ref来定义一个变量。 const name ref( "" );name.value "test" 定义好后&#xff0c;就可以实现修改状态&#xff0c;更新UI的效果了。 在这个基础上&#xff0c;本文主要讨论跨组件时如何…