首页 > TAG信息列表 > POI2007
P3452 [POI2007]BIU-Offices & ZLOJ 练习56 D
written on 2022-08-01 第一道补上来的链表题,纪念一下。 链表一般在需要高效地删除或添加元素时使用。由于修改操作是 \(O(1)\) 的,正是由于链表这一区别与普通数组的最大优点,一般在要删点的题目中偶有遇到。 具体到这题,可以先尝试暴力的思路。考虑建出原图的补图,用并查集维护集合[POI2007]ZAP-Queries
洛谷题面 题目大意 给定 \(a,b,d\),求 \[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[\gcd(i,j)=d] \]题目分析 令 \(a\le b\)。 显然先把 \(d\) 消掉(令 \(a'=\left\lfloor\dfrac{a}{d}\right\rfloor,b'=\left\lfloor\dfrac{b}{d}\right\rfloor\)): \[\sum\limitP3455 [POI2007]ZAP-Queris(莫比乌斯反演)
题意: 给出\(a,b,d\),求满足\(1 \leq x \leq a,1 \leq y \leq b\),且\(gcd(x,y)=d\)的二元组\((x,y)\)的数量。 \(1 \leq n \leq 5 \times 10^4\) \(1 \leq d \leq a,b \leq 5 \times 10^4\) 题解: 写出式子: \(\sum_{i=1}^a\sum_{j=1}^b[gcd(i,j)=k]\) 可以把\(d\)提取出来,变「POI2007」四进制天平 Quaternary Balance 题解
「POI2007」四进制天平 Quaternary Balance 题解 \(n\) 可以到 \(10^{1000}\) ,所以考虑数位 \(dp\) 当然这只是个直觉,具体怎么做呢? 砝码的质量都是 \(4\) 的幂,称出质量为 \(m\) 的物体,可以看成是一个 \(4\) 进制大整数的逐位确定,放左盘可理解为加法(该位为正),放右盘可理解为减法(该位luogu P3452 [POI2007]BIU-Offices
两种写法,主要是复杂度的证明上比较有趣 1. 并查集+BFS 对于每个点,最多只会进入队列一次,这部分的复杂度是O(n) 每个点最多会在 for (int i = find(1); i <= n; i = find(i + 1))这段话中被访问 \(edge[i].size() + 1\) 次,因为如果某个点和它没有边,这个点就会和后面的合并,再也不会在【洛谷6564】[POI2007] 堆积木KLO(树状数组优化DP)
点此看题面 给定一个长度为\(n\)的序列,你可以删去其中若干元素,要求最大化\(\sum_{i=1}^{n'}[a_i=i]\)。 \(n\le10^5,a_i\le10^6\) 树状数组优化\(DP\) 发现每个位置\(i\)只有被弄到第\(a_i\)个位置才能产生贡献,也就是说需要满足在前\(i-1\)个元素中删去了恰好\(i-a_i\)个。 设\([POI2007]ZAP-Queries
嘟嘟嘟 挺好的题 \[\begin{align*} ans &= \sum_{i = 1} ^ {a} \sum_{j = 1} ^ {b} [gcd(i, j) = d] \\ &= \sum_{i = 1} ^ {\lfloor \frac{a}{d} \rfloor} \sum_{j = 1} ^ {\lfloor \frac{b}{d} \rfloor} [gcd(i, j) = 1] \\ \end{align*}\] 令\(n =[POI2007]MEG-Megalopolis
传送门:嘟嘟嘟 第一反应是树链剖分,但是太长懒得写,然后就想出了一个很不错的做法。 想一下,如果我们改一条边,那么影响的只有他的子树,只要先搞一个dfs序,为什么搞出这个呢?因为有一个性质:一个节点的子树在dfs序上是连续的,所以这道题就变成了一个单点查询,区间修改的线段树(树状数组)板子【Luogu P3455】 [POI2007]ZAP-Queries
题目链接: 题目 博客园 题目大意: 快速求: \[\sum_{i=1}^{n}\sum_{i=1}^{m}\left[\operatorname{gcd}(i,j)==d\right] \]正文: 将式子化简: \[\begin{aligned}\sum_{i=1}^{n}\sum_{i=1}^{m}\left[\operatorname{gcd}(i,j)==d\right] &= \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}洛谷 p3455 [POI2007]ZAP-Queries
题意: 给定$a, b, d$,求满足$1 \leq x \leq a , 1 \leq y \leq b$且$\gcd(x, y)=d$的二元组${x, y)$的数量 思路:$\sum_{x=1}^{n}\sum_{y=1}^{b}[\gcd(x, y)=d]$ 简化式子: $\sum_{x=1}^{\lfloor\frac{a}{d}\rfloor}\sum_{y=1}^{\lfloor\frac{b}{d}\rfloor}[\gcd(x, y)=1]$ 将$[\题解 P3455 【[POI2007]ZAP-Queries】
题目链接 Solution [POI2007]ZAP-Queries 题目大意:多组数据,每次给定\(a,b,d\),询问\(\sum_{i=1}^{a}\sum_{j=1}^{b}[gcd(i,j)=d]\) 莫比乌斯反演 解析: \[\begin{aligned}ans &= \sum_{i=1}^{a}\sum_{j=1}^{b}[gcd(i,j)=d] \\ &=\sum_{i=1}^{\lfloor \frac{a}{d} \rfloor}[POI2007]ZAP-Queries
前置知识:莫比乌斯函数性质一(不会请点) 进入正题: 题目大意: \(T\)组数据,每组给出\(a\),\(b\),\(d\) 求 \[ \sum_{i=1}^a \sum_{j=1}^b [\gcd(i,j)=d] \] 解析 这题并不难 先变化一波 \[ \sum_{i=1}^a \sum_{j=1}^b [\gcd(i,j)=d] = \sum_{i=1}^a \sum_{j=1}^b [\gcd(\frac{i}{d},\fra[POI2007]ZAP-Queries
[POI2007]ZAP-Queries 题目大意: 给出 \(a,b,d\),求满足 \(1 \leq x \leq a,1 \leq y \leq b\),且 \(\gcd(x,y)=d\) 的二元组 \((x,y)\) 的数量。 输入格式 输入第一行一个整数 \(n\),代表要回答的问题个数。 接下来 \(n\) 行,每行三个整数 \(a,b,d\) 输出格式 对于每组询问,输出一个整数【BZOJ1106】【POI2007】立方体大作战tet(贪心+树状数组/线段树优化区间和)
1106: [POI2007]立方体大作战tet Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1103 Solved: 802[Submit][Status][Discuss] Description 一个叫做立方体大作战的游戏风靡整个Byteotia。这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2[bzoj1103][POI2007]大都市meg
题目链接 这道题用来理解LCT还是蛮不错的,如果是笨重的LCT完全体就会在洛谷上卡常T掉第4组,但是这道题明显可以省略掉很多多余操作。 我们先看看如果按照正常的LCT,会有这样一些操作: inline void makeroot(register int x) { access(x); splay(x); pushr(x);}inline void split(5098: [BZOJ1098][POI2007]办公楼biu
5098: [BZOJ1098][POI2007]办公楼biu 没有数据结构就很棒 一个看上去非常玄学的代码 const int N=1e5+10,M=2e6+10; int n,m; int fa[N]; int Find(int x){ return fa[x]==x?x:fa[x]=Find(fa[x]); } vector <int> G[N]; typedef vector <int> ::iterator iter; void meBZOJ 1108: [POI2007]天然气管道Gaz 性质分析_小结论_巧妙
Code: #include<bits/stdc++.h>#define setIO(s) freopen(s".in","r",stdin) using namespace std; int main(){ // setIO("input"); int n; long long ans=0; scanf("%d",&n); for(int i=1;i<=n;++i) { i[POI2007]ZAP-Queries
[POI2007]ZAP-Queries 求n组\(\sum_{i=1}^a\sum_{j=1}^b(gcd(i,j)==d)\), 1≤n≤50 000,1≤d≤a,b≤50 000。 解 不难看出是约数组合计数问题,而解决该问题常用思路有容斥原理和Mobius反演。 法一:容斥原理 尽可能特殊化问题,令\(a/=d,b/=d\),原问题等价于在这个范围里寻找互质的数的对[2019.3.17]BZOJ1109 [POI2007]堆积木Klo
考虑暴力dp。 设\(dp_i\)表示前\(i\)个积木,保留积木\(i\)的最大答案。 那么有 \(dp_i=max(dp_j)+1(i>j,a_i>a_j,a_i-a_j\le i-j)\) 对\(j\)的限制条件里前2条显然,后一条是因为要使积木\(i\)和\(j\)之间有足够的积木使它们的相对位置正确。 由第三条可得\(i-a_i\ge j-a_j\) 那么就[luogu3455][POI2007]ZAP-Queries
题目描述 FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d。作为FGD的同学,FGD希望得到你的帮助。 分析 很明显的一道莫比乌斯反演,但是还没有写过学习笔记,之后一定补起来(flag)。 \[f(k)=\sum^a_{i=1}\sum^b_{j=1}[gcd(bzoj1109:[POI2007]堆积木Klo
传送门 自己想的方向一直是对的,但是一直没有完全正确 我一直没发现可以缩掉一维 原本列出的dp方程是这样的 \(f[i]=f[j]+1(j<i\&\&a[j]<a[i]\&\&j-a[j]<=i-a[i])\)(\(f[i]\)代表\(i\)移动到正确位置,前\(i\)个最多有多少个到正确位置) 看着就是lis,实际上想也可以想得到lis是最优的 然[POI2007]驾驶考试egz
传送门 有个非常显然的技巧,就是你可以反向建图,并且将图上下翻转,如果\(i\)能到其他所有道路,其他所有的道路也能到\(i\) 这有什么好处呢,这就可以使\(i\)可以非常方便的转移到\(i+1\) 我们设\(f[i]\)为\(i\)左边至少要建的公路数,然而\(f[i]=i-1-lis\) 所以只要求lis就行了,树状数组/二[POI2007]石头花园SKA
传送门 很显然的结论,\((x,y)\)与\((y,x)\)关于\(y=x\)对称 那么就可以知道矩形一定是在直线的一侧 有一些点可以不需要动,那么第二问分四种情况讨论即可 代码: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; void read(int &x) {