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

2023CCPC河南省赛 VP记录

感觉现在的xcpc,风格越来越像CF,不是很喜欢,还是更喜欢多点算法题的比赛

VP银了,VP银也是银

感觉省赛都是思维题,几乎没有算法题,感觉像打了场大型的CF

B题很简单没开出来,一直搞到最后,后来发现原来是卡常了....换种写法就过了

队名是偶像yinwuxx,杭电一队著名选手QwQ

话说好像很快就要篮球被了,我去,什么都不会了,一直在写CF的S b题

怎么办,感觉真的要没了

m d,别到时候区域赛名额没搞出来,篮球被没奖,直接亏损最大化了

 Dashboard - 2023 CCPC Henan Provincial Collegiate Programming Contest - Codeforces

简略写一下思路吧:

A:

 思路:签到,一开始还想字符串哈希判回文,结果只需要n^2判几次就好了

Code:队友写的
 

#include<bits/stdc++.h>
using namespace std;
const int mxv=2e5+9;
#define int long long
char s[mxv];
map<char,int> mp;
void solve(){cin>>s,mp.clear();int len=strlen(s)-1;if(len==0){cout<<"NaN\n";return;}int flag=1;for(int i=0;i<=len;i++){if(s[len]==s[i]){flag=1;for(int j=i,k=len;j<=k;j++,k--)if(s[j]!=s[k]){flag=0;break;}if(flag==1){cout<<"HE\n";return;}}if(mp[s[i]]==0) mp[s[i]]=1;else break;}cout<<"NaN\n";
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--) solve();return 0;
}

B:

 思路:

一开始的想法是二分K,然后在check函数里面把所有段的RMQ搞出来,如果存在这一段的最小值小于前一段的最大值就是False,否则就是True

然后T14了....因为线段树的RMQ复杂度多了个log....

然后就换了ST表,然后第二维开成33,MLE了....

事实上N是1e6的数据范围,开成22就够了

注意到不需要二分,直接枚举复杂度也是够的,于是换成了枚举

然后是莫名其妙的RE,到最后也是RE,也不知道为什么

事实上check函数里面不把RMQ扔进vector里面,直接扫一遍,记录上一次的最大值然后判就过了,被卡了好几小时....

Code:

#include <bits/stdc++.h>//#define int long longusing namespace std;const int mxn=1e6+10;
const int mxe=1e6+10;
const int mxv=1e3+10;
const int mod=1e9+7;int N;
int a[mxn];
int F_min[mxn][22],F_mx[mxn][22];
int lg[mxn];void ST_init(){for(int j=1;j<=22;j++){for(int i=1;i+(1<<(j-1))<=N;i++){F_min[i][j]=min(F_min[i][j-1],F_min[i+(1<<(j-1))][j-1]);F_mx[i][j]=max(F_mx[i][j-1],F_mx[i+(1<<(j-1))][j-1]);}}
}
void L_init(){lg[1]=0;for(int i=2;i<mxn;i++) lg[i]=lg[i>>1]+1;
}
int query_mi(int l,int r){int k=lg[r-l+1]; return min(F_min[l][k],F_min[r-(1<<k)+1][k]);
}
int query_mx(int l,int r){int k=lg[r-l+1]; return max(F_mx[l][k],F_mx[r-(1<<k)+1][k]);
}
void solve(){cin>>N;L_init();for(int i=1;i<=N;i++){cin>>a[i];F_min[i][0]=F_mx[i][0]=a[i];}if(is_sorted(a+1,a+1+N)){cout<<N<<'\n';return;}ST_init();int ans=0;for(int k=1;k<=N;k++){int last=0,ok=1;for(int l=1;l<=N;l+=k){int r=min(l+k-1,N);if(query_mi(l,r)<last){ok=0;break;}last=query_mx(l,r);}ans+=ok;}cout<<ans<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}

C:

思路:

猜了个结论就过了,很奇怪,这种题还是第一次碰到

#include <bits/stdc++.h>//#define int long longusing namespace std;const int mxn=1e6+10;
const int mxe=1e6+10;
const int mxv=1e3+10;
const int mod=1e9+7;string s1;void solve(){cin>>s1;string s2=s1.substr(0,1000);s1.erase(0,1000);if(s1.find(s2)!=-1) cout<<"No"<<'\n';else cout<<"Yes"<<'\n';   
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}

 

D题图论难题,会不了一点

E:

思路:

一开始队友写的DFS,然后T了,换成DP然后MLE了

是个很篮球杯风格的DP,但是开了三维MLE

换成vector也MLE,关掉define也是MLE

这件事告诉我们,正式比赛一般是不卡这种东西的

我滚了一下数组就AC了

Code:

#include<bits/stdc++.h>
using namespace std;
const int mxv=5e2+9,mxn=1e3+3;
const int Inf=0x3f3f3f3f;
//#define int long long
int n,m,x;
char s[mxv][mxv];
int dx[]={0,0,1};
int dy[]={0,1,0};
int dp[2][mxv][mxn];
void solve(){cin>>n>>m>>x;//  vector< vector < vector<int> > > dp(2,vector< vector<int> >(m+1,vector<int>(x+1,-Inf)));//dp(i,j,k):到达(i,j),已经修改了k次的最大价值for(int i=0;i<=1;i++){for(int j=0;j<=m;j++){for(int k=0;k<=x;k++){dp[i][j][k]=-Inf;}}}for(int i=1;i<=n;i++) cin>>s[i]+1;if(s[1][1]=='1') dp[1&1][1][0]=1;else if(s[1][1]=='0') dp[1&1][1][0]=0;else dp[1][1][1]=1,dp[1&1][1][0]=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=0;k<=x;k++){if(i+1<=n){dp[(i+1)&1][j][k]=max(dp[(i+1)&1][j][k],dp[i&1][j][k]);if(s[i+1][j]=='1')dp[(i+1)&1][j][k]=max(dp[i&1][j][k]+1,dp[(i+1)&1][j][k]);				if(s[i+1][j]=='?'&&k-1>=0)dp[(i+1)&1][j][k]=max(dp[i&1][j][k-1]+1,dp[(i+1)&1][j][k]);}if(j+1<=m){dp[i&1][j+1][k]=max(dp[i&1][j+1][k],dp[i&1][j][k]);if(s[i][j+1]=='1')dp[i&1][j+1][k]=max(dp[i&1][j][k]+1,dp[i&1][j+1][k]);				if(s[i][j+1]=='?'&&k-1>=0)dp[i&1][j+1][k]=max(dp[i&1][j][k-1]+1,dp[i&1][j+1][k]);}}}}int ans=0;for(int i=0;i<=x;i++) ans=max(ans,dp[n&1][m][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();return 0;
}

 F:

思路:

首先显然是要排序,然后选K个元素对应区间长度为K,所以就是滑动窗口滑过去就可以了,维护一下RMQ,统计一下最大的min*max

Code:

#include <bits/stdc++.h>#define int long longusing namespace std;const int mxn=5e5+10;
const int mxe=5e5+10;
const int mxv=1e3+10;
const int mod=1e9+7;struct ty{int mi;
}tree[mxe<<2];int N,K;
int a[mxn],b[mxn];void pushup(int rt){tree[rt].mi=min(tree[rt<<1].mi,tree[rt<<1|1].mi);
}
int query(int rt,int l,int r,int x,int y){if(x<=l&&r<=y){return tree[rt].mi;}int mid=l+r>>1;int res=1e18;if(x<=mid) res=min(res,query(rt<<1,l,mid,x,y));if(y>mid) res=min(res,query(rt<<1|1,mid+1,r,x,y));return res;
}
void build(int rt,int l,int r){if(l==r){tree[rt].mi=b[l];return;}int mid=l+r>>1;build(rt<<1,l,mid);build(rt<<1|1,mid+1,r);pushup(rt);
}
void solve(){cin>>N>>K;for(int i=1;i<=N;i++) cin>>a[i];sort(a+1,a+1+N);for(int i=1;i<=N;i++) b[i]=a[i]-a[i-1];build(1,2,N);//for(int i=1;i<=N;i++) cout<<a[i]<<" \n"[i==N];//for(int i=2;i<=N;i++) cout<<b[i]<<" \n"[i==N];int ans=1e18;for(int l=1;l+K-1<=N;l++){int r=l+K-1;int mx=a[r]-a[l];int mi=query(1,2,N,l+1,r);ans=min(ans,mi*mx);}cout<<ans<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}

 

G题大模拟不想写

H:

思路:

需要对N和2*k进行分类讨论

如果N/k<0.5,那么最小值一定是0,最大值就是0.5,0.5.....这样子放,答案就是N/0.5,因为最后几个一定是0

否则最小值就是0.49,0.49这样子放,答案就是最后剩下的数的上取整,最大值就是0.5,0.5这样放,答案就是K-1个1+最后一个数上取整

Code:

#include<bits/stdc++.h>
//#define int long long
#define rep(i,a,n) for(int i=a; i<=n ;i++)
#define pii pair<int,int>
#define pb push_back
#define fi first
#define sc second
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
const double eps=0.5, exs=0.49999999999999999;
void solve(){int n, k;cin>>n>>k;double c=n-(k-1)*exs;//cout<<c<<'\n';if(c<0.5){int ans2=int(n/0.5);cout<<0<<' '<<ans2<<'\n';}else{int ans1=0, ans2=0;ans1=int(c+0.5);double d=n-(k-1)*0.5;ans2=int(d+0.5)+k-1;cout<<ans1<<' '<<ans2<<'\n';}
}
signed main(){ios;int t=1;cin>>t;while(t--){solve();}return 0;
}

I:

直接看这个:【容斥+扫描线】2023CCPC河南省赛 I 数正方形_lamentropetion的博客-CSDN博客

JL都是神秘题,不会QwQ 

相关文章:

2023CCPC河南省赛 VP记录

感觉现在的xcpc&#xff0c;风格越来越像CF&#xff0c;不是很喜欢&#xff0c;还是更喜欢多点算法题的比赛 VP银了&#xff0c;VP银也是银 感觉省赛都是思维题&#xff0c;几乎没有算法题&#xff0c;感觉像打了场大型的CF B题很简单没开出来&#xff0c;一直搞到最后&…...

【ECCV2022】DaViT: Dual Attention Vision Transformers

DaViT: Dual Attention Vision Transformers, ECCV2022 解读&#xff1a;【ECCV2022】DaViT: Dual Attention Vision Transformers - 高峰OUC - 博客园 (cnblogs.com) DaViT&#xff1a;双注意力Vision Transformer - 知乎 (zhihu.com) DaViT: Dual Attention Vision Trans…...

Apache 配置与应用

Apache 配置与应用 一、构建虚拟 Web 主机httpd服务支持的虚拟主机类型包括以下三种: 二、基于域名的虚拟主机1&#xff0e;为虚拟主机提供域名解析方法一&#xff1a;部署DNS域名解析服务器 来提供域名解析方法二&#xff1a;在/etc/hosts 文件中临时配置域名与IP地址的映射关…...

OpenGL 纹理

1.简介 纹理是一个2D图片&#xff08;甚至也有1D和3D的纹理&#xff09;&#xff0c;它可以用来添加物体的细节&#xff1b;你可以想象纹理是一张绘有砖块的纸&#xff0c;无缝折叠贴合到你的3D的房子上&#xff0c;这样你的房子看起来就像有砖墙外表了。 为了能够把纹理映射(M…...

Jeston Orin Nnao 安装pytorch与torchvision环境

大家好&#xff0c;我是虎哥&#xff0c;Jeston Orin nano 8G模块&#xff0c;提供高达 40 TOPS 的 AI 算力&#xff0c;安装好了Jetpack5.1之后&#xff0c;我们需要配置一些支持环境&#xff0c;来为我们后续的深度学习开发提供支持。本章内容&#xff0c;我将主要围绕安装对…...

ROS:常用可视化工具的使用

目录 一、日志输出工具——rqt_console二、绘制数据曲线——rqt_plot三、图像渲染工具——rqt_image_view四、图形界面总接口——rqt五、Rviz六、Gazebo 一、日志输出工具——rqt_console 启动海龟键盘控制节点&#xff0c;打开日志输出工具 roscorerosrun turtlesim turtles…...

智能应用搭建平台——LCHub低代码表单 vs 流程表单 vs 仪表盘

1. LCHub低代码如何选择 「流程表单」:填报数据,并带有流程审批功能,适合报销、请假申请或其他工作流; 「表单」:填报数据,并带有数据协作功能,如修改、删除、导入、导出,并可以给不同的人不同的管理权限; 「仪表盘」:数据分析处理、结果展示功能,如数据汇总、趋…...

Mac下通过Docker安装ElasticSearch集群

1、安装ElasticSearch 使用docker直接获取es镜像&#xff0c;执行命令docker pull elasticsearch:7.7.0 执行完成后&#xff0c;执行docker images即可看到上一步拉取的镜像。 2、创建数据挂在目录&#xff0c;以及配置ElasticSearch集群配置文件 创建数据文件挂载目录 mkdir -…...

MySQL redo log、undo log、binlog

MySQL是一个广泛使用的关系型数据库管理系统&#xff0c;它通过一系列的日志来保证数据的一致性和持久性。在MySQL中&#xff0c;有三个重要的日志组件&#xff0c;它们分别是redo log&#xff08;重做日志&#xff09;、undo log&#xff08;回滚日志&#xff09;和binlog&…...

文件包含漏洞

一、原理解析。 开发人员通常会把可重复使用的函数写到单个文件中&#xff0c;在使用到某些函数时&#xff0c;可直接调用此文件&#xff0c;而无须再次编写&#xff0c;这种调用文件的过程被称为包含。 注意&#xff1a;对于开发人员来讲&#xff0c;文件包含很有用&#xf…...

Python 中的 F-Test

文章目录 F 统计量和 P 值方差(ANOVA) 分析中的 F 值 本篇文章介绍 F 统计、F 分布以及如何使用 Python 对数据执行 F-Test 测试。 F 统计量是在方差分析检验或回归分析后获得的数字&#xff0c;以确定两个总体的平均值是否存在显着差异。 它类似于 T 检验的 T 统计量&#xf…...

Docker网络模式

一、docker网络概述 1、docker网络实现的原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c;Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c; 同时Docker网桥是 每个容器的…...

百度离线资源治理

作者 | 百度MEG离线优化团队 导读 近些年移动互联网的高速发展驱动了数据爆发式的增长&#xff0c;各大公司之间都在通过竞争获得更大的增长空间&#xff0c;大数据计算的效果直接影响到公司的发展&#xff0c;而这背后其实依赖庞大的算力及数据作为支撑&#xff0c;因此在满足…...

C++进阶之继承

文章目录 前言一、继承的概念及定义1.继承概念2.继承格式与访问限定符3.继承基类与派生类的访问关系变化4.总结 二、基类和派生类对象赋值转换基本概念与规则 三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员六、复杂的菱形继承及菱形虚拟继承七、…...

在 Transformers 中使用约束波束搜索引导文本生成

引言 本文假设读者已经熟悉文本生成领域波束搜索相关的背景知识&#xff0c;具体可参见博文 如何生成文本: 通过 Transformers 用不同的解码方法生成文本。 与普通的波束搜索不同&#xff0c;约束 波束搜索允许我们控制所生成的文本。这很有用&#xff0c;因为有时我们确切地知…...

Centos7更换OpenSSL版本

OpenSSL 1.1.0 用户应升级至 1.1.0aOpenSSL 1.0.2 用户应升级至 1.0.2iOpenSSL 1.0.1 用户应升级至 1.0.1u 查看openssl版本 openssl version -v选择升级版本 我的版本是OpenSSL 1.0.2系列&#xff0c;所以要升级1.0.2i https://www.openssl.org/source/old/1.0.2/openssl-…...

基于摄影测量的三维重建【终极指南】

我们生活的时代非常令人兴奋&#xff0c;如果你对 3D 东西感兴趣&#xff0c;更是如此。 我们有能力使用任何相机&#xff0c;从感兴趣的物体中捕捉一些图像数据&#xff0c;并在眨眼间将它们变成 3D 资产&#xff01; 这种通过简单的数据采集阶段进行的 3D 重建过程是许多行业…...

配置ThreadPoolExecutor

ThreadPoolExecutor为一些Executor 提供了基本的实现,这些Executor 是由Executors中的newCachedThreadPool、newFixedThreadPool和newScheduledThreadExecutor 等工厂方法返回的。ThreadPoolExecutor是一个灵活的、稳定的线程池,允许进行各种定制。 如果默认的执行策略不能满足…...

Yolov5s算法从训练到部署

文章目录 PyTorch GPU环境搭建查看显卡CUDA版本Anaconda安装PyTorch环境安装PyCharm中验证 训练算法模型克隆Yolov5代码工程制作数据集划分训练集、验证集修改工程相关文件配置预训练权重文件配置数据文件配置模型文件配置 超参数配置 测试训练出来的算法模型 量化转换算法模型…...

分布式补充技术 01.AOP技术

01.AOP技术是对于面向对象编程&#xff08;OOP&#xff09;的补充。是按照OCP原则进行的编写&#xff0c;(ocp是修改模块权限不行&#xff0c;扩充可以) 02.写一个例子&#xff1a; 创建一个新的java项目&#xff0c;在main主启动类中&#xff0c;写如下代码。 package com.co…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...