【历年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 long

using 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.mfbz.cn/a/886784.html

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

相关文章

9-贪心算法

参考&#xff1a;代码随想录 题目分类大纲如下&#xff1a; 贪心算法理论基础 什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心的套路&#xff08;什么时候用贪心&#xff09; 贪心算法并没有固定的套路&#xff0c;说白了…

OpenSource - 开源WAF_SamWaf

文章目录 PreSafeLine VS SamWaf开发初衷软件介绍架构界面主要功能 使用说明下载最新版本快速启动WindowsLinuxDocker 启动访问升级指南自动升级手动升级 在线文档 代码相关代码托管介绍和编译已测试支持的平台测试效果 安全策略问题反馈许可证书贡献代码 Pre Nginx - 集成Mod…

Java继承、final/protected说明、super/this辨析

目录 1.什么是继承 2.继承的特征 3.子类构造方法 4.super和this辨析 5.再谈初始化 6.protected关键字用法说明 7.final的用法说明 1.什么是继承 上面的这个animal就是基类&#xff0c;我们的这个dog和bird都是继承这个基类的特征&#xff0c;使用的是extends这个关键字&a…

Python编写的贪吃蛇小游戏

安装包 pip install pygame完整代码 import pygame import randompygame.init()# 定义颜色 white (255, 255, 255) black (0, 0, 0) red (213, 50, 80) green (0, 255, 0) blue (50, 153, 213)# 定义屏幕大小 dis_width 800 dis_height 600dis pygame.display.set_mo…

【大数据入门 | Hive】函数{单行函数,集合函数,炸裂函数,窗口函数}

1. 函数简介&#xff1a; Hive会将常用的逻辑封装成函数给用户进行使用&#xff0c;类似于Java中的函数。 好处&#xff1a;避免用户反复写逻辑&#xff0c;可以直接拿来使用。 重点&#xff1a;用户需要知道函数叫什么&#xff0c;能做什么。 Hive提供了大量的内置函数&am…

Redis操作常用API

说明&#xff1a;Redis应用于java项目中&#xff0c;操作Redis数据可以使用API&#xff0c;相较于命令行更方便。使用前&#xff0c;需先添加依赖。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-re…

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

本文根据2024云栖大会实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a; 王 峰 | 阿里云智能集团研究员、开源大数据平台负责人 李 钰&#xff5c;阿里云智能集团资深技术专家 范 振&#xff5c;阿里云智能集团高级技术专家 李劲松&#xff5c;阿里云…

【机器学习基础】Transformer学习

Transformer学习 一、输入1. Word Embedding2. Positional EncodingPositional Encoding的计算方法二、自注意力机制二、Add & Norm层1. Add 代表残差连接(Residual Connection)2. Norm= Normalization归一化三、FeedForward层其他资料一、输入 第一步:获取输入句子的每…

基于微信小程序的四六级词汇+ssm(lw+演示+源码+运行)

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;四六级词汇小程序被用户普遍使用&#xff0c;为方便用户能…

银河麒麟V10 SP1如何进入救援模式?

银河麒麟V10 SP1如何进入救援模式&#xff1f; 1、准备工作2、进入BIOS/UEFI进入救援模式注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在使用银河麒麟高级服务器操作系统V10 SP1时&#xff0c;如果遇到系统无法正常启动或需要进…

搭建基于H.265编码的RTSP推流云服务器

一、前言 网上能够找到的RTSP流地址&#xff0c;均是基于H.264编码的RTSP流地址&#xff0c;无法测试应用是否可以播放H265实时流为此&#xff0c;搭建本地的把H.264转码成H.265的RTSP服务器&#xff0c;不管是通过VLC搭建本地RTSP服务器&#xff0c;还是通过FFmpeg搭建本地RT…

关于HTML 案例_个人简历展示01

案例效果展示 代码 <!DOCTYPE html> <lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个人简历信息</title> </he…

win11/win10/windows下快安装并使用git

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Git 的特点&#xff1f;二、GIT安装方法1.打开GIT官网2.下载git安装程序整个安装过程基本上直接用默认选项就可以 总结 前言 提示&#xff1a;GIT介绍 GI…

【环境配置】科研小白Windows下安装Git

2024年小白使用Win10安装Git 2.46.2教程&#xff1a; 1 下载安装包 访问下载地址 Git - Downloading Package (git-scm.com) 下载之后打开文件 2 安装过程 点击Next 2.1 选择安装路径 2.2 选择勾选必要组件 2.3 一路Next 这一步直接Next即可 继续点击Next 继续点击Ne…

Python、C++、java阶乘算法

最近&#xff0c;我除了Python还学了C和Java&#xff0c;然后在网上看到编程考题&#xff1a;阶乘。 首先&#xff0c;我们先理解什么是阶乘。 阶乘是数学中的一个概念&#xff0c;通常定义为从1乘到指定的数。具体来说&#xff0c;一个正整数的阶乘&#xff08;记作n!&#…

Pikachu-Cross-Site Scripting-xss盲打

xss盲打&#xff0c;不是一种漏洞类型&#xff0c;而是一个攻击场景&#xff1b;在前端、或者在当前页面是看不到攻击结果&#xff1b;而是在后端、在别的页面才看到结果。 登陆后台&#xff0c;查看结果&#xff1b;

神经网络激活函数之前的加权求和 | 矩阵相乘运算法则(清晰版)

1. 神经网络中进行加权求和为什么要将w矩阵进行转置&#xff1f; 下面以一个简单的神经网络作为举例&#xff1a; 我们要将输入特征与W进行加权求和&#xff0c;想要的是下面这种结果&#xff1a; 但是根据矩阵相乘的运算法则&#xff1a; 矩阵A的列数&#xff08;column&am…

CTF刷题buuctf

[WUSTCTF2020]颜值成绩查询 拿到相关题目&#xff0c;其实根据功能和参数分析。需要传入一个学号然后进行针对于对应的学号进行一个查询&#xff0c;很可能就会存在sql注入。 其实这道题最难的点&#xff0c;在于过滤了空格&#xff0c;因此我们使用 /**/来过滤空格的限制。…

低功耗4G模组Air780E之串口通信篇

你对低功耗4G模组Air780E有多少了解&#xff1f; 今天我们来讲解低功耗4G模组Air780E的串口通信的基本用法&#xff0c;小伙伴们&#xff0c;学起来吧&#xff01; 一、硬件准备 780E开发板一套&#xff0c;包括天线、USB数据线。 USB转TTL工具或线&#xff08;例如ch340、…

【mmengine】配置器(config)(入门)读取与使用

一、 介绍 MMEngine 实现了抽象的配置类&#xff08;Config&#xff09;&#xff0c;为用户提供统一的配置访问接口。 配置类能够支持不同格式的配置文件&#xff0c;包括 python&#xff0c;json&#xff0c;yaml&#xff0c;用户可以根据需求选择自己偏好的格式。 配置类提供…