T1

牛牛刚学习了输入输出,他遇到了一道这样的题目。
输入2个整数a和b
保证输入的a和b在long long范围之内,即满足
-9223372036854775808 <= a, b <= 9223372036854775807
计算a+b的值,即这两个数字的和。
如果a+b在long long范围之内,即满足
-9223372036854775808 <= a + b <= 9223372036854775807
那么输出一行一个整数表示a+b的结果。
如果a+b不在long long范围之内,即越界了,那么输出"hello, %lld\n",包含引号。
具体可以参见样例。
 
题解:
题目虽然简单,但是还是值得一做。
关于判断a+b,
1.a、b异号或者一个是0,那么输出a+b即可。
反之,用高精判断。
高精比较麻烦的。
如果上限是C,A+B<=C等价于A<=C-B即可。
下限同理可以处理。
甚至有人利用溢出原理。
a、b同号,如果a+b不是同号,那么就溢出了。
 
然后,输出"hello, %lld\n"怎么办?
考察转义。
输出",就输出\"
输出%,就输出%%
输出\,就输出\\
所以,
printf("\"hello,%%lld\\n\"");
 

T2T3略

T4:
合法括号序列

键盘上有左括号(,右括号),和退格键-,共三个键。
牛牛希望按键n次,使得输入的字符串恰好一个合法的括号序列。
每按一次左括号(,字符串末尾追加一个左括号(
每按一次右括号),字符串末尾追加一个右括号)
每按一次退格键-,会删掉字符串的最后一个字符,
特别的,如果字符串为空,牛牛也可以按退格,但是什么都不会发生。

输出方案数对p取模,注意p可能不是质数。
注:只要按键方法不同,就是不同的方案,即使得到的序列一样。
对于所有数据: 2 <= n <= 1000, 2 <= p <= 10000
30分: n <= 40
70分: n <= 100
 
题解:
可以发现(我想不到),

方案数和具体括号序列无关,只和最终括号序列长度有关。

因为就这么多剩下的,那么管他是什么字符呢?

所以问题分成两个部分。

枚举括号序列的长度2k,

1.计算出来对于每一个长度2k,合法的括号序有多少个。

2.对于长度为2k的序列,方案数有多少。

乘法原理再加法原理即可。

对于1,是一个卡特兰数。

可以看:卡特兰数Catalan——定义、公式、模型总结

具体证明,可以直接转化成火车出栈顺序,或者走到(i,i)方案数。

预处理组合数。递推或者直接C(2n,n)-C(2n,n-1)

对于2,设f[i][j]表示,前i次操作后,序列长度为j的方案数。

f[i][j]=f[i-1][max(0,j-1)]+2*f[i-1][j+1]

为什么删除的操作转移有一个2

因为我们的f[i][j]其实也是一个可以变化成任意一个的合法序列,所以每个位置的填法要么是),或(,唯一确定的。

但是把这个位置删了,那么就可以“反悔”地把上一位随便填。

牛客网NOIP赛前集训营-普及组(第二场)的更多相关文章

  1. 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告

    目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...

  2. [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列

    链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字 ...

  3. 牛客网NOIP赛前集训营-普及组(第七场)

    链接:C 来源:牛客网 牛牛的同学给牛牛表演了一个读心术:牛牛先任意选定一个非负整数,然后进行N次操作:每次操作前,假设牛牛当前的数是a,那么这个操作可能是a = a + x, 或者a = a * x ...

  4. 牛客网NOIP赛前集训营-普及组(第一场)

    前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...

  5. Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)

    啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下 ...

  6. 牛客网NOIP赛前集训营-普及组(第一场)C 括号

    括号 思路: dp 状态:dp[i][j]表示到i位置为止未匹配的 '(' 个数为j的方案数 状态转移: 如果s[i] == '(' dp[i][j] = dp[i-1][j] + dp[i-1][j ...

  7. 牛客网NOIP赛前集训营-普及组

    第一场: A-绩点 题目描述 小A刚考完大学考试.现在已经出了n门课的成绩,他想自己先算一下这些课的绩点是多少.设第i门课的他拿到的绩点是gpai,而这门课的学分是sci,那么他的总绩点用下面的公式计 ...

  8. 牛客网 NOIP赛前集训营-普及组(第四场)C--部分和 (高维前缀和)

    传送门 解题思路 高维前缀和模板题.首先,求前缀和有两种方式,比如说对于求二维前缀和来说. 第一种 : for(int i=1;i<=n;i++) for(int j=1;j<=n;j++ ...

  9. 牛客网NOIP赛前集训营-提高组(第四场)游记

    牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个 ...

随机推荐

  1. PHP 伪协议

    1.file:// file://用于访问本地文件系统,不受allow_url_fopen影响 <?php include($_GET['file']); ?> 2.http:// GET ...

  2. react-native ListView 性能问题

    常见性能问题已经有很多答案,这里要说的是使用ListView时注意的地方,    ListView的容器需要设定一个固定高度, 不然ListView中的item过多,会把整体页面撑开,设置的 remo ...

  3. webpack入门指南-step04

    一.建立项目 建一个文件夹,然后新建一个package.json的文件在项目根目录下 如果你使用git管理你的这个项目的话,建议你新建一个.gitignore文件,不要让git提交一些node依赖的模 ...

  4. JavaWeb项目通过调用cmd实现备份数据库的功能

    1.别急着上车,先测试一下能否成功调用cmd,可以尝试通过cmd命令打开计算器,代码如下:     2.能成功打开计算器后,证明调用cmd的方法是没错的,现在把cmd命令字符串改成我们备份数据库的 命 ...

  5. IDEA下载插件超时的原因

    setting中红框的对勾去掉就可以下载插件了

  6. 20162319 实验四 Android程序设计

    Android Stuidio的安装测试: 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号 ·实验过程 完成任务一,只需在Android应用程序文件 ...

  7. WebGL学习笔记五

    本章主要是对纹理的进一步讲解,我们很多时候需要将现实中已有 的图片在网页中展示出来而不是去创造图片,通过纹理 我们可以将光栅化的图形和图片纹理形成映射并且将图片在图形 中显示出来.基本过程与前几章一致 ...

  8. 配置树莓派/Linux默认声卡设备

    1.设置默认声卡为USB声卡 在$HOME下新建.asoundrc $cd $HOME $nano .asoundrc 输入以下内容 defaults.ctl.card 1 defaults.pcm. ...

  9. java List.get

    并不能 用如果List在i位置值不存在 并不能 List.get(i) !=null 判断 会抛异常 版权声明:本文为博主原创文章,未经博主允许不得转载.

  10. 前端基础(http协议相关篇)

    网络协议篇: 1.http请求过程 DNS解析——tcp三次握手——建立tcp连接后发起http请求——服务器响应http请求 ——浏览器得到资源——浏览器渲染 2.http报文 通用首部:可以出现在 ...