关闭

[agc009e]Eternal Average

前言需要发现性质的dp。 重点在于发现性质。题意请构造若干k叉树,使得每颗均有n+m个叶子,有n个叶子点权为0,m个叶子点权为1,对于非叶子点权为儿子点权的平均数。 问最多构造多少k叉树,使得任意两颗根节点点权不同?DP令n个叶子的深度为x1~xn,同理m个叶子的深度为y1~ym。 发现根节点的点权是∑mi=1k−yi\sum_{i=1}^mk^{-y_i}。 如果所有叶子点权都为1,那么根...
阅读(38) 评论(0)

[agc009c]Division into Two

前言DP题,还可以,不是很难。题目大意把一堆互不相同的数分成两个集合X和Y,其中一个集合X任意两数之差不小于A,另一集合Y任意两数之差不小于B。 问方案数,集合可以为空。DP把这些数排序。 接着添加第0个数无穷小以及第n+1个数无穷大。 我们假设A>=B。 设f[i]表示分配好了前i个数,第i个数去X集合的方案。 转移显然要找到上一个位置j。 第一种情况j=i-1,只要a[i]-a[i-...
阅读(32) 评论(0)

[agc019e]Shuffle and Swap

前言计数水平不行了。 居然不会n^2去dp这个模型。题意太麻烦了看网站。DP假设有x个公用1和y个非公用1。 用图论来理解。 最后一定形成y条链,若干个环。 其中链中的边在序列中要按顺序,环则随意。 环可以先不管。 考虑dp[i,j]表示目前做出来两个i+j的序列,有i个公用1和j个非公用1,区分编号,有顺序,形成j条链的方案数。 有dp[i,j]=dp[i-1,j]*i*j+dp[i...
阅读(40) 评论(0)

[agc019c]Fountain Walk

前言这是一道比较简单的题。 但是我没想好答案增大的情况,所以我一开始觉得细节讨论有点麻烦。。题目大意不想说,看网站做法先通过一系列翻转交换等满足x1<=x2,y1<=y2。 我们注意经过温泉有减少答案(走1/4圆) 和增加答案(走1/2圆)两种。 我们不希望增加答案,希望尽量减少答案。 由于减少答案很少,矩形边长很大,因此我们不能为了走温泉绕弯路,只能向右向上走。 然后对这个矩形内的点按...
阅读(65) 评论(0)

[agc015e]Mr.Aoki Incubator

前言看错题好久,怨念极深。 主要就是推染红的条件。 将速度排序是关键。 然而本题最重要的是证明区间不包含,然后做法可以很显然的得到。题意数轴上许多黑点,每个点都有一个方向向右的正速度。 当两个点在同一个位置上重合时,若其中一个是红色,另一个也变成红色。 保证没有相同速度或初始坐标。 现问你有多少方法染红一些点,使得无穷久后所有点都被染红。做法观察一个点i染红后,哪些点j会被染红? 1、...
阅读(92) 评论(0)

[agc015c]Nuske vs Phantom Thnook

前言一开始想了无特殊性做法。 后来才用到树的性质QAQ题目大意一个蓝白网格图,保证蓝格子连成森林。 每次选取一个子矩阵问蓝联通块个数。做法森林联通块数=点数-边数。 于是很好做。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=...
阅读(51) 评论(0)

[agc013e]Placing Squares

前言这题啃了好久啊。 一开始就知道要解决子问题,但没想到是模型转换,只是对着式子乱搞,推了好久(中途推出了一个隔项斐波那契数列)然而最后证实我式子推错了(菜醒.jpg) 于是膜拜了题解的模型转换。题意给你一个大小为m的集合S,S中不包含n。 现在对于一个正整数序列a1−aka_1-a_k,如果不存在sis_i属于集合S就是合法的,s表示a的前缀和。 这样的序列贡献是Πki=1a2i\Pi_{...
阅读(64) 评论(0)

[agc013d]Piling Up

前言一开始写了个naive的dp发现方案数跟初始放球无关只和颜色序列有关所以我算重了。 然后想到了强制到达0,但发现会算漏(因为0会卡下界)。 然后想到加上强制到达1就不卡下界了,但发现还是会算重(如果这个方案没有执行某种转移)。 最终弄出来才觉得这种“简单dp”题的精髓还是挺秒的。题意在箱子里放n个球,有黑白两色。 执行m轮操作: 抓箱子里一个球堆在塔顶。 往箱子里放入一个黑球和一个白...
阅读(95) 评论(0)

[agc012e]Camel and Oases

前言很容易的就发现了只有log次跳跃。 然后状压DP。 似乎就是个简单题吧(怎么比12c还简单)题意一排点,两点间有距离。 初始你有一个行走值v,如果相邻两点距离不超过v你可以自由在这两点行走。 当v大于0时,你可以选择某一时刻突然飞到任意点,这样做后v会减半(下取整)。 问从每个位置初始出发能否到达所有位置。DP预处理left[i,j]表示在i行走值已经减半j次能往左走到哪,同理有rig...
阅读(69) 评论(0)

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...
阅读(137) 评论(0)

[bzoj4936]Match

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

决战

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

[美团 CodeM 复赛]配对游戏

题目描述有 nnn 个人排成一排,一开始全部面向前方,然后随机朝左或是朝右转。然后我们不断审查这个队列,每次选择两个面对面的相邻的人,将他们从队列中取出。例如(> 表示向右,>><<>><<><><><<<> 的消除过程为,>><><<<> 到 >><<<> 到 ><<> 到 <>(每次去除一对)...
阅读(214) 评论(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] 这让我们很不好搞,但是我们可以容斥,枚举若干个,然后要求...
阅读(99) 评论(0)

流浪

题目描述DP考虑每个位置的贡献。 枚举一个位置,然后做dp,我们需要处理从(0,0)走k步到这个位置的方案数(中途不到达这个位置),以及从这个位置开始走k步到某个位置的方案数(中途不到达这个位置),以及从这个位置开始走k步中途不到达自己的方案数。 然后再做dp,从(0,0)走j步到达这个位置且中间恰好经过它k次的方案数。#pragma GCC optimize (2) #include<cstd...
阅读(124) 评论(0)
103条 共7页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:250677次
    • 积分:10085
    • 等级:
    • 排名:第1807名
    • 原创:743篇
    • 转载:4篇
    • 译文:0篇
    • 评论:187条
    最新评论
    文章分类