关闭

merge

题目大意将两个排列随意归并,求能得到多少本质不同的序列。DP直接转移会算重。 手玩+感受一下发现容斥系数是卡特兰数。 详见代码。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; typedef long long ll; const int maxn=2000...
阅读(26) 评论(0)

[bzoj4936]Match

题目大意给你一个小写字母字符串。 请构造一个合法括号序,使得匹配的括号在原串中字母相同。 要求字典序最小,且要求判断无解。暴力我们考虑如何判断无解。 你考虑一个栈,顺序扫这个字符串。 假如当前字符和栈顶字符相同消除栈顶字符,否则将这个字符加进栈中。 这可以得到一个合法解,且我们可以证明任意解可以变成这个合法解。 这就是无解判断。 字典序最小的暴力也很简单。一些性质我们设f(l,r)=0...
阅读(97) 评论(3)

决战

题目大意给你一个3*n网格图。 你有m个士兵,每个士兵会对3*3的范围内进行攻击,攻击矩阵初始给定。 有多少种放置士兵的方法,使得士兵互不攻击。DP很显然能dp 这个dp还很显然能NTT优化 但是常数大显然不一定跑得过暴力 于是我们就暴力吧(雾#pragma GCC optimize(2) #include #include #define fo(i,...
阅读(38) 评论(0)

[美团 CodeM 复赛]配对游戏

题目描述有 nnn 个人排成一排,一开始全部面向前方,然后随机朝左或是朝右转。然后我们不断审查这个队列,每次选择两个面对面的相邻的人,将他们从队列中取出。例如(> 表示向右,>><<>><<><><><<<> 的消除过程为,>><><<<> 到 >><<<> 到 ><<> 到 <>(每次去除一对)...
阅读(144) 评论(0)

小R打怪兽

题目描述推式子首先我们设Bi=max(A−Di,1)B_i=max(A-D_i,1) ∑mi=1∑Xj≤Hj≤Yj[∑nj=1[⌈HjBj⌉≤i]≥k]\sum_{i=1}^m\sum_{X_j\leq H_j \leq Y_j}[\sum_{j=1}^n[\lceil\frac{H_j}{B_j}\rceil\leq i]\geq k] 这让我们很不好搞,但是我们可以容斥,枚举若干个,然后要求...
阅读(69) 评论(0)

流浪

题目描述DP考虑每个位置的贡献。 枚举一个位置,然后做dp,我们需要处理从(0,0)走k步到这个位置的方案数(中途不到达这个位置),以及从这个位置开始走k步到某个位置的方案数(中途不到达这个位置),以及从这个位置开始走k步中途不到达自己的方案数。 然后再做dp,从(0,0)走j步到达这个位置且中间恰好经过它k次的方案数。#pragma GCC optimize (2) #include<cstd...
阅读(86) 评论(0)

容器

题目描述DP用括号表示一段区间。 设f[i,j,k]表示做到第i个位置,目前未被匹配的左括号有j个,还有k只跳蚤没有左括号。 转移可以直接枚举这个位置放多少右括号以及下一个位置放多少左括号,乘上对应组合数。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) #define fd(i,a,b) for(i...
阅读(64) 评论(0)

呵呵

题目大意n个点,i和j之间有wi*wj条边。 图中任一生成树的贡献记为每个点的度数积。 求所有生成树贡献和。prufer序富榄题解#include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; type...
阅读(56) 评论(0)

哈哈

题目大意DP容易发现满足那两个条件就是说不存在低谷。 设g[i,j,0/1]表示[i,j]是最后一次操作的,其中是递增还是递减的最大得分,由于相邻两项差1可以直接得到长度。 设f[i,j]表示操作掉[i,j]的最大得分,有两种转移。 f[i,j]=f[i,k]+f[k+1,j]f[i,j]=f[i,k]+f[k+1,j] f[i,j]=g[i,k,0]+g[k+1,j,1]+v[2∗w[k]...
阅读(71) 评论(0)

[JZOJ100020]B

题目大意有多少n*n的01矩阵每行每列恰有2个1。推式子设a(n)表示答案。 每次新加一行一列,你找到一行,把最后一行和它换,并在最后一列这行的位置写上1。 然后再找一行,在最后一列这写1,并找到之前一个位置的1把它翻到只有一个1的那行。 这样是n*(n-1)*a(n-1)。 你发现有种情况翻不上去,于是你枚举哪里翻不上,然后去掉那两列,这样是n*(n-1)^2*a(n-2)。#includ...
阅读(68) 评论(0)

[hihocoder1527]快速乘法

题目描述在写代码时,我们经常要用到类似 x × a 这样的语句( a 是常数)。众所周知,计算机进行乘法运算是非常慢的,所以我们需要用一些加法、减法和左移的组合来实现乘一个常数这个操作。具体来讲, 我们要把 x × a 替换成:(x<<a0)op1(x<<a1)op2(x<<a2)...opn(x<<an)(x<<a0) op1 (x<<a1) op2 (x<<a2) ... opn (x<<an)...
阅读(184) 评论(0)

[hihocoder1526]序列的值

题目描述给定一个长度为 n 的序列 a[1..n],定义函数 f(b[1..m]) 的值为在 [0,m-1] 内满足如下条件的 i 的数目:b 中前 i 个数异或起来的值小于 b 中前 i +1个数异或起来的值。对于 a[1..n] 的每个子序列 b[1..m],求f(b[1..m])之和。做法显然只需要对每个位置i求出前面多少子序列异或和比再异或它之后小即可,后面部分乘一个2的次幂。 假如a<b...
阅读(176) 评论(0)

没有上司的舞会

题目大意动态加子节点的树,每次询问最大独立集大小。DP给平衡树每个点x维护一个f[x,0/1,0/1]表示以x为根的这个平衡树区间在原树上对应的部分(包括连出去的虚子树)的最大独立集是多少,且这个平衡树区间的左端和右端选或不选。 然后就很好做了。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) usin...
阅读(85) 评论(0)

[CF538B]Quasi Binary

题目大意懒得写做法这样的数只有2^6个。 因此暴力DP#include #include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; const int maxn=1000000+10...
阅读(67) 评论(0)

[bzoj4926]皮皮妖的递推,又是一个牛逼题

题目描述YOUSIKI学习了递推,于是他请皮皮妖给他出道题,皮皮妖说: f(1)=1,f(i)=i-f(i-1),求f(n) YOUSIKI看了一眼把它秒切了,于是他要求皮皮妖加大难度,皮皮妖想了想,说: f(1)=1,f(i)=i-f(f(i-1)),求f(n) YOUSIKI看了两眼把它秒切了,于是他要求皮皮妖加大难度,皮皮妖想了想,说: f(1)=1,f(i)=i-f(f(f(i-1...
阅读(383) 评论(0)
94条 共7页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:209637次
    • 积分:9125
    • 等级:
    • 排名:第2025名
    • 原创:689篇
    • 转载:4篇
    • 译文:0篇
    • 评论:181条
    最新评论
    文章分类