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

2024年码蹄杯本科院校赛道初赛(省赛)

赛时所写题,简单写一下思路,qwq

第一题:

输出严格次小值,

//#pragma GCC optimize(2)#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>
#include<ctime>
#include<bitset>using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int>PII;#define fi first
#define se second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()
#define pb push_backint const mod=1e9+7; 
int const B=507;
//int const mod=998244353; 
//int const base=131,mod=2e9+11;
int const N=2e5+7,M=2e6+7;
int const INF=0x3f3f3f3f;
LL const INFF=0x3f3f3f3f3f3f3f3f;int n,m,q,k;
int x,y,z;
int a[N];
string s,t;
vector<int>g[N];
struct Node{int w,x,y;bool operator<(const Node &o)const{return w<o.w;}
};void solve(){cin>>n;for(int i=0;i<n;i++)	cin>>a[i];sort(a,a+n);int i=1;while(i<n&&a[i]==a[0])	i++;cout<<a[i];
} void init(){}int main()
{//std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);//init();int T=1;//cin>>T;//scanf("%d",&T);for(int i=1;i<=T;i++){solve();}return 0;
}

第二题:

思路:一段全是1可以直接累加答案,然后记录一个左右两端连续1个数的最大值

//#pragma GCC optimize(2)#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>
#include<ctime>
#include<bitset>using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int>PII;#define fi first
#define se second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()
#define pb push_backint const mod=1e9+7; 
int const B=507;
//int const mod=998244353; 
//int const base=131,mod=2e9+11;
int const N=2e5+7,M=2e6+7;
int const INF=0x3f3f3f3f;
LL const INFF=0x3f3f3f3f3f3f3f3f;int n,m,q,k;
int x,y,z;
int a[N];
string s,t;
vector<int>g[N];void solve(){cin>>n;int ans=0;int mx1=0,mx2=0;for(int i=0;i<n;i++){cin>>s;	m=s.size();int cnt1=0,cnt2=0;for(int i=0;i<m&&s[i]=='1';i++){cnt1++;}for(int i=m-1;i>=0&&s[i]=='1';i--){cnt2++;}if(cnt1==m)	ans+=m;else{mx1=max(mx1,cnt1);mx2=max(mx2,cnt2);}}  cout<<ans+max(mx1,mx2)<<endl;
} void init(){}int main()
{//std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);//init();int T=1;//cin>>T;//scanf("%d",&T);for(int i=1;i<=T;i++){solve();}return 0;
}

第三题:

思路:每一步只能往下走,或者往右走,(x1,y2)在(x2,y2)左上角时无解,两点的距离大于n时也是无解的,总距离为n,可以选k1个向左(或者选k2个向右),C(n,k1)/C(n,k2),记得除法用逆元

//#pragma GCC optimize(2)#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>
#include<ctime>
#include<bitset>using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int>PII;#define fi first
#define se second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()
#define pb push_back//int const mod=1e9+7; 
int const B=507;
int const mod=998244353; 
//int const base=131,mod=2e9+11;
int const N=3e5+7,M=2e6+7;
int const INF=0x3f3f3f3f;
LL const INFF=0x3f3f3f3f3f3f3f3f;int fact[N],infact[N];
LL inv100;LL qpow(LL a,LL b,int p=mod){LL res=1;a%=p;while(b){if(b&1) res=res*a%p;a=a*a%p;b/=2;}return res;
}
LL C(int a,int b){if(b>a)	swap(a,b);return 1LL*fact[a]*infact[a-b]%mod*infact[b]%mod;
}
LL lucas(LL a,LL b){if(a<mod&&b<mod)	return C(a,b);return 1LL*lucas(a/mod,b/mod)*lucas(a%mod,b%mod);
}void solve(){int x1,x2,y1,y2,n,p,q;scanf("%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&n,&p,&q);LL k1=x2-x1,k2=y2-y1;if(x1>x2||y1>y2||k1+k2!=n)	printf("0\n");else{LL t=C(n,k1);	LL ans=t%mod*qpow(p*inv100,k1)%mod*qpow(q*inv100,k2)%mod;printf("%lld\n",ans);}
} void init(){inv100=qpow(100,mod-2);fact[0]=infact[0]=1;for(int i=1;i<N;i++){fact[i]=1LL*fact[i-1]*i%mod;infact[i]=1LL*infact[i-1]*qpow(i,mod-2)%mod;}	
//	for(int i=1;i<=10;i++){
//		for(int j=0;j<=i;j++){
//			cout<<C(i,j)<<" ";
//		}
//		cout<<endl;
//	}
}int main()
{//std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);init();int T=1;//cin>>T;scanf("%d",&T);for(int i=1;i<=T;i++){solve();}return 0;
}

第四题:

思路:缩点后,跑拓扑排序,记录缩点后每一个团的最小值

//#pragma GCC optimize(2)#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>
#include<ctime>
#include<bitset>using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int>PII;#define fi first
#define se second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()
#define pb push_backint const mod=1e9+7; 
int const B=507;
//int const mod=998244353; 
//int const base=131,mod=2e9+11;
int const N=2e5+7,M=2e6+7;
int const INF=0x3f3f3f3f;
LL const INFF=0x3f3f3f3f3f3f3f3f;int n,m,q,k;
int x,y,z;
int a[N];
string s,t;
vector<int>g[N];
int dfn[N],low[N],tot;
int stk[N],top;
bool instk[N];
int scc[N],sz[N],cnt;
int mi[N];
int inD[N];void tarjan(int x){low[x]=dfn[x]=++tot;stk[++top]=x; instk[x]=true;for(int y:g[x]){if(dfn[y]==0){tarjan(y);low[x]=min(low[x],low[y]);}else if(instk[y]){low[x]=min(low[x],dfn[y]);}}if(dfn[x]==low[x]){int y; cnt++;do{y=stk[top--]; instk[y]=false;scc[y]=cnt;sz[cnt]++;mi[cnt]=min(mi[cnt],a[y]);}while(y!=x);}
}
vector<PII>edge;void solve(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)	scanf("%d",a+i);for(int i=0;i<m;i++){scanf("%d%d",&x,&y);edge.pb({x,y});g[x].pb(y);}memset(mi,0x3f,sizeof mi);for(int i=1;i<=n;i++)if(dfn[i]==0)	tarjan(i);for(int i=1;i<=n;i++) g[i].clear();for(auto [x,y]:edge){if(scc[x]!=scc[y]){g[scc[x]].pb(scc[y]);inD[scc[y]]++;}}queue<int>q;for(int i=1;i<=cnt;i++){if(inD[i]==0){q.push(i);}}while(q.size()){int x=q.front();	 q.pop();for(int y:g[x]){mi[y]=min(mi[y],mi[x]);if(--inD[y]==0)	q.push(y);}}LL ans=0;for(int i=1;i<=n;i++)	ans+=mi[scc[i]];cout<<ans<<"\n";for(int i=1;i<=n;i++)	cout<<mi[scc[i]]<<" ";cout<<endl;
} void init(){}int main()
{//std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);//init();int T=1;//cin>>T;//scanf("%d",&T);for(int i=1;i<=T;i++){solve();}return 0;
}

第六题:

思路:离线处理,逆向思维,拆边改成建边,用并查集维护每一个小组的内出现的个数,合并时采用启发式合并

//#pragma GCC optimize(2)#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>
#include<ctime>
#include<bitset>using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int>PII;#define fi first
#define se second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()
#define pb push_backint const mod=1e9+7; 
int const B=507;
//int const mod=998244353; 
//int const base=131,mod=2e9+11;
int const N=4e5+7,M=4e5+7;
int const INF=0x3f3f3f3f;
LL const INFF=0x3f3f3f3f3f3f3f3f;int n,m,q,k;
int x,y,z;
int a[N];
bool vis[N];	//标记删除的边
struct Node{int opt,x,y;
}Q[M];
int fa[N];
PII edges[N];
int ans[M];int find(int x){return fa[x]==x?fa[x]:fa[x]=find(fa[x]);
}void solve(){scanf("%d%d%d",&n,&m,&q);for(int i=1;i<=n;i++)	scanf("%d",a+i);for(int i=1;i<=m;i++)	scanf("%d%d",&edges[i].fi,&edges[i].se);for(int i=1;i<=q;i++){int opt,x,y=0;	scanf("%d%d",&opt,&x);if(opt==1)	vis[x]=true;else{scanf("%d",&y);}Q[i]={opt,x,y};}vector<map<int,int>>mp(n+1);for(int i=1;i<=n;i++)	fa[i]=i;for(int i=1;i<=n;i++)	mp[i][a[i]]++;for(int i=1;i<=m;i++){if(vis[i])	continue;int x=edges[i].fi,y=edges[i].se;int px=find(x),py=find(y);if(px!=py){if(mp[px].size()<mp[py].size())	swap(mp[px],mp[py]);fa[py]=px;for(auto [val,c]:mp[py]){mp[px][val]+=c;}}}for(int i=q;i>=1;i--){if(Q[i].opt==1){int x=edges[Q[i].x].fi,y=edges[Q[i].x].se;int px=find(x),py=find(y);if(px!=py){if(mp[px].size()<mp[py].size())	swap(mp[px],mp[py]);fa[py]=px;for(auto [val,c]:mp[py]){mp[px][val]+=c;}}}else{int x=Q[i].x,y=Q[i].y;int px=find(x);ans[i]=mp[px][y-a[x]]-(a[x]+a[x]==y);}}for(int i=1;i<=q;i++)	if(Q[i].opt==2) printf("%d\n",ans[i]);
} void init(){}int main()
{//std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);//init();int T=1;//cin>>T;//scanf("%d",&T);for(int i=1;i<=T;i++){solve();}return 0;
}

相关文章:

2024年码蹄杯本科院校赛道初赛(省赛)

赛时所写题&#xff0c;简单写一下思路&#xff0c;qwq 第一题&#xff1a; 输出严格次小值&#xff0c; //#pragma GCC optimize(2)#include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <queue> #incl…...

PHP蜜语翻译器在线文字转码解码源码

源码介绍 PHP蜜语翻译器在线文字转码解码源码 文字加密通话、一键转换、蜜语密码 无需数据库,可以将文字、字母、数字、代码、表情、标点符号等内容转换成新的文字形式&#xff0c;通过简单的文字以不同的排列顺序来表达不同的内容&#xff01;支持在线加密解密 有多种加密展示…...

安卓浏览器区分启动、打开、分享

搞了几个钟头&#xff0c;终于全兼容了&#xff0c;分享有2种类型&#xff01; void getDataFromIntent(Intent intent) {if (intent.getAction().equals(Intent.ACTION_VIEW)) {urln intent.getDataString();if (urln ! null) {if (urln.contains("\n"))urln url…...

C/C++ 数组负数下标

一 概述 在 C 中&#xff0c;数组是一块连续的内存空间&#xff0c;数组的下标通常用来定位这段内存中的特定元素。下标通常从 0 开始&#xff0c;最大到数组长度减 1。例如&#xff0c;一个有 10 个元素的数组&#xff0c;其有效下标范围是从 0 到 9。 当你尝试使用负数下标来…...

钓鱼网站开发原理(社会工程学)

钓鱼网站开发原理&#xff08;社会工程学&#xff09; 一、课程简介1、课程大纲2、课程目标3、知识储备 二、钓鱼网站简介1、什么是钓鱼网站2、开发&原理 三、PHP环境搭建1、简介2、自动安装MySQL/apache/PHP3、安装navicat 四、PDO表单入库案例1、语法2、显示登录表单3、入…...

如何优雅地使用 console.log 打印数组或对象

一、背景 使用 console.log 在控制台中打印数组或者对象时&#xff0c;很多时候它们的字段都是默认关闭的&#xff0c;需要手动一个个的点开&#xff0c;非常不直观且麻烦。 二、解决方案 使用 JSON.stringify() 的第三个参数 我们来看一下官方对于 JSON.stringify 的介绍 三、…...

模式分解的概念(下)-无损连接分解的与保持函数依赖分解的定义和判断、损失分解

一、无损连接分解 1、定义 2、检验一个分解是否是无损连接分解的算法 输入与输出 输入&#xff1a; 关系模式R&#xff08;U&#xff0c;F&#xff09;&#xff0c;F是最小函数依赖集 R上的一个分解 输出&#xff1a; 判断分解是否为无损连接分解 &#xff08;1&#x…...

vue3父组件获取子组件的实例对象

一&#xff0c;ref 在父组件的模板里&#xff0c;对子组件的标签定义ref属性&#xff0c;并且设置属性值&#xff0c;在方法里获取ref()获取实例对象。 父组件&#xff1a; <template><div ><div>我是父组件</div><<SonCom ref"sonComRe…...

主流框架选择:React、Angular、Vue的详细比较

目前前端小伙伴经常使用三种广泛使用的开发框架&#xff1a;React、Angular、Vue - 来设计网站 Reactjs&#xff1a;效率和多功能性而闻名 Angularjs&#xff1a;创建复杂的应用程序提供了完整的解决方案&#xff0c;紧凑且易于使用的框架 Vuejs&#xff1a;注重灵活性和可重用…...

交易者的意义是什么?

按照阿德勒的说法&#xff1a;人生的意义就是为社会创造价值&#xff0c;推动整个人类社会的发展进步。 我认同且秉持这种观点。 而在交易中&#xff0c;你是否直接或者间接为社会做贡献了呢&#xff1f;这个还真不好说。 但是做为职业交易者&#xff0c;你的存在价值&#…...

io_uring

转&#xff1a;[译] Linux 异步 I_O 框架 io_uring&#xff1a;基本原理、程序示例与性能压测&#xff08;2020&#xff09; 新一代异步IO框架 io_uring &#xff5c; 得物技术 干翻 nio &#xff0c;王炸 io_uring 来了 &#xff01;&#xff01;&#xff08;图解史上最全&a…...

构建高并发Web应用:基于Gunicorn、Flask和Docker的部署指南

目录 一 理解基础组件 什么是Flask? 什么是Gunicorn? 什么是Docker? 二 环境准备 三 构建Flask应用 创建项目结构 编写Flask应用 app/views.py 四 使用Gunicorn部署Flask应用 配置Gunicorn Gunicorn配置文件 五 使用Docker进行容器化部署 编写Dockerfile 构建…...

【Ruby简单脚本02】双色球系统

# frozen_string_literal: true require date # 生成中奖号码的工具 # 红球 1-32 篮球 1-15 def create_num nums [] 6.times do while true num rand(1..32) unless nums.include?(num) nums << num break end end end blue rand(1..15) nums…...

Netty ByteBuf 使用详解

文章目录 1.概述2. ByteBuf 分类3. 代码实例3.1 常用方法3.1.1 创建ByteBuf3.1.2 写入字节3.1.3 扩容3.1.2.1 扩容实例3.1.2.2 扩容计算新容量代码 3.1.4 读取字节3.1.5 标记回退3.1.6 slice3.1.7 duplicate3.1.8 CompositeByteBuf3.1.9 retain & release3.1.9.1 retain &a…...

怎样去掉卷子上的答案并打印

当面对试卷答案的问题时&#xff0c;一个高效而简单的方法是利用图片编辑软件中的“消除笔”功能。这种方法要求我们首先将试卷拍摄成照片&#xff0c;然后利用该功能轻松擦除答案。尽管这一方法可能需要些许时间和耐心&#xff0c;但它确实为我们提供了一个可行的解决途径。 然…...

海思SS928/SD3403开发笔记1——使用串口调试开发板

该板子使用串口可以调试&#xff0c;下面是win11 调试 该板子步骤 1、给板子接入鼠标、键盘、usb转串口 2、下载SecureCRT&#xff0c;并科学使用 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11dIkZVstvHQUhE8uS1YO0Q 提取码&#xff1a;vinv 3、安装c…...

JSON数据操作艺术

在现代Web开发和数据交换场景中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&#xff0c;扮演着至关重要的角色。它以易于阅读的文本形式存储和传输数据对象&#xff0c;而这些对象的核心便是由属性名&#xff08;键&…...

如何验证Rust中的字符串变量在超出作用域时自动释放内存?

讲动人的故事,写懂人的代码 在公司内部的Rust培训课上,讲师贾克强比较了 Rust、Java 和 C++ 三种编程语言在变量越过作用域时自动释放堆内存的不同特性。 Rust 通过所有权系统和借用检查,实现了内存安全和自动管理,从而避免了大部分内存泄漏。Rust 自动管理标准库中数据类…...

55.Python pip install 安装失败的一个情况Requirement already satisfied

1.问题 以前使用Pycharm 社区版开发的一个项目&#xff0c;今天使用PyCharm 专业版打开&#xff0c;原项目的虚拟环境从venv更换为.venv&#xff0c;然后重新安装插件。安装时&#xff0c;提示Requirement already satisfied: qt_material in c:\tools\python37\lib\site-packa…...

Axios进阶

目录 axios实例 axios请求配置 拦截器 请求拦截器 响应拦截器 取消请求 axios不仅仅是简单的用基础请求用法的形式向服务器请求数据&#xff0c;一旦请求的端口与次数变多之后&#xff0c;简单的请求用法会有些许麻烦。所以&#xff0c;axios允许我们进行创建axios实例、ax…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...