Time to Raid Cowavans 题意: 询问 下标满足 a + b * k 的和是多少. 题解: 将询问分块. 将b >= blo直接算出答案. 否则存下来. 存下来之后,对于每个b扫一遍数组,然后同时处理相同b的询问. 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_o…
先对b从小到大sort,判断b是不是比sqrt(n)大,是的话就直接暴力,不是的话就用dp维护一下 dp[i]表示以nb为等差,i为起点的答案,可以节省nb相同的情况 #include<bits/stdc++.h> #define fi first #define se second #define mp make_pair #define pb push_back #define pii pair<int,int> #define C 0.5772156649 #define p…
Discription As you know, the most intelligent beings on the Earth are, of course, cows. This conclusion was reached long ago by the Martian aliens, as well as a number of other intelligent civilizations from outer space. Sometimes cows gather into co…
题目链接: http://codeforces.com/contest/103/problem/D D. Time to Raid Cowavans time limit per test:4 secondsmemory limit per test:70 megabytes 问题描述 As you know, the most intelligent beings on the Earth are, of course, cows. This conclusion was reached lo…
题意: 思路:院赛防AK题,然而还没来得及做就被数据出锅的题坑了…… #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<iostream> #include<algorithm> #include<map> #include<set> #include<queue> #include<vec…
Time to Raid Cowavans 题意:一共有n头牛, 每头牛有一个重量,m次询问, 每次询问有a,b 求出 a,a+b,a+2b的牛的重量和. 题解:对于m次询问,b>sqrt(n)的时候我们直接把结果跑出来,当b<sqrt(n)的时候我们离线询问,算出所有一个b的任意一起点的值. 复杂度为 q*sqrt(n); 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_i…
Portal Description 给出长度为\(n(n\leq3\times10^5)\)的序列\(\{a_n\}\),进行\(q(q\leq3\times10^5)\)次询问:给出\(x,y\),求\(\sum_{i=x,i+=y}^n a_i\). Solution 将询问离线,按\(y\)排序. 对于\(y<\sqrt n\),对于每个\(y\)计算sum[i]表示\(x=i\)时的答案.计算sum[i]复杂度为\(O(n)\),每次询问为\(O(1)\),对于\(\sqrt n\)个…
传送门 学到了询问分块的科技-- 对于修改操作,每发生了\(S\)次修改就重构整棵树,小于\(S\)次的修改操作丢到一个队列里面. 对于每一次查询操作,先在主席树上查询当前子树内部大于\(k\)的节点的数量,然后依次将队列中的修改放到树上,在答案统计完成之后再将这些修改撤销.使用倍增检验某一个点是否在子树内,如果在子树内则考虑这个节点的权值修改或加入对于答案的影响. 修改的复杂度为\(O(\frac{N}{S}NlogN)\),查询的复杂度为\(O(NSlogN)\),当\(S = \sqrt{…
Description 给定一张 \(n\) 个点,\(m\) 条边的无向图,边 \(i\) 的权值为 \(d_i\).现有 \(q\) 次操作,第 \(j\) 个操作有两种模式: \(1\ b_j\ r_j\):将第 \(b_j\) 条边的权改为 \(r_j\). \(2\ s_j\ w_j\):询问与点 \(s_j\) 连通的点的数量(包括自己).若边 \((u, v)\) 的权值 \(d \ge w_j\),那么视作 \(u, v\) 连通.若 \((a, b), (b, c)\) 分别连…
题意 给你一段长度为n(1 ≤ n ≤ 3·1e5)的序列,m (1 ≤ p ≤ 3·1e5)个询问,每次询问a,a+b,a+2b+...<=n的和 思路 一开始一直想也想不到怎么分,去维护哪些信息,看了题解才知道 其实分块不仅仅可以将一列序列分块,还可以将数据进行分块,下面讨论具体做法 首先这道题不是在线询问,可以离线做,先读入所有的询问,将询问从小到大排序①当b<√n时,对于每一个b我们可以预处理出这样的一个数组sum[i],就是以i为起点间隔为b的序列和(可以用一个简单的dp求出来),然…