题目描述
小 L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战。
游戏中有一个叫做 “LCT” 的挑战,它的规则是这样子的:现在有一个 NN 个点的树(Tree),每条边有一个整数边权 vi" role="presentation">viviv_i,若 vi≥0" role="presentation">vi≥0vi≥0v_i \ge 0,表示走这条边会获得 vi" role="presentation">viviv_i的收益;若 vi&
Description Thousands of thousands years ago there was a small kingdom located in the middle of the Pacific Ocean. The territory of the kingdom consists two separated islands. Due to the impact of the ocean current, the shapes of both the islands became convex polygons. The king of the kingdom wante
Description The repetition number of a string is defined as the maximum number R such that the string can be partitioned into R same consecutive substrings. For example, the repetition number of "ababab" is 3 and "ababa" is 1. Given a string containing lowercase letters, you are
Problem Description
There is a function f(x),which is defined on the natural numbers set N,satisfies the following eqaution
N2−3N+2=∑d|Nf(d)
calulate ∑Ni=1f(i) mod 109+7.
Input
the first line contains a positive integer T,means the number of the test cases.
next T lines there is a number
原题地址 感觉还是很妙一个题,自己想了一会,看标签后茅塞顿开。发现这个题的操作一直在用数列已经有的部分去覆盖一部分。因为一直在用原来的,有点可持久化的意思。发现其实我只要维护一个数据结构,可以把原来的一段提取出来插入到一个位置,并且可以维护区间加区间和以及可以可持久化即可,这里的可持久化是为了不影响原来已有的部分,对于所有的修改都在新点上操作。这样的数据结构就只有可持久化平衡树了。非旋Treap的可持久化和线段树差不多,只要有修改的地方拉一个新点起来就行了。时间复杂度O(n log n),空间常数很大,注意不要爆空间。#include<cstdio>
#include<alg
题目地址:"噔"
题目给定的条件不太好求。
发现原题死了人之后概率的分母会变,十分不可做。
然后就有一步神转化了,我们将原题改为打死人之后这个人并不出局,而是被打上标记。如果开枪射中打标记的人,那么这一枪无效,重新射击。
这样我们发现,分母一定了,容易了许多。
整理一下,发现我们没有办法确切算出1" role="presentation" style="position: relative;">111在最后一个死的概率,但是我们可以确切算出至少有k" role="presentation" style="position: relative;">kkk个人死在1"
题目描述滑雪场坐落在FJ省西北部的若干座山上。 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向。 你的团队负责每周定时清理雪道。你们拥有一架直升飞机,每次飞行可以从总部带一个人降落到滑雪场的某个地点,然后再飞回总部。从降落的地点出发,这个人可以顺着斜坡向下滑行,并清理他所经过的雪道。 由于每次飞行的耗费是固定的,为了最小化耗费,你想知道如何用最少的飞行次数才能完成清理雪道的任务。 输入输出格式输入格式: 输入文件的第一行包含一个整数n (2 <= n <= 100) – 代表滑雪场的地点的数量。 接下来的n行,描述1
后缀数组模板题,直接看注释就好了 #include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
const int maxn = 1e5 + 5;
char s[maxn]; LL ans;
int SA[maxn], SA2[maxn], RK[maxn], tot[maxn], H[maxn];
//SA : 第一关键字排名为i的开头下标
//SA2 : 第二关键字排名为i的开头下标
//RK : 原字符串中下标为i后缀的
链接:戳轻点 >_<
神仙题啊!
还不自量力的想了半天。
看完题解发现自己更本没资格做这道题……
首先貌似有个没分的高斯消元?
嗯……全部都至少走一遍的期望根本不会算啊。
我们先来看一个很好理解的结论:
最值反演:
考虑任意集合S" role="presentation" style="position: relative;">SSS,元素i" role="presentation" style="position: relative;">iii有点权wi" role="presentation" style="position: r
题目地址:呀,戳轻点qwq
一开始自己就想错了,本来以为只要选择的点集定了,那么覆盖状态也就定了。
但是发现并不对,和点选择的顺序还有关。
……
我们去Orz" role="presentation" style="position: relative;">OrzOrzOrz题解吧。
发现自己仍然是没有完全理解增量的构造方式。
考虑到选择点的顺序其实是和答案有关的,我们考虑对整个操作序列增量的过程进行dp" role="presentation" style="position: relative;">dpdpdp。
设f(i,S)" role="presenta