湖南省第十届"蓝狐网络杯"大学生计算机程序设计竞赛,2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解...

2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解

update10.01 突然发现叉姐把这场的题传到牛客上了,现在大家可以有地方提交了呢。

不知道该干什么所以就来水一篇题解

题解全是根据印象口胡的,代码是不可能重新写的,这辈子不可能重新写的。

A

description

有一个\(n\times m\)的全\(0\)矩阵,选择一个子矩阵全部修改成\(1\),现在给出修改后的矩阵,问是否存在合法修改方案。

\(1 \le n, m \le 10.\)

solution

找到最左上的\(1\)和最右下的\(1\),判断是否中间全是\(1\),剩下的全是\(0\)就好了。

需要特判没有\(1\)的case。

B

description

给出\(n,k\),求\(\min(\binom{n}{k},10^{18})\)。

\(0 \le k \le n \le 10^9.\)

solution

gzy写的,他一遍过了,反正gzynb就对了。

先令\(k\le \lfloor\frac n2\rfloor\),然后再\(O(k)\)计算组合数,即每次乘一个数再除一个数,可以用long double或__int128判断是否超过\(10^{18}\),一旦爆了就直接输出\(10^{18}\)。

C

description

给出一个长度为\(n\)的字符集大小为\(m\)的串,对于\(\forall i\in[1,m]\),求往字符串后面新增一个字符\(i\)后增加了多少本质不同的子串。

\(1 \le n,m \le 10^6.\)

solution

枚举原串的一个后缀,找出这个后缀在串中的其他出现位置,此时可以更新这个位置往后一个字符对应的答案。

实现中可以使用后缀自动机(只要从自动机上原串对应的那个点出发一直跳\(fail\)就行了)或者exkmp(线性求原串与所有前缀的\(lcs\))。

D

description

求有多少长度为\(n\)的序列\(\{a_i\}\)满足:

\(a_i \in [0,9].\)

满足\(m\)条限制,每条限制给出\(l,r\),要求\(\prod_{i=l}^ra_i \equiv 0 \bmod 9.\)

方案数对\(10^9+7\)取模。

\(1 \le n,m \le 50.\)

solution

限制即为要求区间内存在至少两个\(3\)的质因子,在这里可以认为\(0\)包含\(\infty\)个\(3\)质因子。

记\(dp_{i,j,k}\)表示前\(i\)个位置,最近的两个\(3\)质因子在\(j,k\)的方案数,转移是先判掉不合法(对每个限制的右端点维护对应最大左端点),然后在考虑第\(i+1\)位上是填\(\{0,9\}\)还是\(\{3,6\}\)还是\(\{1,2,4,5,7,8\}\)。

E

description

给一个数字串\(S\),要求将\(S\)划分成若干互不相同的\([0,99]\)内的整数,不能含有前导零,求方案数。

\(1 \le |S| \le 50.\)

solution

直接搜。

考虑一位数(包括\(0\))只有\(10\)个,那么确定了一位数的位置后剩下的划分也就随之确定了,假设数字\(i\)出现了\(a_i\)次,那么搜索的总状态数不超过\(\prod_{i=0}^9(a_i+1) \le (\frac{\sum_{i=0}^9(a_i+1)}{10})^{10}=6^{10}\)。

F

description

一个人初始在\((0,0)\),可以走不超过\(n\)步,每一步可以向右走不超过\(a\)步,或者向上走不超过\(b\)步,或者向左走不超过\(c\)步,或者向下走不超过\(d\)步,求这个人可到达的位置数\(\bmod 10^9+7\)。

\(1 \le n,a,b,c,d \le 10^9.\)

solution

等差数列求和直接算就好了。

G

description

有一个\(n\times m\)的矩阵\(\{C_{ij}\}\),需要构造一个\(m\)阶排列\(\sigma\),使得矩阵的所有列向量根据\(\sigma\)重新排列后满足行向量字典序单调不降。要求输出满足条件的字典序最小的

\(1 \le n,m \le 2000.\)

solution

考虑\(n=2\),那么每一列的两个数的大小关系只有以下三种:\(C_{1j}>C_{2j}\)或\(C_{1j}=C_{2j}\)或\(C_{1j}C_{2j}\)的\(j\)都需要排在至少一个\(C_{1k}

这个限制可以抽象成:给出\(\{1,2,...,m\}\)的两个子集\(A,B\),满足\(A\cap B = \varnothing\),要求在最终的排列\(\sigma\)中,\(B\)中每个元素都至少排在一个\(A\)中元素的后面。

\(n>2\)的情况就是给出了多组\(A,B\)。

令每个点的入度为包含这个点的\(B\)集合数量,每次选择一个入度为零且编号最小的点(保证字典序最小)放在当前排列末尾,如果这个元素在某些\(A\)集合内是第一次出现,那么就把这个\(A\)对应的\(B\)中所有元素的入度减\(1\)。

总时间复杂度\(O(nm+m\log m)\)。

H

description

一张\(n+m\)个点的图,初始在\(1\)号点,每次在\(i\)号点的时候有\(P_{i,j}\)的概率走到\(j\)号点,保证\(\forall i\in[n+1,n+m],P_{i,j}=[i=j]\)。可以发现经过无限次行走后停留在前\(n\)号点上的概率是\(0\),求停留在后\(m\)号点每个点的概率\(\bmod 10^9+7\)。

\(1 \le n + m \le 500.\)

solution

设\(f_i\)表示经过\(i\)点的期望次数,于是

\[f_1=\sum_{j=1}^nf_jP_{j,1}+1\\

f_i=\sum_{j=1}^nf_jP_{j,i}(i>1)\]

高斯消元解出\(f_i\)后随便算一下就好了。

I

description

给一棵树,边有边权,求有多少条路径满足边权和是\(2019\)的倍数。

\(1 \le n \le 20000.\)

solution

点分即可。

J

description

给出\(n\)个\(m\)元组\((a_1,a_2,...,a_m)\),记\(count(x)\)表示有多少个\(m\)元组满足\(\forall j\in[1,m],popcount(a_j\land x)\)为奇数。求\(\sum_{x=0}^{2^k-1}count(x)3^x \bmod 10^9+7\)。

\(1 \le n \le 10^4, 1 \le m \le 10, 1 \le k \le 30, 0 \le a_i < 2^k.\)

solution

对于每个\(n\)元组单独求答案然后相加即为答案。

把\(m\)元组写成一个\(k\times m\)的\(01\)矩阵,相当于选出一些行向量做异或运算,要求结果为\(2^m-1\)。直接按二进制位\(dp\),记\(f_{i,j}\)表示处理完前\(i\)位,当前二进制状态为\(j(j\in[0,2^m))\)的方案数。

总复杂度是\(O(nk2^m)\),大概能过的样子。

K

description

维护\(n\)个链表以及\(m\)次操作,每次操作为将一个链表剪切到另外一个的后边并将其翻转。

\(1 \le n,m \le 10^5.\)

solution

直接启发式合并即可。

不过要我写可能就直接上treap了。

第十一届&OpenCurlyDoubleQuote;蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小&quest; 字符串水题

B - 大还是小? Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Description 输入两个实数,判断第一个数大 ...

2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心

2007: Football Training Camp[原创-转载请说明] Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 1 ...

2016年湖南省第十二届大学生计算机程序设计竞赛Problem A 2016 找规律归类

Problem A: 2016 Time Limit: 5 Sec  Memory Limit: 128 MB Description  给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) ...

湖南省第十二届大学生计算机程序设计竞赛 F 地铁 多源多汇最短路

1808: 地铁 Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i ...

湖南省第十二届大学生计算机程序设计竞赛 B 有向无环图 拓扑DP

1804: 有向无环图 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 187  Solved: 80[Submit][Status][Web Board ...

湖南省第十二届大学生计算机程序设计竞赛 G Parenthesis

1809: Parenthesis Description Bobo has a balanced parenthesis sequence P=p1 p2…pn of length n and q ...

湖南省第十二届大学生计算机程序设计竞赛 A 2016

1803: 2016 Description  给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:   1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. In ...

【模拟】CSU 1807 最长上升子序列~ &lpar;2016湖南省第十二届大学生计算机程序设计竞赛&rpar;

题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1807 题目大意: 给你一个长度为N(N<=105)的数列,数列中的0可以被其他数 ...

随机推荐

TabSiPlus发布1749版本

拖了几天,终于可以发布了,下载地址如下: http://www.winmsg.com/download/TabSiPlus_0_99b2_1749.rar 这个包里没有附带VC的运行库,考虑到大多数人 ...

Centos7 php 5&period;6&period;19编译安装

0x01  前言 在php官网下载php-5.6.19.tar.gz源代码(php7虽然说性能提升很大,但是小菜菜还是先用着这个先吧),解压后根目录有个INSTALL文件,里面有安装教程了,目录如下: ...

POJ1163 The Triangle&colon; 倒三角形问题

经典的DP问题,DP思想也很直接: 直接贴代码: #include #include #include # ...

【USACO 2&period;2&period;4】派对灯

[描述] 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...

Docker 自定义网桥

除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器. 在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥. 如果服务已经运行, ...

script标签的type&equals;&quot&semi;test&sol;html&quot&semi;时

们可以在

使用Editplus配置PHP调试环境

工欲善其事必先利其器.近期看了非常多PHP的IDE介绍.最后选择了Editplus.以下说说一些PHP的调试环境配置问题. 1. 加入PHP模板 第一步 新建->其他->php 第二步 输 ...

C&num;基础-获得当前程序的 空间名&period;类名&period;方法名

string typeName = this.GetType().ToString();//空间名.类名 string typeName = this.GetType().Name;//类名 new ...

Python装饰器探究——装饰器参数

Table of Contents 1. 探究装饰器参数 1.1. 编写传参的装饰器 1.2. 理解传参的装饰器 1.3. 传参和不传参的兼容 2. 参考资料 探究装饰器参数 编写传参的装饰器 通常我 ...

C&plus;&plus;实现用两个栈实现队列

/* * 用两个栈实现队列.cpp * * Created on: 2018年4月7日 * Author: soyo */ #include #include

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值