首页 > TAG信息列表 > Zjoi2012

bzoj#2656. [Zjoi2012]数列(sequence)

https://darkbzoj.cc/problem/2656 https://www.luogu.com.cn/problem/P2609 \[A[i]=A[\frac{i}{2}],2\mid i \]\[A[i]=A[\frac{i}{2}]+A[\frac{i}{2}+1],2 \not\mid i \]考虑递归转递推,这种一定能转化为 \(k_1A_0+k_2A_1\) 的形式。 考虑当前有 \(ans=k_1A_i+k_2A_{i+1}\) 若 \(i

支配(灭绝)树学习笔记 暨 P2597 [ZJOI2012]灾难 题解

支配树:满足树上任何一点的所有祖先都是他的支配点的树. 支配点:在图中指定一个起点s,若删去一个点t,s到w就没有路径,则t为w的支配点. 一棵树本身就是支配树 对于DAG: 在原图上拓扑排序. 按照拓扑序建支配树,方法是求出所有原图上有边指向该节点的点(即反图上该节点指向的点)

luogu P2597 [ZJOI2012]灾难

题面传送门 这道题形象地给我们展示了DAG下支配树地求法。 我们建立一棵树,每个点\(u\)的父亲\(fa_u\)表示如果\(fa_u\)灭绝了,\(u\)一定灭绝。容易发现答案就是子树节点个数-1 考虑这个东西怎么求。 我们从入度为\(0\)的点出发,对于一个点,它的父亲是在DAG上所有儿子在支配树上lca,因

【洛谷2612】[ZJOI2012] 波浪(DP+卡精度)

点此看题面 定义一个序列的波动值为每相邻两项差的绝对值之和。 求一个长度为\(n\)的序列波动值大于等于\(m\)的概率,保留\(d\)位小数。 \(n\le100,k\le30\) 动态规划 绝对值一看就非常麻烦,所以套路地想到从小到大枚举每一个数把它插入序列中,这样就能保证每次插入的数一定大于序

luogu P2609 [ZJOI2012]数列

题面传送门 发现这道题主要不是思维难,而是高精难打。还难卡常 \(2i\)的显然很好处理,考虑\(2i+1\)怎么做 首先设两个分支为\(2k-1,2k\),那么会衍生出三个分支\(k-1,k,k\)容易发现仍然只有两个本质不同。 那么只要暴力递归下去判个重即可。 但是问题是这样\(O(Tlog^3n)\)过不去。 考

【题解】P2610 [ZJOI2012]旅游

link 题意 T国的国土可以用一个凸N边形来表示,包含 \(N-2\) 个城市,每个城市都是顶点为 \(N\) 边形顶点的三角形,两人的旅游路线可以看做是连接N个顶点中不相邻两点的线段。问一路能经过最多多少城市。 一个城市被当做经过当且仅当其与线路有至少两个公共点。 思路 很巧妙的一道题。(

Luogu P2612 [ZJOI2012]波浪

题目 我们考虑从\(1\)到\(n\)把每个数放到序列里面去,以消掉绝对值。 在最后的序列中,如果\(i\)的某一边是序列的边界,那么\(i\)会产生\(0\)的贡献。如果\(i\)的某一边是一个比\(i\)小的数,那么\(i\)会产生\(i\)的贡献。如果\(i\)的某一边是一个比\(i\)大的数,那么\(i\)会产生\(-i\)

luogu P2597 [ZJOI2012]灾难

这道题好仙啊,不过暴力都能拿70pts。 考虑每个点的贡献,会发现,它只对它所有食物的LCA及LCA到根的路径上的节点有灾难值为一的贡献。 然后就是建树啦,我们必须保证当前节点的所有食物都已建好树,所以top_sort,在更新入度到为零时,就求出它所有食物的LCA, 然后将LCA做为此节点的父节点,并令s

[ZJOI2012]灾难

Description [ZJOI2012]灾难 Solution 我们可 反向建图 Code #include<iostream> #include<cstdio> #include<queue> using namespace std; #define MAXN 1000010 struct rec { int nxt, ver; } t[MAXN]; int n, cnt, s; int head[MAXN], in[MAXN], size[MAXN],

BZOJ 2815: [ZJOI2012]灾难 拓扑排序+倍增LCA

这种问题的转化方式挺巧妙的.  Code:  #include <bits/stdc++.h> #define N 100000 #define M 1000000 #define setIO(s) freopen(s".in","r",stdin) using namespace std; queue<int>q; vector<int>G,V[N]; int n

luoguP2173 [ZJOI2012]网络 LCT

链接 luogu 思路 颜色很少,开10个lct分别维护 if (Hash.count(make_pair(u, v)) && Hash[make_pair(u, v)] == col) {puts("Success.");continue;} 这一行的代码调了半天。 代码 #include <bits/stdc++.h> #define ls c[x][0] #define rs c[x][1] using namespace std; const int

【ZJOI2012】灾难

【ZJOI2012】灾难   阿米巴是小强的好朋友。   阿米巴和小强在草原上捉蚂蚱。小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难。   学过生物的阿米巴告诉小强,草原是一个极其稳定的生态系统。如果蚂蚱灭绝了,

P2597 [ZJOI2012]灾难(lca)

题目描述 阿米巴是小强的好朋友。 阿米巴和小强在草原上捉蚂蚱。小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难。 学过生物的阿米巴告诉小强,草原是一个极其稳定的生态系统。如果蚂蚱灭绝了,小鸟照样可以吃别的虫

[ZJOI2012]网络 LCT

lct忘了。。重新学习。 链接:https://www.luogu.org/problemnew/show/P2173 每个颜色开个lct即可。 代码: #include<bits/stdc++.h> using namespace std; const int N=1e4+100; const int C=12; int a[N]; map<int,int>hav[N]; int n,m,c,k; struct LCT{ int ch[N][2],fa[N],

P2610 [ZJOI2012]旅游 树的直径

这个题就是建图不太好建,但是我们一想,三角形貌似只能两两挨着,最后会变成一个二叉树,所以问题就变成求树的直径。建图用pair套map超级简单。 题干: 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~经过一番抉择,两人决定将T国作为他们的目的地。T国的国