2019.9.20 csp-s模拟测试48 反思总结

2023-11-03 16:50

本文主要是介绍2019.9.20 csp-s模拟测试48 反思总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

头疼,不说废话了,祝大家rp++。

 

T1:

暴力枚举,n3

枚举两个串开始匹配的位置,每一次尽量修改。

#include<iostream>
#include<cstdio>
using namespace std;
int n,k,cnt,num,ans;
char a[310],b[310];
int main()
{scanf("%d%d",&n,&k);scanf("%s",a+1);scanf("%s",b+1);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cnt=0,num=0;for(int l=i,r=j;l<=n&&r<=n;l++,r++){if(a[l]!=b[r])cnt++;if(cnt>k)break;num++;}ans=max(ans,num);}}printf("%d",ans);return 0;
}
View Code

 

 

T2:

枚举四个点中间的两个点,它们对应的路径条数就是度数减一的乘积,即(du[i]-1)*(du[j]-1)。减一是因为它们彼此相连。

然后还要考虑重复的情况,即它们走到同一个点。因为一条满足条件的链节点数只有四,重复的情况只可能是它们两个第一步走出去的点是同一个点,即两个点都和那个重复点直接相连,这种时候答案多统计了一次。可以用bitset存每个点连出去的节点,答案减去交集的大小。

听他们说这个是三元环计数……?不知道不了解,之后补课。

因为我不会用bitset,考场上全靠自己根据一点模糊印象瞎搞,一开始给bitset开出的100000的大小到最后也没改,然后t成了40分。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<bitset>
using namespace std;
int n,d[1510];
long long ans;
bitset<1510>s[1510];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1,x;j<=n;j++){scanf("%1d",&x);if(x)s[i][j]=1,d[i]++;}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j&&s[i][j]){ans+=(d[i]-1)*(d[j]-1);ans-=(s[i]&s[j]).count();}}}printf("%lld",ans);return 0;
}
View Code

 

 

T3:

首先考虑枚举每个val的子集连0边,然后每个点向对应权值连1边,再由权值向这个点连0边。这就好像出发的起始费用是1,走到另一个节点的结尾收费是0,于是每条路全长为1。

发现这样连出来的图,很多节点都能到达同一个节点,然而这些节点彼此之间也存在到达的关系。可以考虑让一个点不会到达“可以到达的点”会到达的点,即减少边数,让能被传递的到达关系尽量代替直接到达关系。那么只要让每个权值连向它的某一位去掉1的值就可以了。原本存在的节点与权值连的两条边不变,题目给出的m条边也不变,最后边数变成了20*220+2n+m。

因为边权只存在1和0,直接跑双端队列bfs,每一次要把能0边到达的所有点都加进队列保证距离不减。挺丢人的,我没太弄明白最后这句,后来一想bfs每个点只到达一次,可不是要尽量更早到达吗……

#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<cmath>
#include<queue>
using namespace std;
const int inf=2147483647;
const int maxn=(1<<20);
deque<pair<int,int> >q;
long long d[2000005];
int n,m,t,cnt=maxn,num,p,sum;
int a[2000005],vis[2000005];
int ver[2000005],Next[5000005],tot,head[5000005],edge[5000005];
void add(int x,int y,int z){ver[++tot]=y;Next[tot]=head[x];head[x]=tot;edge[tot]=z;
}
void bfs(){d[maxn+1]=0;q.clear();vis[1+maxn]=1;q.push_back(make_pair(1+maxn,0));while(!q.empty()){int x=q.front().first;d[x]=q.front().second;q.pop_front();if(x<=maxn){for(int j=0;j<=20;j++){if((x&(1<<j))&&!vis[x^(1<<j)]){vis[x^(1<<j)]=1;q.push_front(make_pair(x^(1<<j),d[x]));}}if(!vis[0]){q.push_front(make_pair(0,d[x]));vis[0]=1;}}for(int i=head[x];i;i=Next[i]){int y=ver[i];if(!vis[y]){vis[y]=1;if(edge[i])q.push_back(make_pair(y,d[x]+1));else q.push_front(make_pair(y,d[x]));}}}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);add(maxn+i,a[i],0);add(a[i],maxn+i,1);}for(int i=1,x,y;i<=m;i++){scanf("%d%d",&x,&y);add(x+maxn,y+maxn,1);}for(int i=0;i<=maxn+n;i++)d[i]=-1;bfs();for(int i=maxn+1;i<=maxn+n;i++){printf("%lld\n",d[i]);}return 0;
}
写错一句位运算调了一早晨

 

 

又没去学校,苟在家里改题。身体状况略有点可笑,因为状态差所以不得不想一些办法来让自己打起精神,但是这么做的话身体就会更差,最后索性放弃治疗。能活多久就多久吧,最少撑两个月就行。

活着还是死去有什么区别呢。

转载于:https://www.cnblogs.com/chloris/p/11562259.html

这篇关于2019.9.20 csp-s模拟测试48 反思总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/339553

相关文章

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio