当前搜索:
题目大意现在平面上有n个点,已知有一个常数D。
任意两点的距离要么<=D,要么>=1.99D。
请问有多少点集的子集,满足任意两点距离>=1.99D。n<=1000。解法我们肯定是把距离<=D的点对连边。然后相当于独立集计数。
可以考虑把等价点缩在一起:
两个...
题目大意两颗树,有根带标号,儿子有顺序。
你每次操作可以选择一颗树,然后执行二选一:
1、删除一个叶子。
2、将某个节点相邻两个儿子合并,前面那个节点的儿子排在前面,后面那个节点的儿子排在后面。
问至少操作多少次能使得两棵树同构。做法将树用深度序表示。
两棵树同构当且仅当深度序同构。
...
题目大意有n个人,每个人有一个数字xix_i。
现在你可以把某些人的xix_i加一。
问一共能造成多少本质不同的排名?
两个人中数字大的排名靠前,数字一样编号小的靠前。做法双关键字让我们非常难受。
考虑设一个大数w,令ri=−xi∗w+ir_i=-x_i*w+i,然后令li=ri−wl_i...
前言感觉这题挺棒棒的。题目描述小c有n个岛屿。她为了管理岛上的人,决定让这些岛屿连通。
每个岛屿i有一个概率值pi,和一个友好列表Ai。
小c首先来到了1号岛屿,她会依次执行下面操作:
1、设现在在岛屿x,有px的概率产生一条无向边连接两个随机岛屿,这两个岛屿不会相同,也不会已经有边相连。(...
题目大意求满足下列条件的n个点的无向图数量:
它没有重边自环,所有边的权均为1
从1号点到任意点的最短路都是唯一的.设li是从1号点出发到达i号点的最短路长度,你虽然不知道li,但知道li关于i单调不减。
你知道第i个点连了di条边,并发现它们都要么为2要么为3
由于答案可能很大,模10^...
题目大意求fib(n) mod 10^9+9=k的最小n。做法我们知道fib(n)=1√5∗[(1+√52)n−(1−√52)n]fib(n)=\frac{1}{√5}*[(\frac{1+√5}{2})^n-(\frac{1-√5}{2})^n]
不妨设两个特征根分别为a和b,注意ab=−1a...
题目大意一个01字符串。
m次操作,每次将[li,ri]随意排列。
保证li单调不降,问能形成多少不同字符串。简单DP只需对每个左端点求出最远右端点。
然后设f[i,j]表示1~i-1已经确定了,可以任意放置的1还有j个的方案数,转移很简单。#include<cstdio>
#...
题目大意有多少字符集为k的长度为n的字符串经过旋转可以变成回文串。做法设f[i]表示周期为i的回文串数量。
有f[i]=k(i+1)/2−∑j|i且j<if[j]f[i]=k^{(i+1)/2}-\sum_{j|i且j<i}f[j]
显然border为i的串能旋转出i个字符串。
...
题目大意有一些物品,每个买了有代价。
如果存在一个极大区间[l,r]内的物品都被买了,这个区间长度为k,可以获得的收益是k*(k+1)/2。
现在若干次询问,每次问假如修改了某个物品的价格,最大收益是多少?DP先处理出L和R分别表示前缀dp值和后缀dp值,显然dp可以用决策单调性优化。
然后...
题目大意一个表达式有+有-,添加一些括号最大化表达式的值。DP首先只会在-号前放左括号。
简单的想法是设f[i,j]表示做完前i个数字,目前还有j个左括号没有匹配右括号。
然后很难发现,j<=2才有意义。#include<cstdio>
#include<algorit...
题目大意将1-n顺序加入双端队列(每次可加头可加尾),再删除(每次可删头可删尾),求有多少种删除序列,使得1是第k个被删的。做法考虑什么样的删除序列存在对应的加入序列且合法。
1、第k个是1。
2、前k个元素能拆分成两个单调下降序列。
3、第k个后的元素每个位置都大于等于后缀最大值或小于等于...
题目大意不想说。DP容易发现如果一颗树左偏次数达不到k-1,就合法。
不妨考虑按dfs序dp:
设f[i,j]表示当前是第i个叶子,从该点往上到根有j-1条左向边。
转移很容易。
良心自选题!#include<cstdio>
#include<algorithm>
...
题目大意你有两个整数a和b。
现在n个操作,依次执行,每次给你xi,你选择一个整数y变成xi,代价为|xi-y|。
求做完所有操作的最小代价。做法设f[i]表示做完前i个操作,其中一个整数变成xix_i,另一个变成xi−1x_{i-1}的最小代价。
第一次操作枚举是哪个变成x[1]做两次dp...
题目大意有多少三色序列,满足m个条件,每个条件形如区间颜色种类数为多少。做法设dp,f[i,j,k]表示1~i填完了,除了第i个位置填的颜色,其余两种颜色最后一次填在j和k,然后每次处理右端点挂在i的条件,把不符合条件的状态赋值为0。#include<cstdio>
#include&...
前言怎么这题1000分啊。题目大意一个无穷序列,要求所有大于n的项都和第n项相同。
如果一个位置值为k,接下来k个位置必须相同。
每个位置填1~n的数,求方案数。做法显然相邻两个位置>1后面就全tm一样了。
然后就很tm好做。#include<cstdio>
#includ...
前言本题的关键是想到让出口和矩形动,而不是机器人动,只要记录出口的位移矩形,便可以知道哪个区域的机器人已经飞出去了。题目大意一个网格图,有若干机器人,还有一个出口。
操作一系列指令让机器人上下左右,走出矩形就死,进入出口则得救。
最多救多少机器人?DP不妨认为矩形和出口会动。
我们设f[u,...
前言小清新计数题。题意n种颜色每种颜色有k个球(这n种颜色不含白色),排成一行,把每种颜色第一个球涂成白色。
问颜色序列方案数。DP要求任意后缀0的个数不比颜色种类数多。
不妨设dp表示f[i,j]已经用了i种颜色,放了i-j个0。
每次可以在最前面放0。
也可以新加一种颜色,为了不计重最...
前言需要发现性质的dp。
重点在于发现性质。题意请构造若干k叉树,使得每颗均有n+m个叶子,有n个叶子点权为0,m个叶子点权为1,对于非叶子点权为儿子点权的平均数。
问最多构造多少k叉树,使得任意两颗根节点点权不同?DP令n个叶子的深度为x1~xn,同理m个叶子的深度为y1~ym。
发现根节...
前言DP题,还可以,不是很难。题目大意把一堆互不相同的数分成两个集合X和Y,其中一个集合X任意两数之差不小于A,另一集合Y任意两数之差不小于B。
问方案数,集合可以为空。DP把这些数排序。
接着添加第0个数无穷小以及第n+1个数无穷大。
我们假设A>=B。
设f[i]表示分配好了前i...
前言计数水平不行了。
居然不会n^2去dp这个模型。题意太麻烦了看网站。DP假设有x个公用1和y个非公用1。
用图论来理解。
最后一定形成y条链,若干个环。
其中链中的边在序列中要按顺序,环则随意。
环可以先不管。
考虑dp[i,j]表示目前做出来两个i+j的序列,有i个公用1和j个非...