把信息存进去然后找就行。
枚举右上角,然后模拟判断即可。
二分这个 X X X ,然后判断即可。
典型的括号类的 d p dp dp 。 d p i , j dp_{i, j} dpi,j 表示前i个字符,左-右= j j j 的方案数,答案为 d p n , 0 dp_{n, 0} dpn,0。若si= ( ( ( 或者 ) ) ) 显然对于任意 d p i , j dp_{i, j} dpi,j 是固定的,故直接继承上一层即可。若为 ? ? ?,则分别加上是 ( ( ( 的方案和 ) ) ) 的方案即可。
用一个三维数组记录一下每个位置是哪个块存下标。相邻的两个位置显然满足其中一维的差为 1 1 1 且仅有一维。那么枚举 ( i , j , k ) (i, j, k) (i,j,k),对其相邻的块查看是否有块的存在并且不是他自己的块,如果是就把i的答案里记录一下,相邻的块的所属块也记录一下,用 s e t set set 搞就行。
贪心。设物品1,2,3的数量分别为 n 1 , n 2 , n 3 n1, n2, n3 n1,n2,n3 。那么枚举使用 0 n 3 0~n3 0 n3 个物品 3 3 3 的情况下的最大快乐值。贪心的选,那么显然就是在选 1 1 1的是后要取大的,23同理也是。用 n u m 1 , n u m 2 num1,num2 num1,num2 记录一下 12 12 12 的使用数量,如果当前的数量超标就抛弃一个小的。接下来不停的选物品 2 2 2,然后如果当前的这个物品 3 3 3 还可以继续开物品 2 2 2 就并且物品2还有没选的就不停的替换物品 1 1 1(如果比物品1大的话),最后把所有的情况取个 m a x max max 即可。
可以发现
(
i
,
j
,
k
)
(i, j, k)
(i,j,k) 的结构一定是如下的:
那么此时可以想到对于每一个 u ( 1 ≤ u ≤ n ) u(1 \leq u \leq n) u(1≤u≤n) 统计形式如上图的这样的三元对个数,加到 a n s ans ans 里即可。那么此时可以想到一个类似与 d p dp dp 的思路来处理这个东西。 t 1 , t 2 , t 3 t1, t2, t3 t1,t2,t3分别表示在u的子树中的满足要求的 1 , 2 , 3 1,2,3 1,2,3 元对的个数。遍历的 u u u 的子节点 v v v ,如果 u u u 的辈分高于 v v v,那么显然可选的点数就是 v v v 的子树大小,否则为 n − u n - u n−u 的子树大小,设其为 k k k。 t 3 t3 t3显然是在 t 2 t2 t2 的基础上选一个,即 t 2 × k t2 \times k t2×k。 t 2 t2 t2 是在 t 1 t1 t1 的基础上选一个,即 t 1 × k t1 \times k t1×k, t 1 t1 t1 就加上可选的 k k k 个就行了,把统计完的 t 3 t3 t3 加起来就行了。
模拟。
类似 f l o y d floyd floyd,若 i > j i > j i>j 并且 j > k j > k j>k 得出 i > k i>k i>k,最后对于 i i i 判断即可。
求一下平均值,然后对于余数部分就把后面的减掉,最后加上绝对值之和/2就行。
没有看到不能重复。。。。询问 [ 1 , k + 1 ] [1,k+1] [1,k+1] 去掉 [ 1 , k ] [1,k] [1,k] 后的 k k k 个数,得到k组关系,继续询问 [ 1 , k ] , [ 3 , k + 2 ] , [ 4 , k + 3 ] . . . . . [1,k],[3,k+2],[4,k+3]..... [1,k],[3,k+2],[4,k+3].....得到 n − k n-k n−k 组关系,通过这些关系就可以推值了,(这里的关系指值相不相等)
首先比较明显的是如果有两个非1数挨在一起就会-1。对于有解,因为i作用于i-1,所以考虑倒着统计。记当前的答案为ans,那么显然对于i(1<=i 对于每一个字符判断即可 首先找到他在哪个月,然后算天数就行 排个序最大的一定取,然后枚举另一个即可 有点没看懂题qwq,但感觉就是模拟,略了 感觉很显然的图论,对于一个书就指向所有他要看的,对于一条路径显然就是先看最下面的然后依次往上,所以从
1
1
1 开始往下
d
f
s
dfs
dfs 就行了,但是要先
d
f
s
dfs
dfs 子节点,因为要先处理要看的。 赛时正解想到了,但是细节没处理好挂了了。首先观察到性质:因为2c的增长非常快,可以估计大概当c>30的时候2c已经太大了不可能跳c个成为最优解,所以只需要dp那些c<=30的情况即可。设dp(i, c)表示前i个,跳了c个的最短距离(不包含2^c,赛时这个一起算就挂了),那么我们考虑是从哪个点走过来的设他为k,此时他们之间的点显然都跳了但是我们知道这个数<=30,所以k的取值最多30,所以直接考虑转移柿子,显然就是dp_{k, c-(i-k-1)}+dis(k,i),然后取个min就没了。最后答案就是min(dp_{n,c} + 2^c) 存个表直接找就行。 枚举
j
j
j 即可
d
f
s
dfs
dfs 读法,答案是不失望的读法数
/
9
!
/ \ 9!
/ 9! 二分答案裸题,
c
h
e
c
k
check
check 就对于每个单词看看要不要换行并更新一下即可,最后判断行数
<
=
m
<=m
<=m 即可 显然
l
c
m
(
p
1
,
p
2
,
.
.
.
p
n
−
1
)
lcm(p_1,p_2,...p_{n-1})
lcm(p1,p2,...pn−1) 是个循环,那么只需要处理
0
l
c
m
(
p
1
,
p
2
,
.
.
.
.
,
p
n
−
1
)
−
1
0~lcm(p_1,p_2,....,p_{n-1})-1
0 lcm(p1,p2,....,pn−1)−1 的答案即可,最后对于每个查询,整的部分直接算就行,零的前面已经预处理过了 显然当
n
n
n 有大于
1
1
1 个质因子的时候
Y
e
s
Yes
Yes,脑抽挂了 4 发,555 首先你排完序以后一定不变或更劣,既然字典序最大,那么就让第一个改变的数的位置尽量靠后。然后有初始最优区间
[
n
−
k
+
1
,
k
]
[n-k+1, k]
[n−k+1,k],考虑看看能不能更优秀,设
n
o
w
now
now 为当前的尝试的区间的开头,那么如果
p
n
o
w
−
1
<
p
n
o
w
p_{now-1} < p_{now}
pnow−1<pnow 那么
n
o
w
now
now 变成
n
o
w
−
1
now-1
now−1 一定不劣,不停的移知道再移动会变劣为止,然后直接操作即可。 暴力算一算即可。 直接找吧,取个max。 圆环,所以把每个都复制3遍,然后枚举最后数字相同且位置不同的那三个,设他们的下标为
i
,
j
,
k
i, j, k
i,j,k,则最后的时间为
m
a
x
(
i
,
j
,
k
)
max(i ,j, k)
max(i,j,k),对这个东西取个
m
i
n
min
min。 明显的图论,
A
i
=
>
B
i
A_i => B_i
Ai=>Bi,走过去就两个坐标分别加上边权的
X
i
,
Y
i
X_i, Y_i
Xi,Yi 即可,刷一遍
d
i
s
dis
dis 就行。 首先:在队里的人里面编号最小的显然一定排在最前面。然后开两个优先队列
q
1
,
q
2
q1, q2
q1,q2,
q
1
q1
q1 存不在队里的人的回归时间和编号,
q
2
q2
q2 存在队里的人的编号。每次显然就是
q
2.
t
o
p
(
)
q2.top()
q2.top() 来接,然后踢到
q
1
q1
q1 里存。这里
q
1
q1
q1 就按回来的时间从小到大排,这样具有单调性可以优化不少时间,注意在前面要把归队的全部从
q
1
q1
q1 挪到
q
2
q2
q2 里。 设
f
i
,
j
,
k
f_{i, j, k}
fi,j,k 表示到了
X
i
X_i
Xi,正的那趟到这里有
j
j
j 的油, 反的那趟到这里至少有
k
k
k 的油的最小花费,那么考虑转移,主导转移好些很多。设
d
i
s
dis
dis 为 从
i
i
i 到
i
+
1
i+1
i+1 的耗油数,那么对于
X
i
+
1
X_{i+1}
Xi+1 可以: 最后一段路单独领出来用
d
p
dp
dp 处理一下就好了捏: 对于
d
p
n
−
1
,
j
,
k
dp_{n-1, j, k}
dpn−1,j,k ,现在要从
n
−
1
n-1
n−1 走到
n
n
n,那么就是看看能不能
n
−
1
=
>
n
=
>
n
n-1 => n => n
n−1=>n=>n 以后油还不小于
k
k
k,设
d
i
s
dis
dis 为
n
n
n 和
n
−
1
n-1
n−1 的距离,然后这个就判一下
k
≤
j
−
2
∗
d
i
s
k \leq j-2*dis
k≤j−2∗dis,如果满足就可以,取个
m
i
n
min
min。 直接模拟判即可。 就从0~100分别
c
h
e
c
k
check
check 一下就好了。 直接暴力
d
f
s
dfs
dfs 出来所有满足要求的数,然后打表输出即可。 二分板子。把
b
b
b 排个序,对于每一个
i
i
i 来算他和所有
b
j
b_j
bj 的答案,设最后一个满足
a
i
+
b
j
≤
p
a_i + b_j \leq p
ai+bj≤p 的
j
j
j 为
l
l
l,那么显然
a
i
a_i
ai 就和
[
1
,
l
]
[1,l]
[1,l] 的和都是不被
P
P
P 影响的,后面的都是
P
P
P,前面的用前缀和算一下,后面直接算就行。 分为在
x
x
x 子树内的答案和在子树外的答案。设
f
(
n
,
x
,
k
)
f(n, x, k)
f(n,x,k) 表示
n
n
n 个点
x
x
x 到其子树内距离为
k
k
k 的点有多少个。子树内的就是
f
(
n
,
x
,
k
)
f(n, x, k)
f(n,x,k),然后枚举一下
x
−
>
u
−
>
y
x -> u -> y
x−>u−>y 这个
u
u
u,显然最多
l
o
g
log
log,
x
−
>
u
x->u
x−>u 是固定的,
u
−
>
y
u->y
u−>y 的
y
y
y 的个数就是
f
(
n
,
u
,
k
−
d
i
s
(
u
,
x
)
)
f(n, u, k-dis(u, x))
f(n,u,k−dis(u,x)). 回退背包板子,没啥好讲的。就 KEYENCE Programming Contest 2023 Summer(AtCoder Beginner Contest 315)
A
B
C
D
E
F
AtCoder Beginner Contest 319
A
B
C
D
E
ARC165
A
B
ABC320
A
B
C
D
E
F
ABC321
A
B
C
D
E
F
+
的时候把所有的方案数加上
f
j
−
x
f_{j-x}
fj−x,-
的时候就做逆操作就行了捏。