首页 > TAG信息列表 > EZEC
P6825 「EZEC-4」求和
P6825 「EZEC-4」求和 求: \[\sum_{i=1}^{n}\sum_{j=1}^{n}\gcd(i,j)^{i+j} \]先化简原式,有: \[\begin{aligned} &\sum_{i=1}^{n}\sum_{j=1}^{n}\gcd(i,j)^{i+j}\\ &=\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}d^{i+j}[\gcd(i,j)=d]\\ &=\sum_{d=1}^{n题解 P6824 「EZEC-4」可乐
题意简述 Link 给定一个长度为 \(n\) 的序列 \(a\) 和一个整数 \(k\) ,你需要构造一个数字 \(x\) ,使得 \(\sum_\limits{i=1}^n [a_i\oplus x\leq k]\) 最大,你需要求出这个最大值。 \(1 \leq n,k,a_i \leq 10^6\)。 Solution 这里给出一个递归的写法。 建出包含序列中所有数字的 TriP7854-「EZEC-9」GCD Tree【构造】
正题 题目连接:https://www.luogu.com.cn/problem/P7854 题目大意 给出\(n\)数字的一个序列\(a\)。 现在要求构造一棵树,使得对于任意的\((x,y)\)都有 \[gcd(a_x,a_y)=a_{lca(x,y)} \]\(1\leq n\leq 10^5,1\leq a_i\leq 10^6\) 解题思路 考虑对于一个数字\(a_x\),我们枚举它的存在洛谷 P7718 -「EZEC-10」Equalization(差分转化+状压 dp)
洛谷题面传送门 一道挺有意思的题,现场切掉还是挺有成就感的。 首先看到区间操作我们可以想到差分转换,将区间操作转化为差分序列上的一个或两个单点操作,具体来说我们设 \(b_i=a_{i+1}-a_i\),那么对于一次形如 \(\forall i\in[l,r],a_i\leftarrow a_i+x\) 的操作三元组 \((l,r,x)\),我P7715 「EZEC-10」Shape 题解
题目传送 更好的阅读体验? 并没有用标签的做法,属于乱搞做法,复杂度比较依赖数据。 Solution \(O(n^5)\) 做法: 枚举 \(x_1,y_1,x_2,y_2\),然后 \(O(n)\)判断是否合法。 \(O(n^4)\) 做法: 可以维护一个前缀和 \(O(1)\) 判断两个点之间是否都是 \(0\)。 \(O(n^3)\) 做法: 预处理一个洛谷 T184172 「EZEC-10」打分
题目链接 可以采用一个贪心的思路 设裁判打的分分别为\(a_1,a_2,a_3,a_4,a_5\),从小到大排序,我们往上面加分 首先可以想到把尽可能多的\(a_i(i\leq 5)\)加到\(a_5\) 如果有多的再平均分给所有的\(a_i\) 但是加最小的\(a_1\)是没有意义的,最小的一定会被舍去 那就把\(a_2\)到\(a_5\)luogu P7597 「EZEC-8」猜树 加强版
题面传送门 很妙的一道题。 根号算法在这上面只有\(48\)分别想了。 因为随机化算法没有前途所以考虑随机。 容易发现如果我们知道了一个子树的节点,又知道它下一层点的子树,那么我们可以有一个树不询问而直接算出来。 这个子树随机即可,因为树剖的性质所以这个可以保证\(O(nlogn)\) cLuogu P7445「EZEC-7」线段树
Luogu P7445「EZEC-7」线段树 显然一个点是否被\(\text{push_down}\)仅取决于所有完全包含它的操作区间权值之和 那么可以考虑对于每个节点计算概率,然后累加 反向计算一个节点不被\(\text{push_down}\)的概率,即权值之和为\(0\) 每个节点有自己被覆盖的概率,而覆盖的次数决定了这个luogu P7287 「EZEC-5」魔法
题面传送门 挺好的一道题。 首先一个很明显的贪心:先加后乘,这样一定最大。 然后又注意到,在最大子段和为正时,第二个操作的使用次数不会超过\(logs\)次。 所以可以枚举第二个操作的执行次数。 那么第一个操作显然是在刚好的时候最优,这个用二分可以轻松解决。 时间复杂度\(O(nlog^2s)P7285 「EZEC-5」修改数组
Aimee 很水的小题目 写这个不是因为我做完了题目 而是因为考完试了 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n; int t; int a[100001]; int ans; int main(){ scanf("%d",&t); while(t--){ scaP6823 「EZEC-4」zrmpaul Loves Array
发现进行一次排序后先前的操作都无效了,所以只需做最后一次排序后的操作。翻转操作打个翻转标记,互换操作根据翻转标记即可。 时间复杂度 \(O(n+m)\)。 code: #include<bits/stdc++.h> using namespace std; #define N 1000005 #define For(i,x,y)for(i=x;i<=(y);i++) int x[N],y[N]