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

【学习笔记】AGC055

A - ABC Identity

如果只有AAA,BBB两种字符的话,我们发现要寻找p∈[1,n]p\in [1,n]p[1,n],使得[1:p][1:p][1:p]AAA的数目与[p+1:n][p+1:n][p+1:n]BBB的数目相同。

如果有A,B,CA,B,CA,B,C三种字符,我们可以先将A,BA,BA,B分离出来,再将B,CB,CB,C分离出来,最后把A,CA,CA,C分离出来,这样最后会生成888个子序列 然后无法通过

神谕告诉我们,A,B,CA,B,CA,B,C三种字符一共只有666种本质不同的排列,因此我们可以考虑把原序列分成长度为nnn333段,从每一段中分别选取一个字符构成A,B,CA,B,CA,B,C的排列,最后把相同的排列放在一起即可。猜一下结论,这显然是有解的。

这种题还是要多尝试

#include<bits/stdc++.h>
#define pb push_back
using namespace std;
vector<int>v[3][3];
string s;
int n,res[600005];
int has(int x,int y,int z){return x*2+(y-(x<y))*1;
}
int main(){cin>>n>>s;for(int i=0;i<3*n;i++){v[i/n][s[i]-'A'].pb(i);}for(int i=1;i<=n;i++){for(int j=0;j<3;j++){for(int k=0;k<3;k++){for(int l=0;l<3;l++){if(v[0][j].size()&&v[1][k].size()&&v[2][l].size()&&j!=k&&k!=l&&j!=l){res[v[0][j].back()]=has(j,k,l);res[v[1][k].back()]=has(j,k,l);res[v[2][l].back()]=has(j,k,l);v[0][j].pop_back();v[1][k].pop_back();v[2][l].pop_back();}}}}}for(int i=0;i<3*n;i++)cout<<res[i]+1;
}

B - ABC Supremacy

如果只考虑SSS怎么生成TTT的话,怎么做都是O(n2)O(n^2)O(n2)的。数据删除

上面那种思路可能不太好处理 但是操作是可逆的,因此判断S,TS,TS,T同构的一个充分条件是它们都能到达一个相同的状态PPP。所以我们只要求出S,TS,TS,T的最小表示即可,这样一个字符串生成的表示是唯一的,就不用担心上述问题了。

剩下的就是怎么去寻找最小串。比较烦恼就先咕了

显然我们要凑出尽量多的ABCABCABC串(这里指轮换),并且每次操作相当于将ABCABCABC串这个整体挪到前面,然后把AAA放在最前面。那么BCBCBC是固定的吗?如果BCBCBC不是固定的,这个问题也比较烦恼,可以先咕着

开始慌张 不过幸运的是之前的结论还是正确的

我们可以把最小表示的定义换成 得到最多的ABCABCABC轮换组,那么BCBCBC就肯定是固定的了。

复杂度O(n)O(n)O(n)

#include<bits/stdc++.h>
#define pb push_back
using namespace std;
int n;
string s,t;
vector<char>solve(string s){vector<char>v;for(int i=0;i<s.size();i++){v.pb(s[i]);if(v.size()>=3&&(v[v.size()-3]=='A'&&v[v.size()-2]=='B'&&v[v.size()-1]=='C'||v[v.size()-3]=='B'&&v[v.size()-2]=='C'&&v[v.size()-1]=='A'||v[v.size()-3]=='C'&&v[v.size()-2]=='A'&&v[v.size()-1]=='B')){v.pop_back();v.pop_back();v.pop_back();}}return v;
}
int main(){cin>>n>>s>>t;cout<<(solve(s)==solve(t)?"YES":"NO");
}

C - Weird LIS

如果我们能思考清楚{Ai}\{A_i\}{Ai}合法的充要条件,那么这道题也就解决了。

或者说能建立双射然后计数也行

想不太清楚所以先咕了

思路其实并不困难,不过可能需要猜几个结论。

1.11.11.1 如果AiA_iAi全部等于KKK,猜测K≤⌊n2⌋K\le \lfloor\frac{n}{2}\rfloorK2n,这还是比较容易看出来。
1.21.21.2 如果KKKK−1K-1K1同时存在,那么Ai=K−1A_i=K-1Ai=K1的那些点是固定的,我们要在所有Ai=KA_i=KAi=K的连续段中挑选一段接在固定的数之间,那么根据1.11.11.1的推论,这一段的长度不能超过⌊l2⌋\lfloor\frac{l}{2}\rfloor2llll表示连续段长度),我们猜测对于更小的情况也是取得到的,因此∑⌊li2⌋+cntK−1≥K\sum{\lfloor\frac{l_i}{2}\rfloor}+cnt_{K-1}\ge K2li+cntK1K,并且cntK−1≤Kcnt_{K-1}\le KcntK1K

这个向下取整好像不太妙,先咕了

计数这个地方可能要多尝试

复杂度O(n2)O(n^2)O(n2)。不过要注意特判Ai=n−1A_i=n-1Ai=n1的情况。

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
using namespace std;
const int N=5005;
int n,m,mod;
ll fac[N],inv[N],res;
ll pw(ll x,ll y=mod-2){ll z(1);for(;y;y>>=1){if(y&1)z=z*x%mod;x=x*x%mod;}return z;
}
void init(int n){fac[0]=1;for(int i=1;i<=n;i++)fac[i]=fac[i-1]*i%mod;inv[n]=pw(fac[n]);for(int i=n;i>=1;i--)inv[i-1]=inv[i]*i%mod;
}
ll binom(int x,int y){if(x<0||y<0||x<y)return 0;return fac[x]*inv[y]%mod*inv[x-y]%mod;
}
int main(){cin>>n>>m>>mod,init(n+1);for(int x=1;x<n;x++){for(int y=0;y<=(n-x)/2;y++){int L=max(3,x),R=min(m,x+y);if(L<=R)res=(res+binom(x+y,x)*binom(x+1,n-x-2*y)%mod*(R-L+1))%mod;}}for(int i=2;i<=min(m,n/2);i++)res++;if(m==n-1)res++;cout<<res%mod;
}

D - ABC Ultimatum

先考虑怎么判断给定串合法。

好像没什么思路先咕了

不过这题还是有学习的价值的,我们可以照着结论来翻译一下

Sa(i),Sb(i),Sc(i)S_a(i),S_b(i),S_c(i)Sa(i),Sb(i),Sc(i)表示1∼i1\sim i1ia,b,ca,b,ca,b,c的个数,Ma=max⁡(Sb(i)−Sa(i)),Mb=max⁡(Sc(i)−Sb(i)),Mc=max⁡(Sa(i)−Sc(i))M_a=\max (S_b(i)-S_a(i)),M_b=\max(S_c(i)-S_b(i)),M_c=\max(S_a(i)-S_c(i))Ma=max(Sb(i)Sa(i)),Mb=max(Sc(i)Sb(i)),Mc=max(Sa(i)Sc(i)),则SSS是好的当且仅当Ma+Mb+Mc≤nM_a+M_b+M_c\le nMa+Mb+Mcn

必要性应该很显然,可以猜一个结论,或者打表证明这是充要的。

可能有时间会补一下证明

然后暴力复杂度O(n7)O(n^7)O(n7)。但是很显然可以省去一维状态,因此就可以在O(n6)O(n^6)O(n6)时间内通过了。

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
using namespace std;
const int mod=998244353;
int n,dp[17][17][17][17][17][17],res;
string s;
void add(int &x,int y){if((x+=y)>=mod)x-=mod;
}
int main(){cin>>n>>s;dp[0][0][0][0][0][0]=1;for(int i=0;i<3*n;i++){for(int a=0;a<=n;a++){for(int b=0;b<=n;b++){int c=i-a-b;if(c>n||c<0)continue;for(int j=0;j<=n;j++){for(int k=0;k<=n;k++){for(int l=0;l<=n;l++){int tmp=dp[a][b][c][j][k][l];if(s[i]=='A'||s[i]=='?'){add(dp[a+1][b][c][j][k][max(l,a+1-c)],tmp);}if(s[i]=='B'||s[i]=='?'){add(dp[a][b+1][c][max(b+1-a,j)][k][l],tmp);}if(s[i]=='C'||s[i]=='?'){add(dp[a][b][c+1][j][max(c+1-b,k)][l],tmp);}}}}}}}for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){for(int k=0;k<=n;k++){if(i+j+k<=n)add(res,dp[n][n][n][i][j][k]);}}}cout<<res;
}

E - Set Merging

场上无一人AC

这种给你规定输入的构造题就很烦,那么我们就要去分析一些性质,看它在不同情况下是否成立。

某个人曾经说过,第一个做出这种题的人一定是具有非凡的人类智慧的

相关文章:

【学习笔记】AGC055

A - ABC Identity 如果只有AAA,BBB两种字符的话&#xff0c;我们发现要寻找p∈[1,n]p\in [1,n]p∈[1,n]&#xff0c;使得[1:p][1:p][1:p]中AAA的数目与[p1:n][p1:n][p1:n]中BBB的数目相同。 如果有A,B,CA,B,CA,B,C三种字符&#xff0c;我们可以先将A,BA,BA,B分离出来&#xf…...

墨者——内部文件上传系统漏洞分析溯源 内部文件上传系统漏洞分析溯源

墨者——内部文件上传系统漏洞分析溯源 内部文件上传系统漏洞分析溯源 1.选择合适的文件上传 2.可以看到为*.asp文件 3.可以推测出此站点为IIS 4.上传shell.asp试试 5.上传报错&#xff0c;将其改名为shell.asp.txt上传&#xff0c;发现上传成功 6.有个问题就是服务器将我们所…...

5.2 Python if语句

5.2.3 检查是否不相等要判断两个值是否不等&#xff0c;可结合使用惊叹号和等号(!)&#xff0c;其中的惊叹号表示不&#xff0c;在很多编程语言中都如此。下面再使用一条if语句来演示如何使用不等运算符。我们将把要求的比萨配料存储在一个变量中&#xff0c;再打印一条消息&am…...

ubuntu gerrit 配置

1 - 简介 参考地址: https://www.cnblogs.com/anliven/p/12019974.html https://www.cnblogs.com/anliven/p/11980432.html 虽然Gerrit 本身提供 Code Review和 Git 仓库的两大功能,但实际上很多项目用的是其他的Git仓库,例如GitLab和GitHub。 一般情况下,Gerrit位于最终…...

运动蓝牙耳机什么牌子好,运动蓝牙耳机品牌推荐

现在市面上运动耳机的品牌越来越多&#xff0c;还不知道选择哪一些运动耳机品牌&#xff0c;可以看看下面的一些耳机分享&#xff0c;运动耳机需要注意耳机的参数配置以及佩戴舒适度&#xff0c;根据自己最根本的使用需求来选择运动耳机。 1、南卡Runner Pro4骨传导蓝牙运动耳…...

(7)C#传智:方法及参数、重载(第7天)

一、方法作用域 被调用者需要调用者的值,方法有二: 1.传参数. private static void Main(string[] args){int m 3;Console.WriteLine(m);Console.ReadKey();}public static int GetMax(int m){return m 3;} 2.使用静态字段模拟全局. 多个方法都需要时&#x…...

Python 函数式编程

函数式编程&#xff1a;允许把函数本身作为参数传入另一个函数&#xff0c;还允许返回一个函数&#xff01; 1.高阶函数 一个函数可以接收另一个函数作为参数&#xff0c;这种函数称之为高阶函数 abs(-10) 是函数调用 abs是函数本身 abs函数名其实是一个变量名 变量可以…...

pandas读取EXCEL列名重复问题解决——pandas设置多行为列名(多层列名)

问题呈现 这是我在问答区看到的一个问题。 问&#xff1a;在python中使用pandas读取Excel数据&#xff0c;重复数据被区分了&#xff0c;如何做到重复数据不被区分&#xff1f; 解决思路 很明显&#xff0c;这是pandas读取excel文件时列名设置问题&#xff0c;我第一时间想…...

CMake常用语法

1. cmake_minimum_required(VERSION 3.4.1) 指定需要的最小的cmake版本 2. aux_source_directory 查找源文件并保存到相应的变量中: #查找当前目录下所有源文件并保存至SRC_LIST变量中 aux_source_directory(. SRC_LIST)3. add_library 3.1 添加一个库 add_library(<n…...

Java知识复习(一)基础知识

1、什么是JVM、JDK和JRE&#xff1f; JVM是指运行Java字节码的虚拟机。而字节码文件指的就是扩展名为.class的文件&#xff0c;JDK指功能齐全的Java SDK&#xff0c;能够创建和编译程序JRE指Java运行的环境&#xff0c;包括JVM、类库和命令等 2、重载和重写的主要区别 重载&…...

springboot+vue.js校园车辆用车预约管理系统

springboot是基于spring的快速开发框架, 相比于原生的spring而言, 它通过大量的java config来避免了大量的xml文件, 只需要简单的生成器便能生成一个可以运行的javaweb项目, 是目前最火热的java开发框架 前端技术&#xff1a;nodejsvueelementui本项目的应用场景描述如下&…...

【 K8s 源码之调度学习】Pod 间亲和性和反亲和性的源码分析

查看案例 字段含义podAffinityPod 间的亲和性定义podAntiAffinityPod 间的反亲和性定义requiredDuringSchedulingIgnoredDuringExecution硬性要求&#xff0c;必须满足条件&#xff0c;保证分散部署的效果最好使用用此方式preferredDuringSchedulingIgnoredDuringExecution软性…...

计及绿证交易及碳排放的含智能楼宇微网优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

场景扩展,体验升级 | DBMotion新增无公网数据库迁移、支持监控报警等多项功能

丝滑的零停机数据库在线迁移工具——DBMotion&#xff0c;又双叒叕发新版&#xff1a;新增的网关、数据源功能&#xff0c;让你无公网IP的数据库也可以迁移&#xff1b;新增的监控功能&#xff0c;让你对迁移性能一目了然&#xff1b;新增的报警功能&#xff0c;让你及时获得同…...

【正点原子FPGA连载】第十五章eMMC读写测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十五章eMMC读写…...

i2c子系统

i2c 硬件协议 Linux 应用层读写i2c 数据 在Linux系统上&#xff0c;不仅可以在内核中使用 i2c 总线发送、接收数据&#xff0c;同时也支持应用层使用i2c 总线发送、接收。 如果在内核中使能了drivers/i2c/i2c-dev.c 配置&#xff0c;内核就会为每一个i2c 控制器生成一个/dev/…...

【K3s】第17篇 Helm版本和支持的Kubernetes版本对照表

目录 Helm版本和支持的Kubernetes版本对照表 Helm版本和支持的Kubernetes版本对照表 描述了在Helm和Kubernetes之间支持的最大版本偏差。 Helm的版本用 x.y.z 描述&#xff0c;x是主版本&#xff0c;y是次版本&#xff0c;z是补丁版本。 当一个Helm的新版本发布时&#xff0…...

如何自己搭建一个ai画图系统? 从0开始云服务器部署novelai

如何自己搭建一个ai画图系统&#xff1f; 从0开始云服务器部署novelai ​ 上面两张图都是通过ai生成的&#xff0c;是不是有以假乱真的感觉。 本教程提供的是自己搭建一个可以外网访问的ai系统的方法&#xff0c;需要采购gpu服务器&#xff08;后续会出白嫖的方式&#xff09;&…...

SpringSecurity过滤请求导致的系统bug

背景 今天开发一个新的会员管理系统&#xff0c;继承了SpringSecurity的&#xff0c;用以控制权限。结果无论怎么配置&#xff0c;都会报错&#xff1a;An Authentication object was not found in the SecurityContext 这句话的意思很明确&#xff1a;指的就是在SecurityCon…...

css\js\vue知识点

1.css3新特性 css3新特性 1&#xff09;选择器 2&#xff09;阴影 3&#xff09;形状转换&#xff08;2D <-> 3D&#xff09; 4&#xff09;变形 5&#xff09;动画&#xff08;过渡动画、帧动画&#xff09; 6&#xff09;边框 7&#xff09;多重背景 8&#xff09;反…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年&#xff0c;高端封装市场规模为 80 亿美元&#xff0c;预计到 2030 年将超过 280 亿美元&#xff0c;2024-2030 年复合年增长率为 23%。 细分到各个终端市场&#xff0c;最大的高端性能封装市场是“电信和基础设施”&#xff0c;2024 年该市场创造了超过 67% 的收入。…...