2023CCPC河南省赛 VP记录

news2024/11/17 4:37:18

感觉现在的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 long

using 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 long

using 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 long

using 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://www.coloradmin.cn/o/611911.html

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

相关文章

Android crash 流程详解(二):NE

源码基于&#xff1a;Android R 接上一篇博文&#xff1a;《Android crash 流程详解(一)&#xff1a;JE》 0. 前言 在上一篇博文剖析了java layer exception 的处理流程&#xff0c;本文将继续剖析 Android crash 的另一部分&#xff0c;即 native 端的 crash&#xff0c;又称…

【JavaEE】网络编程之UDP套接字

目录 1、网络编程基础 2、UDP数据报套接字编程 2.1.DatagramSocket API&#xff08;方法&#xff09; 2.2、DatagramPacket API&#xff08;方法&#xff09; 2.3、InetSocketAddress API 3、基于UDP socket写一个回显服务器 3.1、服务器端 3.2 、客户端 3.3、完…

机器学习常识 21: 卷积神经网络

摘要: 卷积操作保留体现了空间相关性. 1. 卷积操作 图 1. 卷积操作 Valid 方式. 图 1 下平面标定的 3 3 3 \times 3 33 区域, 对应于个 3 3 3 \times 3 33 卷积, 这 9 9 9 个数对应着相乘, 然后相加, 获得了上平面标定的 1 1 1 个小区域的值. 注意这里不是矩阵的乘法. 卷…

《大数据技术与应用》课程实验报告|week12|实验8|Pig——高级编程环境 验证评估函数

目录 一、实验内容 二、实验目的 三、实验设备 四、实验步骤 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 步骤八 步骤九 步骤十 步骤十一 步骤十二 步骤十三 步骤十四 步骤十五 步骤十六 五、实验结果 六、实验小结 一、实验内容 验证19.5节中的…

Apache网页的日志分割与优化

Apache网页的日志分割与优化 一、日志分割的作用二、rotatelogs 分割1.修改apache服务的主配置文件2.创建分割日志保存目录3.浏览器访问 三、AWStats 分析系统1.将安装AWStats 所需软件包传到/opt目录下2.安装 AWStats 软件包3.为要统计的站点建立配置文件4.修改自动生成的 aws…

电表的698通信协议

原文连接&#xff1a;https://blog.csdn.net/ss86655/article/details/109997891 该协议规定了用电信息的数据交换过程&#xff0c;一般用于主站与电能表之间、终端与电能表之间的数据交换&#xff0c;主站与终端一般用不同的客户机地址来区分。1、通信架构 有两种方向的数据…

linux系统中代码突然无法执行,没有权限访问文件,但是可以在文件管理器中查看文件

前言 这段时间遇到了一个非常离谱的问题&#xff0c;我的只要设计移动硬盘中数据的所有代码突然无法运行&#xff0c;我折腾了很久一直觉得是移动硬盘坏了&#xff0c;但拿到其他电脑上去是可以运动的。今天终于偶然发现了问题。 直接说结论&#xff1a; 移动硬盘的挂载点变了…

SQL-DML、DQL查询数据

SQL-DML、DQL查询数据 1 DML DML主要是对数据进行增&#xff08;insert&#xff09;删&#xff08;delete&#xff09;改&#xff08;update&#xff09;操作。 1.1 添加数据 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);给全部列添加数据 INSERT…

MySQL数据库性能优化技巧介绍

MySQL是目前最流行和广泛使用的开源关系型数据库之一&#xff0c;随着数据量的增长和访问负载的提高&#xff0c;优化数据库性能变得至关重要&#xff0c;以确保系统能够高效地处理大量的并发请求。本文将记录一些MySQL数据库性能优化的技巧&#xff0c;提高数据库的运行效率&a…

程序员——应届生毕业,竟有20k高薪岗位?!

马士兵优极限训练营让我在技术和个人能力上都有了很大的提升。在未来的职业生涯中&#xff0c;我会继续努力&#xff0c;不断学习和成长&#xff0c;为自己和社会做出更大的贡献 01 选择大数据 只因更有前景 我是计算机专业出身&#xff0c;但是在大学的时候我对大数据行业更…

vue3 ---- 递归组件生成menu菜单 路由守卫鉴权

目录 递归组件​ el-menu 父组件 子组件 路由 Vue路由守卫实现登录鉴权 全局守卫 路由独享的守卫 组件内的守卫 完整的导航解析流程 对于一些有规律的DOM结构&#xff0c;如果我们再一遍遍的编写同样的代码&#xff0c;显然代码是比较繁琐和不科学的&#xff0c;而且…

5个有效方法教你如何正确使用云渲染,防错必备!

随着技术的进步和计算能力的提升&#xff0c;云渲染成为了现代计算机图形学和动画制作中不可或缺的一环。无论是在电影、游戏还是建筑可视化等领域&#xff0c;渲染图像的质量和效率都对最终结果有着巨大的影响。然而&#xff0c;云渲染也面临着一些潜在的问题&#xff0c;如渲…

一文看懂B TREE和B+TREE数据结构实现过程及数据存储结构

概述 一文看懂B TREE和BTREE数据结构实现过程及数据存储结构 一、B tree数据结构实现过程 这里有一个陌生区关于 Max. Degree&#xff0c;这个你可以理解为阶&#xff0c;也可以理解为度,即B 树的阶数&#xff08;一个节点存储的键的数量&#xff09; 这里有一个陌生区关于…

简单上手!快速将另一个报表的页面添加到 FastReport .NET!

FastReport 是功能齐全的报表控件&#xff0c;可以帮助开发者可以快速并高效地为.NET&#xff0c;VCL&#xff0c;COM&#xff0c;ActiveX应用程序添加报表支持&#xff0c;由于其独特的编程原则&#xff0c;现在已经成为了Delphi平台最优秀的报表控件&#xff0c;支持将编程开…

ROS:古月居第一次作业(话题与服务编程、动作编程、TF编程)

一.话题与服务编程 话题与服务编程&#xff1a;通过代码新生一只海龟&#xff0c;放置在&#xff08;5,5&#xff09;点&#xff0c;命名为“turtle2”&#xff1b;通过代码订阅turtle2的实时位置并打印在终端&#xff1b;控制turtle2实现旋转运动&#xff1b; demo_turtle.l…

智能出行更安全,亚马逊云科技携手木卫四助汽车客户安全合规出海

木卫四&#xff08;北京&#xff09;科技有限公司在汽车网络安全领域拥有独特专业知识&#xff0c;其融合人工智能算法的安全检测引擎可以不依赖车辆中安装的代理软件&#xff0c;只需几周即可快速部署实施&#xff0c;是汽车网络安全领域的技术领先者。 在亚马逊云科技初创团…

消息中间件之ActiveMq安装

文章目录 前言安装下载地址安装 使用控制台调整配置文件 前言 2023年年中了&#xff0c;又遇到了老朋友activeMq&#xff0c;上次接触activeMq还是在15年的时候&#xff0c;系统中用到了这个消息中间件。 阔别8年之久&#xff0c;竟然又用到了这个老家伙&#xff01; 安装 要…

【6.05 代随_48day】 打家劫舍、打家劫舍 II、打家劫舍 III

打家劫舍、打家劫舍 II、打家劫舍 III 打家劫舍1.方法图解步骤代码 打家劫舍 II1.方法代码 打家劫舍 III图解步骤代码 打家劫舍 力扣连接&#xff1a;198. 打家劫舍&#xff08;中等&#xff09; 1.方法 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&am…

如何利用 Electron 快速开发一个桌面端应用

前言 一直以来都有听说利用electron可以非常便捷的将网页应用快速打包生成为桌面级应用&#xff0c;并且可以利用 electron 提供的 API 调用原生桌面 API 一些高级功能&#xff0c;于是这次借着论证环信 Web 端 SDK 是否可以在 electron 生成的桌面端正常稳定使用&#xff0c;…

基于国产器件的KCF跟踪算法实现与验证

在国产的FT-M6678 DSP上实现KCF算法是我研究生期间的主要工作&#xff0c;KCF算法的原理与实现已经在之前的文章以及我的Gitee仓库中有部分介绍。这里主要介绍DSP与上位机通信的方式&#xff0c;以及XDMA Linux驱动的使用。具体的设计细节可以看我的毕业设计补充材料。 SRIO与…