[Bzoj5358][Lydsy1805月赛]口算训练(预处理+动态开点线段树)
5358: [Lydsy1805月赛]口算训练
Time Limit: 5 Sec Memory Limit: 512 MB
Submit: 318 Solved: 105
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
AC代码:
# include <iostream>
# include <cstdio>
# include <cstring>
# include <vector>
# include <algorithm>
using namespace std;
const int N = 1e5;
vector<pair<int,int> > t[N + ];
int prime[N + ],cnt,root[N + ],lc[N * ],rc[N * ],s[N * ],p,a[N + ];bool vis[N + ];
void shai()
{
for(int i = ;i <= N;i++)
{
if(!vis[i])prime[++cnt] = i;
for(int j = ;j <= cnt;j++)
{
if(i * prime[j] > N)break;
vis[i * prime[j]] = true;
if(i % prime[j] == )break;
}
}
for(int i = ;i <= cnt;i++)
for(int j = prime[i];j <= N;j += prime[i])
{
t[j].push_back(make_pair(prime[i],j / prime[i]));
}
}
void updata(int &k,int L,int l,int r,int d)
{
if(!k){k = ++p;lc[k] = rc[k] = s[k] = ;}
s[k] += d;
if(l == r)return;
int mid = l + r >> ;
if(L <= mid)updata(lc[k],L,l,mid,d);
else updata(rc[k],L,mid + ,r,d);
}
int Query(int &k,int L,int R,int l,int r)
{
if(!k)return ;
if(L <= l && r <= R)return s[k];
int mid = l + r >> ;
if(L > mid)return Query(rc[k],L,R,mid + ,r);
if(R <= mid)return Query(lc[k],L,R,l,mid);
return Query(lc[k],L,R,l,mid) + Query(rc[k],L,R,mid + ,r);
}
int n,m;
int main()
{
shai();int Case;
scanf("%d",&Case);
while(Case--)
{
memset(root,,sizeof root);p = ;
scanf("%d %d",&n,&m);
for(int i = ;i <= n;i++)
{
scanf("%d",&a[i]);
for(int j = ;j < (int)t[a[i]].size();j++)
updata(root[t[a[i]][j].first],i,,n,t[a[i]][j].second);
}
int x,y,z;
while(m--)
{
scanf("%d %d %d",&x,&y,&z);bool f = true;
for(int j = ;j < (int)t[z].size();j++)
if(Query(root[t[z][j].first],x,y,,n) < t[z][j].second){f = false;break;}
if(f)puts("Yes");else puts("No");
}
}
}
[Bzoj5358][Lydsy1805月赛]口算训练(预处理+动态开点线段树)的更多相关文章
- [Lydsy1805月赛]口算训练 BZOJ5358
分析: 没想到这道题还能二分查找... 这题主席树的话,裸的很显然...我们将每一个数分解质因数,之后建一个可持久化权值线段树维护[L,R]区间内的每一种质因子的个数,分解质因数的话,可以选择用线筛, ...
- NOIP2017 列队——动态开点线段树
Description: Sylvia 是一个热爱学习的女♂孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有n×m名学生,方阵的行数为 ...
- Codeforces 803G Periodic RMQ Problem ST表+动态开节点线段树
思路: (我也不知道这是不是正解) ST表预处理出来原数列的两点之间的min 再搞一个动态开节点线段树 节点记录ans 和标记 lazy=-1 当前节点的ans可用 lazy=0 没被覆盖过 els ...
- Luogu P3960 列队(动态开点线段树)
P3960 列队 题意 题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有\(n \times m ...
- NFLSOJ #917 -「lych_cys模拟题2018」橘子树(树剖+ODT+莫反统计贡献的思想+动态开点线段树)
题面传送门 sb 出题人不在题面里写 \(b_i=0\) 导致我挂成零蛋/fn/fn 首先考虑树链剖分将路径问题转化为序列上的问题,因此下文中简称"位置 \(i\)"表示 DFS ...
- [2016湖南长沙培训Day4][前鬼后鬼的守护 chen] (动态开点线段树+中位数 or 动规 or 贪心+堆优化)
题目大意 给定一个长度为n的正整数序列,令修改一个数的代价为修改前后两个数的绝对值之差,求用最小代价将序列转换为不减序列. 其中,n满足小于500000,序列中的正整数小于10^9 题解(引自mzx神 ...
- [bzoj 3531][SDOI2014]旅行(树链剖分+动态开点线段树)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3531 分析: 对于每个颜色(颜色<=10^5)都建立一颗线段树 什么!那么不是M ...
- 【BZOJ-4636】蒟蒻的数列 动态开点线段树 ||(离散化) + 标记永久化
4636: 蒟蒻的数列 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 247 Solved: 113[Submit][Status][Discuss ...
- codeforces 893F - Physical Education Lessons 动态开点线段树合并
https://codeforces.com/contest/893/problem/F 题意: 给一个有根树, 多次查询,每次查询对于$x$i点的子树中,距离$x$小于等于$k$的所有点中权值最小的 ...
随机推荐
- Python之简单Socket编程
Socket编程这块儿还是比较重要的,记录一下:实现服务器端和客户端通信(客户端发送系统指令,如ipconfig等,服务器端执行该指令,然后将指令返回结果给客户端再传过去,设置一次最多直接收1024字 ...
- UVa 1407 树形背包 Caves
这道题可以和POJ 2486 树形背包DP Apple Tree比较着来做. 参考题解 #include <iostream> #include <cstdio> #inclu ...
- 文件上传下载,命令之wget / curl / which / sort / uniq / cut / wc /tr /sed
目录 命令 1.文件的上传下载 2.从外网下载文件wget 3.curl文件下载 4.查找命令which 5.字符处理命令-排序sort 6.字符处理-去重uniq 7.字符处理-截取cut 8.字符 ...
- Node.js中的http.request方法的使用说明
方法说明: 函数的功能室作为客户端向HTTP服务器发起请求. 语法: http.get(options, callback) 由于该方法属于http模块,使用前需要引入http模块(var http= ...
- session的工作原理、django的超时时间设置及session过期判断
1.session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 session服务端中存在的数据为: session = { 随机字符串1:{ 用户1的相关信 ...
- Django 中CSRF中间件 'django.middleware.csrf.CsrfViewMiddleware',
1.Django中CSRF中间件的工作原理及form表单提交需要添加{% csrf_token %}防止出现403错误 CSRF # 表示django全局发送post请求均需要字符串验证功能:防止跨站 ...
- Leetcode 454.四数相加II
四数相加II 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 为了使问题简单 ...
- Python开启进程的2中方式
知识点一:进程的理论 进程:正在进行的一个程序或者说一个任务,而负责执行任务的则是CPU 进程运行的的三种状态: 1.运行:(由CPU来执行,越多越好,可提高效率) 2.阻塞:(遇到了IQ,3个里面可 ...
- P2564 生日礼物
生日礼物 洛谷链接 题目描述: 在一段彩带上有不同颜色的彩珠,求出包含所有颜色彩珠的最短彩带长度. 思路: 我们可以把按彩珠的位置把所有彩珠排一下序,然后从1开始遍历这些彩珠,并记录出现过的颜色数目, ...
- POJ 2021 Relative Relatives
Relative Relatives Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3339 Accepted: 146 ...