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 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

大学计算机专业 学习Python学习路线图(最新版)

这是我刚开始学习python时的一套学习路线&#xff0c;从入门到上手。&#xff08;不敢说精通&#xff0c;哈哈~&#xff09; 希望对大家有帮助哈~ 大家需要高清得完整python学习路线可以 一、Python入门、环境搭建、变量、数据类型 二、数据库编程 三、Linux系统 四、网页编…

哪些手机待办事项软件可以记录备忘并设置提醒?

当下手机软件的种类那么多&#xff0c;为什么有那么多人使用手机待办事项软件呢&#xff1f;原因很简单&#xff0c;因为这类软件可以记录备忘并设置提醒&#xff0c;非常适合哪些喜欢提前规划待办事项的人使用。但是&#xff0c;面对如此多的手机待办事项软件&#xff0c;具体…

【HTML】第 2 节 - HTML 标签

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、标题标签 3、段落标签 4、文本格式化标签 5、图像标签 5.1、基本作用 5.2、属性 6、超链接标签 7、音频标…

Vivado下时序逻辑模块的仿真

文章目录 D触发器两级D触发器带异步复位的D触发器带异步复位和同步置数的D触发器移位寄存器单口RAM伪双口RAM真双口RAM单口ROM 组合逻辑电路在逻辑功能上特点是任意时刻的输出仅仅取决于当前时刻的输入&#xff0c;与电路原来的状态无关。 时序逻辑在逻辑功能上的特点是任意时刻…

单元测试方法-cmockery实践

目录 单元测试概念 引子 定义 内容 方法 单元测试模型 测试模型构建 单元测试工具简介 Cmockery使用介绍 简介 使用 VPBX实践 UT框架搭建 目录 编译&#xff1a; 实例demo 例1&#xff1a; 例2&#xff1a; 例3&#xff1a; 例4&#xff1a; 例5&#xff…

从0开始搭建vue3+vite+ts+pinia项目

目录 项目搭建选项 项目搭建步骤 本地开发环境 Vite脚手架构建项目 关联Git仓库 开发工具 安装pinia 安装Sass 安装Vant-UI 安装postcss-pxtorem&#xff08;移动端项目&#xff09; 安装axios 本地调试 环境变量 本地代理 全局UI组件 路由中间件 项目部署 n…

layui(2)----页面元素

水平导航栏 依赖加载模块&#xff1a;element <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…

AcWing 回转游戏 dfs IDA* 剪枝 统一操作 java

&#x1f351; 算法题解专栏 &#x1f351; 回转游戏 如下图所示&#xff0c;有一个 # 形的棋盘&#xff0c;上面有 1 , 2 , 3 1,2,3 1,2,3 三种数字各 8 8 8 个。 给定 8 8 8 种操作&#xff0c;分别为图中的 A s i m H A \\sim H AsimH。 这些操作会按照图中字母和箭头…

MCGS昆仑通态触摸屏导入博途自定义数据类型和DB块变量的具体方法演示

MCGS昆仑通态触摸屏导入博途自定义数据类型和DB块变量的具体方法演示 如下图所示,在博途中新建项目后,添加自己所需的数据类型,然后选中该数据类型,右击选择“从块生成源“—”仅所选块“, 如下图所示,设置文件名后点击保存, 如下图所示,选中需要导出的DB块,右击选…

vue 自定义el-table穿梭框功能

一、需求描述&#xff1a;前段时间接到一个需求是点击做一个类似穿梭框的表格点击选中功能&#xff0c;弹框的左边是全部数据展示&#xff0c;点击表格行数据可以选中自动增加到右边的已选框&#xff0c;并且可以手动删除、重置选中数据。点击确定后到展示到主页面&#xff0c;…

Java核心知识点常考面试题(持续更新中)

Java核心知识点常考面试题&#xff08;持续更新中&#xff09; 线程与线程池Java锁机制轻量级锁重量级锁 线程与线程池 一、线程 1、线程的状态 2、线程的创建方式 &#xff08;1&#xff09;继承 Thread 类&#xff1b; &#xff08;2&#xff09;实现 Runnable 接口&#…

IDEA2023.1配置Git

一、前言 在使用新设备整理git项目时&#xff0c;报了以下问题&#xff0c;在整理项目的同时&#xff0c;做下记录。 二、下载git 2.1.官网下载git 官网下载地址&#xff1a; git官网&#xff0c;如下图所示&#xff1a; 如果选方法二&#xff0c; 接下来会让选择系统&#…

【cocos精品】《三国之刃》:腾讯首款三国炫技格斗手游

基于cocos引擎开发的《三国之刃》是腾讯独家代理的三国题材的动作格斗手游。独创的自由组合战技系统&#xff0c;配合特色的兵器和灵兽技能&#xff0c;可搭配出上万种格斗套路&#xff0c;让您的战斗酣畅淋漓又变幻莫测。清爽灵活的操作&#xff0c;无锁定技术PK&#xff0c;更…

java开发街机三国志_入坑必看《街机三国志》游戏初期重点讲解

《街机三国志》为了让新手更好的了解游戏&#xff0c;设立里相关的新手指引&#xff0c;引导新入门的玩家完成各种任务与基础的系统教学。只凭新手教学是没办法在初期阶段积累足够的资源的。本次小编特意整理了一些新手教程中没有提及的重点&#xff0c;希望帮助玩家们更好的开…

搜索引擎三国鼎立:百度 vs 360 vs 搜狗

理论上说&#xff0c;搜索市场不存在平分秋色的可能&#xff0c;不管份额如何接近&#xff0c;最终必然是东风压倒西风&#xff0c;这一点在全球市场都未见过反例。雅虎在日本和台湾独占鳌头&#xff0c;Naver在韩国有压倒性优势&#xff0c;Yandex称霸俄罗斯。谷歌在全球大部分…

街机三国志隐藏人物刘备_隐藏的人物

街机三国志隐藏人物刘备 最初的程序员的故事将永远不为人知 背后没有外套的男人是梅尔凯&#xff08;Mel Kaye&#xff09;&#xff0c;埃德纳瑟&#xff08;Ed Nather&#xff09;为他写了他永恒的程序员绝版经典著作《故事》 。 那一年是1960年&#xff0c;尽管存在有关他编…

Java霸王的大陆梦幻版_三国志霸王的大陆,喜欢三国的进

三国是中国历史上英雄辈出的时代&#xff0c;《霸王的大陆》这款移植自Fc的战棋游戏更是中国手游java游戏的No.1!该游戏内容极其丰富&#xff0c;对玩家的要求很高&#xff0c;因此这完全是一款符合游戏高手要求的大型单机游戏。以下是这款游戏的核心攻略&#xff0c;只要稍加留…

无可用下载链接_经典大全合集500个街机游戏大全下载

经典大全合集500个街机游戏大全下载 WinKawaks1.45模拟器 游戏链接 链接:https://pan.baidu.com/s/1MZ3_Gv825dtswcGXr006zQ 提取码:zhrk 一、游戏介绍

linux模拟器玩三国战记,三国战纪风云再起街机版

三国战纪风云再起街机版带你回忆最初玩三国街机游戏的乐趣,多种对战玩法轻松上手,在三国战纪风云再起街机版手机游戏里面玩家可以随便选择一个角色进入战斗,强烈的打击感绝对让你爱不释手,在指尖畅享超酷的格斗盛宴。 三国战纪风云再起街机版介绍 三国战纪风云再起街机版是…

智勇三国

视频: http://you.video.sina.com.cn/a/4806164-1488862174.html 8M的客户端下载地址: 一,http://yule.hedanwang.cn/sanguozhi/sanguozhi_864.htm 二,QQ群:100410266 的群共享下载 智勇三国是单机游戏三国群英传2的简单化、网络化、智能化。简单化指的是保留精华&#xff0c…