100+100+100=300。最后十分钟极限翻盘。

树链剖分

给一棵以1为根的有根树,开始只有1有标记.

每次操作可以给某个点打上标记,或者询问从某个点开始向上跳,遇到的第一个有标记的点.

对于 100% 的数据, n ≤ 106, m ≤ 5 × 106

题解

若把查询看成找树根, 发现打标记的操作相当于断边。

那么倒着做就相当于加边了。于是用并查集维护即可。

注意一些特殊情况:给1打标记,重复打标记。

天气之子

有 n 个人依次进入观影厅, 观看 Weathering with You .

观影厅只有一排座位, 第 1 个人进入时, 会选择第 1 个座位坐下.

由于观影厅空调坏掉了, 十分炎热, 之后的每个人进入时, 他会选择一个离最近的已经坐下的人尽可能远的空位.

如果有多个空位使得离最近的人同样远, 则他会从其中随机选取一个.

若有两个人选择的位置相邻, 他们就会不满意.

为了让所有人都满意, 观影厅至少需要有几个座位呢?

对于 100% 的数据, n ≤ 101000.

题解

对每个座位数能够容纳的人数进行打表可以发现,容纳人数是递增的。有个特殊的人数数列

\[A=\{2,3,5,9,17,33,\dots,2^{n-1}+1\}
\]

对于每个人数 \(a_i\),都对应了一段的座位数 \([n+n-1,n+2(n-1)]\)。这一段座位数能够容纳的人数都是 \(a_i\),并且两两间隔从 \(1\) 逐渐增大到 \(2\)。而对于非 \(a_i\) 数列中的人数,只有一个座位数的容纳人数与之相等。

于是用高精度算一下大于等于 \(n\) 的最小的 \(a_i\),然后简单计算即可。

打表程序

co int N=10000+10;
int v[N],le[N],ri[N];
int f[N];
int main(){
cout<<1<<" "<<1<<endl<<2<<" "<<1<<endl;
for(int n=3;n<=1000;++n){
fill(v+1,v+n+1,0),v[1]=v[n]=1;
int ans=2;
while(1){
for(int i=1;i<=n;++i) le[i]=v[i]?i:le[i-1];
for(int i=n;i>=1;--i) ri[i]=v[i]?i:ri[i+1];
int len=1,pos;
for(int i=1;i<=n;++i)
if(min(i-le[i],ri[i]-i)>len) len=min(i-le[i],ri[i]-i),pos=i;
if(len==1) break;
v[pos]=1,++ans;
}
cout<<n<<" "<<ans<<endl;
}
return 0;
}

AC 程序

#include<bits/stdc++.h>
using namespace std;
template<class T> T read(){
T x=0,w=1;char c=getchar();
for(;!isdigit(c);c=getchar())if(c=='-') w=-w;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*w;
}
template<class T> T read(T&x){
return x=read<T>();
}
#define co const
#define il inline
typedef long long LL; co int N=113,mod=1000000000;
co int P10[10]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
struct node{
int n,v[N];
// 123456789123456789
void input(){
static char s[1001];
scanf("%s",s);int len=strlen(s);
reverse(s,s+len);
n=(len-1)/9;
for(int i=0;i<len;++i) v[i/9]+=P10[i%9]*(s[i]-'0');
}
void output(){
printf("%d",v[n]);
for(int i=n-1;i>=0;--i) printf("%09d",v[i]);
}
node operator+(int x){ // x=1
node c=*this;
c.v[0]+=x;
return c;
}
node operator-(int x){ // x=1
node c=*this;
c.v[0]-=x;
for(int i=0;i<=c.n;++i){
if(c.v[i]<0) c.v[i]+=mod,--c.v[i+1];
else break;
}
while(c.n&&!c.v[c.n]) --c.n;
return c;
}
node operator-(co node&b){ // *this>=b
node c=*this;
for(int i=0;i<=c.n;++i){
c.v[i]-=b.v[i];
if(c.v[i]<0) c.v[i]+=mod,--c.v[i+1];
}
while(c.n&&!c.v[c.n]) --c.n;
return c;
}
node&operator*=(int x){ // x=2
for(int i=0;i<=n;++i) v[i]*=x;
for(int i=0;i<=n;++i) v[i+1]+=v[i]/mod,v[i]%=mod;
if(v[n+1]) ++n;
return *this;
}
bool operator<(node&b){
if(n!=b.n) return n<b.n;
for(int i=n;i>=0;--i)
if(v[i]!=b.v[i]) return v[i]<b.v[i];
return 0;
}
}n,a; int main(){
freopen("tenki.in","r",stdin),freopen("tenki.out","w",stdout);
n.input();
if(n.n==0&&n.v[0]==1) {puts("1");return 0;}
a.v[a.n=0]=1;
while(a+1<n) a*=2;
a=a+1;
node b=a-n;
a*=2,a=a-1,a=a-b;
a.output();
return 0;
}

层层染君色

给定一个正整数 k , 以及一棵 n 个节点的以 1 为根的有根树, 边有长度.

记 LCA(a, b) 表示 a 与 b 在树上的最近公共祖先, dist(a) 表示树根到 a 的距离.

每个节点可以是黑色或白色, 初始时每个节点的颜色为白色.

进行 m 次操作, 每次操作是以下两种形式之一:

修改操作: 给出一个修改节点 x , 将节点 x 染上黑色. 不保证 x 在染色前为白色.

询问操作: 给出一个询问节点 x , 记所有黑点形成的集合为 S , 求出下面式子的值:

y∈S F(dist(LCA(x, y)))

其中函数 F 定义为,

F(x) = ∑i=1~Xik

由于答案可能很大, 只需要输出答案对 P = 998244353 取模的结果.

对于 100% 的数据, 1 ≤ n ≤ 105, 1 ≤ k < P, 0 ≤ d ≤ 107, 且保证 ∀x ∈ [1, n], dist(x) ≤ 107

题解

那个 F 函数只能用线性筛预处理。

观察到询问操作只与自己到根这条链有关,那么树上统计树剖即可。注意为了在父亲处去掉自己的贡献,需要将权值设为 F(dist(x))-F(dist(fax))。

read(K);
p[1]=1,F[1]=1;
for(int i=2;i<M;++i){
if(!p[i]) p[++cnt]=i,F[i]=fpow(i,K);
for(int j=1;j<=cnt&&i*p[j]<M;++j){
p[i*p[j]]=1,F[i*p[j]]=mul(F[i],F[p[j]]);
if(i%p[j]==0) break;
}
}
for(int i=2;i<M;++i) F[i]=add(F[i-1],F[i]);

test20190904 JKlover的更多相关文章

  1. test20190903 JKlover

    100+65+100=265,T2就差了一点. 乌合之众 给出一个 n × n 的, 元素为自然数的矩阵.这个矩阵有许许多多个子矩阵, 定义它的所有子矩阵形成的集合为 S . 对于一个矩阵 k , 定 ...

  2. test20190904

  3. Codeforces1113F. Sasha and Interesting Fact from Graph Theory(组合数学 计数 广义Cayley定理)

    题目链接:传送门 思路: 计数.树的结构和边权的计数可以分开讨论. ①假设从a到b的路径上有e条边,那么路径上就有e-1个点.构造这条路径上的点有$A_{n-2}^{e-1}$种方案: ②这条路径的权 ...

  4. LG4455 【[CQOI2018]社交网络】

    分析 这题我们先转化为图论模型,发现求的其实就是有向图中以1为根的生成树数量.而关于这一问题存在O(3^n * n^2)的算法,一看数据n=250,发现不行.于是需要更高效的算法--Matrix-Tr ...

  5. POJ3764,BZOJ1954 The xor-longest Path

    题意 In an edge-weighted tree, the xor-length of a path p is defined as the xor sum of the weights of ...

  6. LOJ10050 The XOR Largest Pair

    题意 在给定的 \(N\) 个整数 \(A_1,A_2,-,A_N\) 中选出两个进行异或运算,得到的结果最大是多少? 对于 \(100\%\) 的数据,\(1\le N\le 10^5, 0\le ...

  7. LOJ10042 收集雪花

    题意 不同的雪花往往有不同的形状.在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们.一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状.在收集的过程中,同学们不希望有重 ...

  8. LOJ2823 「BalticOI 2014 Day 1」三个朋友

    题意 给定一个字符串 S,先将字符串 S 复制一次(变成双倍快乐),得到字符串 T,然后在 T 中插入一个字符,得到字符串 U. 给出字符串 U,重新构造出字符串 S. 所有字符串只包含大写英文字母. ...

  9. LOJ10034 图书管理

    题意 图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入.为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统. 该系统需要支 ...

随机推荐

  1. python数据分析2之numpy

    源代码 # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. " ...

  2. 研发的困境----DEVOPS

    1.研发的困境 互联网的环境 互联网这个环境比较特别,包括现在不只是互联网,就算是被互联网赋能的这些“互联网+”的企业也在改变,用户在发生变化,用户构成的群体在发生变化,群体造成场景的变化,场景营造新 ...

  3. POJ 3624 Charm Bracelet(01背包模板题)

    题目链接 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 52318   Accepted: 21912 Descriptio ...

  4. python定时任务APScheduler

    APScheduler定时任务 APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令.同时,它还支持异步执行.后台执行调度任务. 一.基本 ...

  5. C++生成和解析XML文件

    1.xml 指可扩展标记语言(EXtensible Markup Language) 2.xml 是一种标记语言,类似html 3.xml 的设计宗旨是传输数据,而非显示数据 4.xml 标签没有被预 ...

  6. 如何修改通过Anaconda安装的jupyter notebook的工作目录

    通过Anaconda安装jupyter notebook,对新手来说是一个非常明智的选择,可以避免很多不必要的麻烦! jupyter notbook默认情况下的工作目录是c:\user\...,接下来 ...

  7. AVR单片机教程——EasyElectronics Library v1.3手册

    bit.h delay.h pin.h wave.h pwm.h tone.h adc.h button.h switch.h rotary.h pot.h ldr.h led.h rgbw.h se ...

  8. 生意bisynes商业

    1.Of, to, pertaining to or utilized for purposes of conducting trade, commerce, governance, advocacy ...

  9. Golang ---json解析

    golang官方为我们提供了标准的json解析库–encoding/json,大部分情况下,使用它已经够用了.不过这个解析包有个很大的问题–性能.它不够快,如果我们开发高性能.高并发的网络服务就无法满 ...

  10. Spring boot java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver

    Spring boot 2.0.3 RELEASE 配置报错 java.lang.NoClassDefFoundError: org/springframework/boot/bind/Relaxed ...