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

杭电多校2023“钉耙编程”中国大学生算法设计超级联赛(5)

1006Touhou Red Red Blue

dp

设状态方程为前i个数中,当前第一个包里面的是0/1/2/3状态,第二个包里面是0/1/2/3状态

0代表着还没有颜色,1代表R,2代表G,3代笔B颜色

初始状态都没选择颜色所以都是状态0

没选择颜色只能从后面的字符里面选

细想操作一 a b两个包清空,然后a选择任意颜色,b从后面的选,

换句话说就是a的颜色要取决于后面的颜色,所以不如直接让b变成任意颜色,a状态变成0

后面选择的字符放到a,其实是等效的,且这样遍历

else f[i][b][c]=max(f[i][b][c],f[i-1][a][b]);

我不用另外判断这个条件

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10,mod=998244353;typedef long long LL;
typedef pair<int, int> PII;int n;
int f[N][5][5];
int get(char c){if(c=='R') return 1;else if(c=='G') return 2;else return 3;
}void solve(){memset(f,-0x3f,sizeof(f));string s;cin>>s;n=s.size();s="?"+s;f[0][0][0]=0;for(int i=1;i<=n;i++){int c=get(s[i]);for(int a=0;a<=3;a++){for(int b=0;b<=3;b++){f[i][a][b]=f[i-1][a][b];}}for(int a=0;a<=3;a++){for(int b=0;b<=3;b++){if(a==b&&b==c){for(int d=1;d<=3;d++){f[i][0][d]=max(f[i][0][d],f[i-1][a][b]+1);}}else if(a&&b&&c&&a!=b&&a!=c&&b!=c){for(int d=1;d<=3;d++){for(int e=1;e<=3;e++){f[i][d][e]=max(f[i][d][e],f[i-1][a][b]);}}}else f[i][b][c]=max(f[i][b][c],f[i-1][a][b]);}}}int res=0;for(int a=0;a<=3;a++){for(int b=0;b<=3;b++)res=max(res,f[n][a][b]);}cout<<res<<"\n";
}
signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

1012Counting Stars

首先统计度数

k星图可以由

k+1星图选择去掉其中1条边里面的其中一条变成

k+2星图选择去掉其中2条边里面的其中两条变成

...

所以直接统计度数即可

然后每个点暴力枚举2到d[i]的k星图增加个数即可

复杂度是n+m

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
int n,m,k;
int fact[N],infact[N];
int qmi(int a, int k, int p)  // 求a^k mod p
{int res = 1 % p;while (k){if (k & 1) res = (LL)res * a % p;a = (LL)a * a % p;k >>= 1;}return res;
}void init(){fact[0] = infact[0] = 1;for (int i = 1; i < N; i ++ ){fact[i] = (LL)fact[i - 1] * i % mod;infact[i] = (LL)infact[i - 1] * qmi(i, mod - 2, mod) % mod;}
}
int C(int a,int b){if(b>a) return 0;return ((LL)fact[a] * infact[b] % mod * infact[a - b] % mod);
}
void solve(){int n,m;cin>>n>>m;vector<int> d(n+10,0),ans(n+10,0);for(int i=1;i<=m;i++){int a,b;cin>>a>>b;d[a]++,d[b]++;}for(int i=1;i<=n;i++){long long tmp=d[i]*(d[i]-1)/2%mod;for(int j=2;j<=d[i];j++){ans[j]=(ans[j]+C(d[i],j))%mod;}} long long res=0;for(int i=2;i<=n-1;i++)res^=ans[i];cout<<res<<"\n";
}signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;init();cin>>t;while(t--) solve();
}

1007Expectation (Easy Version)

直接枚举即可

当前i 贡献是i^m,概率是n场里面选择i场赢,赢i场的概率*输(n-i)场的概率

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;int n;
int a[N],b[N];
int fact[N],infact[N];
int qmi(int a, int k, int p)  // 求a^k mod p
{int res = 1 % p;while (k){if (k & 1) res = (LL)res * a % p;a = (LL)a * a % p;k >>= 1;}return res;
}void init(){fact[0] = infact[0] = 1;for (int i = 1; i < N; i ++ ){fact[i] = (LL)fact[i - 1] * i % mod;infact[i] = (LL)infact[i - 1] * qmi(i, mod - 2, mod) % mod;}
}
int C(int a,int b){if(b>a) return 0;return ((LL)fact[a] * infact[b] % mod * infact[a - b] % mod);
}
int gcd(int a, int b)  // 欧几里得算法
{return b ? gcd(b, a % b) : a;
}
void solve(){int n,m,x,y;cin>>n>>m>>x>>y;int win=x*qmi(y,mod-2,mod)%mod;int sum=0,ans=0;a[0]=b[0]=1;for(int i=1;i<=n;i++) a[i]=a[i-1]*win%mod;for(int i=1;i<=n;i++) b[i]=b[i-1]*(1-win+mod)%mod;for(int i=1;i<=n;i++){sum=(sum+qmi(i,m,mod))%mod;int res=C(n,i)*a[i]%mod*b[n-i]%mod*sum%mod;ans=(ans+res)%mod;}cout<<(ans+mod)%mod<<"\n";
}
signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;init();cin>>t;while(t--) solve();
}
1003String Magic (Easy Version)

对于每个下标 用合法的起点减去不合法的终点就是答案了,注释在代码里

要用到马拉车算法,求出f[ ]数组就是以i为中心的回文字符串的长度

每个字符串对应一个

#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10,mod=998244353;typedef long long LL;
typedef pair<int, int> PII;
int n;
char ss[N];
int f[N];
int sum[N];
vector<int> V[N];
int tr[N];
int lowbit(int x)
{return x & -x;
}void add(int x, int c)  // 位置x加c
{while(x){tr[x]+=c;x-=lowbit(x);}
}int query(int x)  // 返回前x个数的和
{int res = 0;while(x<=n+n){res+=tr[x];x+=lowbit(x);}return res;
}void solve(){int ans=0;string s;cin>>s;n=s.size();s="?"+s;ss[0]='?';ss[n+n+2]='^';for(int i=1;i<=n;++i){ss[i+i-1]='*';ss[i+i]=s[i];ss[i+i+1]='*';}for(int i=1;i<=n+n;++i) V[i].clear(),tr[i]=0,f[i]=0;int mr=0,mid=0;for(int i=1;ss[i]!='^';i++){if(i<mr) f[i]=min(mr-i,f[2*mid-i]);else f[i]=1;while(ss[i+f[i]]==ss[i-f[i]]) f[i]++;if(f[i]+i>mr){mr=f[i]+i;mid=i;}}for(int i=1;i<=n+n;i++) f[i]--;//f[i]是求每个点为中心的最长回文串的长度for(int i=3;i<=n+n;++i){if(i%2==0)  continue;V[i-1].push_back(i);//有个性质*号的位置如果长度不是1,那么他对应的字符串长度一定是偶数//不是*号的字母回文字符一定包含*号 *a* 所以这是合法对数的起点V[i-(f[i]+1)/2-1].push_back(-i);//i-(f[i]+1)/2-1 的点就已经不在i的回文范围内了}for(int i=1;i<=n+n;++i){add(i+f[i],1);//当前i能扩展到右边的端点位置for(auto v:V[i]){if(v>0) ans+=query(v);else    ans-=query(-v);//相当于起点减去终点}}cout<<ans<<"\n";
}
signed main(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

相关文章:

杭电多校2023“钉耙编程”中国大学生算法设计超级联赛(5)

1006Touhou Red Red Blue dp 设状态方程为前i个数中&#xff0c;当前第一个包里面的是0/1/2/3状态&#xff0c;第二个包里面是0/1/2/3状态 0代表着还没有颜色&#xff0c;1代表R&#xff0c;2代表G&#xff0c;3代笔B颜色 初始状态都没选择颜色所以都是状态0 没选择颜色只…...

Matlab进阶绘图第24期—悬浮柱状图

悬浮柱状图是一种特殊的柱状图。 与常规柱状图相比&#xff0c;悬浮柱状图可以通过悬浮的矩形展示最小值到最大值的范围&#xff08;或其他范围表达&#xff09;&#xff0c;因此在多个领域得到应用。 本文使用自己制作的Floatingbar小工具进行悬浮柱状图的绘制&#xff0c;先…...

【题解】链表中倒数最后k个结点、删除链表的倒数第n个节点

文章目录 链表中倒数最后k个结点删除链表的倒数第n个节点 链表中倒数最后k个结点 题目链接&#xff1a;链表中倒数最后k个结点 解题思路1&#xff1a;先找长度再找k对应的节点 首先遍历一遍链表找到链表的长度n 然后比较长度和k的大小关系&#xff0c;如果比k小&#xff0c;…...

网络安全大厂面试题

自我介绍 有没有挖过src&#xff1f; 平时web渗透怎么学的&#xff0c;有实战吗&#xff1f;有过成功发现漏洞的经历吗&#xff1f; 做web渗透时接触过哪些工具 xxe漏洞是什么&#xff1f;ssrf是什么&#xff1f; 打ctf的时候负责什么方向的题 为什么要搞信息安全&#xff0c;对…...

7.事件类型

7.1鼠标事件 案例-轮播图点击切换 需求&#xff1a;当点击左右的按钮&#xff0c;可以切换轮播图 分析: ①右侧按钮点击&#xff0c;变量&#xff0c;如果大于等于8&#xff0c;则复原0 ②左侧按钮点击&#xff0c;变量–&#xff0c;如果小于0&#xff0c;则复原最后一张 ③鼠…...

ts中声明引入未使用的报错——解决方案

在编写ts项目的时候&#xff0c;经常会出现如下报错&#xff1a; 导入声明中的所有导入都未使用 这是因为导入的模块暂时没有使用&#xff0c;ts给的一个提示信息 解决方案&#xff1a; 在ts.config.json中 把noUnusedLocals 设置为false即可 {"compilerOptions"…...

集团MySQL的酒店管理系统

酒店管理系统 概述 基于Spring Spring MVC MyBatis的酒店管理系统&#xff0c;主要实现酒店客房的预定、入住以及结账等功能。使用Maven进行包管理。 用户端主要功能包括&#xff1a; 登录注册、客房预订、客房评论&#xff08;编写评论和查看评论&#xff09; 后台管理主要…...

Kotlin基础(九):对象和委托

前言 本文主要讲解kotlin对象和委托。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 对象 在Kotlin中&#xff0c;对象&#xff08;Object&#xff09;是一个具有特殊用途的单例实例。它是一种创建单个实例的方式&#xff0c;确保在整个应用程序中只存在一个特…...

八大排序算法--希尔排序(动图理解)

目录 希尔排序 概念 算法思路 动画演示 代码如下 复杂度分析 时间复杂度测试 运行结果 完整代码 创作不易&#xff0c;如果本篇博客对您有一定的帮助&#xff0c;大家记得留言点赞哦。 希尔排序 概念 希尔排序是插入排序的一种&#xff0c;是对直接插入排序的优化。其…...

数据结构之常见排序算法

文章目录 1.排序概念2.10种排序比较3.排序算法3.1直接插入排序&#xff08;元素越有序&#xff0c;越高效&#xff09;3.2希尔排序序( 缩小增量排序 )3.3直接选择排序3.5堆排序3.6冒泡排序3.8快速排序 递归实现&#xff08;无序使用最好&#xff09;3.8.1挖坑法 &#xff08;建…...

Java版企业电子招标采购系统源代码Spring Boot + 二次开发 + 前后端分离 构建企业电子招采平台之立项流程图

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…...

2.2 模型与材质基础

一、渲染管线与模型基础 1. 渲染管线 可编程阶段&#xff08;蓝色区域&#xff09;&#xff1a; 1顶点着色器 2几何着色器 3片元着色器 2. 模型的实现原理 UV&#xff1a;在建模软件中&#xff0c;进行UV展开&#xff0c;UV会放在一个横向为U纵向为V&#xff0c;范围&#xff0…...

什么是Docker

一 、什么是Docker 1.1 简介 Docker 使用 Google 公司推出的 Go 语言 (opens new window)进行开发实现&#xff0c;基于 Linux 内核的 cgroup (opens new window)&#xff0c;namespace (opens new window)&#xff0c;以及 OverlayFS (opens new window)类的 Union FS (open…...

1109. 航班预订统计

这里有 n 个航班&#xff0c;它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings &#xff0c;表中第 i 条预订记录 bookings[i] [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti &#xff08;包含 firsti 和 lasti &#xff09;的 每个航班 上预订了 seatsi 个座…...

[SQL挖掘机] - 窗口函数 - 合计: rollup

介绍: rollup 是一种用于在 sql 查询中生成聚合数据的特殊操作。它可以创建包含子总计和总计的结果集&#xff0c;并可用于生成层次化报表或汇总数据。 rollup 操作在 group by 子句中使用&#xff0c;可以在查询结果中生成多级汇总数据。它会根据指定的列进行分组&#xff0…...

2022年全国硕士研究生入学统一考试管理类专业学位联考写作试题——解析版

四、写作&#xff1a;第56&#xff5e;57小题&#xff0c;共65分。其中论证有效性分析30分&#xff0c;论说文35分。 56.论证有效性分析&#xff1a;分析下述论证中存在的缺陷和漏洞&#xff0c;选择若干要点&#xff0c;写一篇600字左右的文章&#xff0c;对该论证的有效性进…...

元类在测试框架中的运用

元类在测试框架中的运用 书接上回 我们知道了元类的基本用法&#xff0c;也写了一个小demo&#xff0c;接下来我们就尝试运用进我们测试框架。 #一款无需编码且易用于二次开发的接口测试框架。 #我写的我写的我写的我写的 pip install mwj-apitest #这里面就用到了元类&…...

VBA快速交叉分段标记字符颜色

实例需求&#xff1a;A列中有不确定行数的数据&#xff0c;现在需要将数据按照每4位一组间隔标记颜色&#xff0c;如下图所示。 示例代码如下。 Sub Demo()Dim rngCell As RangeDim rngData As RangeDim i, res, intLenSet rngData Range("A1").CurrentRegionrngDa…...

根据Pytorch源码实现的 ResNet18

一&#xff0c;类模块定义: import torch import torch.nn as nn import torch.nn.functional as F from torch import Tensorclass ResBlock(nn.Module):def __init__(self, inchannel, outchannel, stride1) -> None:super(ResBlock, self).__init__()# 这里定义了残差块…...

药品管理系统servlet+jsp+sql医院药店仓库进销存java源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 药品管理系统servletjspsql 系统有1权限&#xff1a;…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...