2017 [六省联考] T2 相逢是问候
4869: [Shoi2017]相逢是问候
Time Limit: 40 Sec Memory Limit: 512 MB
Submit: 1205 Solved: 409
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 2 3 4
0 1 4
1 2 4
0 1 4
1 1 3
Sample Output
3
HINT
鸣谢多名网友提供正确数据,已重测!
Source
- #include<bits/stdc++.h>
- #define ll long long
- #define maxn 50005
- using namespace std;
- int P[30],n,m,a[maxn];
- int f[maxn],len,C,opt,TP;
- int le,ri,tim[maxn],val[maxn];
- set<int> s;
- //set<int> ::iterator it;
- inline int add(int x,int y,const int ha){
- x+=y;
- return x>=ha?x-ha:x;
- }
- inline int mod(int x,int y,const int ha){
- ll P=x*(ll)y;
- return P>=ha?P%ha+ha:P;
- }
- inline int phi(int x){
- int y=1;
- for(int i=2;i*(ll)i<=x;i++) if(!(x%i)){
- y*=(i-1),x/=i;
- while(!(x%i)) x/=i,y*=i;
- if(x==1) break;
- }
- if(x!=1) return y*(x-1);
- else return y;
- }
- inline void update(int x,int y){
- for(;x<=n;x+=x&-x) f[x]=add(f[x],y,P[0]);
- }
- inline int query(int x){
- int an=0;
- for(;x;x-=x&-x) an=add(an,f[x],P[0]);
- return an;
- }
- inline int ksm(int x,int y,const int ha){
- int an=1;
- for(;y;y>>=1,x=mod(x,x,ha)) if(y&1) an=mod(an,x,ha);
- return an;
- }
- /*
- int get(int sit,int pos){
- if(sit==TP) return a[pos]>=P[sit]?a[pos]%P[sit]+P[sit]:a[pos];
- else return ksm(C,get(sit+1,pos),P[sit]);
- }
- */
- inline void TOL(){
- int now=*s.lower_bound(le);
- for(;now<=ri;now=*s.upper_bound(now)){
- update(now,P[0]-val[now]);
- tim[now]++,TP=tim[now];
- if(tim[now]>len) val[now]=1;
- else val[now]=(a[now]>=P[TP]?a[now]%P[TP]+P[TP]:a[now]);
- for(int i=TP-1;i>=0;i--){
- val[now]=ksm(C,val[now],P[i]);
- }
- val[now]%=P[0];
- update(now,val[now]);
- if(tim[now]==len+1) s.erase(now);
- }
- }
- int main(){
- // freopen("9.in","r",stdin);
- // freopen("9.out","w",stdout);
- scanf("%d%d%d%d",&n,&m,P,&C);
- for(len=1;;len++){
- P[len]=phi(P[len-1]);
- if(P[len]==1) break;
- }
- s.insert(0),s.insert(n+1);
- for(int i=1;i<=n;i++){
- scanf("%d",a+i);
- update(i,a[i]);
- s.insert(i);
- val[i]=a[i];
- }
- while(m--){
- scanf("%d%d%d",&opt,&le,&ri);
- if(opt) printf("%d\n",add(query(ri),P[0]-query(le-1),P[0]));
- else TOL();
- }
- return 0;
- }
2017 [六省联考] T2 相逢是问候的更多相关文章
- 2017 [六省联考] T5 分手是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 458 Solved: 299[Submit][Statu ...
- 2017 [六省联考] T1 期末考试
4868: [Shoi2017]期末考试 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 842 Solved: 385[Submit][Status ...
- 2017 [六省联考] T6 寿司餐厅
4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 450 Solved: 316[Submit][Status ...
- 洛谷 P3747 [六省联考2017]相逢是问候 解题报告
P3747 [六省联考2017]相逢是问候 题目描述 \(\text {Informatik verbindet dich und mich.}\) 信息将你我连结. \(B\) 君希望以维护一个长度 ...
- [BZOJ4869][六省联考2017]相逢是问候(线段树+扩展欧拉定理)
4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 1313 Solved: 471[Submit][Stat ...
- 六省联考2017 Day1
目录 2018.3.18 Test T1 BZOJ.4868.[六省联考2017]期末考试 T2 T3 BZOJ.4870.[六省联考2017]组合数问题(DP 矩阵快速幂) 总结 考试代码 T1 T ...
- 六省联考2017 Day2
目录 2018.3.27 Test 总结 T1 T2 T3 BZOJ.4873.[六省联考2017]寿司餐厅(最小割ISAP 最大权闭合子图) 考试代码 T1 T2 T3 2018.3.27 Test ...
- [luogu] P3745 [六省联考2017]期末考试 (贪心)
P3745 [六省联考2017]期末考试 题目描述 有 \(n\) 位同学,每位同学都参加了全部的 \(m\) 门课程的期末考试,都在焦急的等待成绩的公布. 第 \(i\) 位同学希望在第 \(t_i ...
- 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
[BZOJ4873][六省联考2017]寿司餐厅(网络流) 题面 BZOJ 洛谷 题解 很有意思的题目 首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图. 然后只需要考虑怎么构图就行了. ...
随机推荐
- POJ:2632-Crashing Robots
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Description In a modernized warehouse, robot ...
- poj--1064
题意:有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的绳子的话,这K条绳子最长能有多长?答案保留到小数点后2位. 思路:这些最大最小化问题大多数可以用二分查找的方法来解题 用 d 表 ...
- Sublime插件开发——简单的代码模板插件
最近一段一直使用sublime进行golang开发,整体感觉很不错,虽然比不上eclipse之类IDE强大,但是用起来很轻巧便捷,开发golang完全做够了.由于有一部分代码复用率很高,经常要用到,而 ...
- (手写)mybatis 核心配置文件和接口不在同一包下的解决方案
smart-sh-mybatis项目 app.xml文件中此处配置为: <!-- 从整合包里找,org.mybatis:mybatis-spring:1.2.4 --> <!-- s ...
- Python之log的处理方式
配置文件: #! /usr/bin/env python # -*- coding: utf-8 -*- """ logging配置 """ ...
- luogu2473 [SCOI2008]奖励关
题解参照这里 每个研究完记得乘一个1/n,这是乘了概率. #include <iostream> #include <cstdio> using namespace std; ...
- asp.net多线程在web页面中简单使用
需求:一个web页面 default.aspx 里面有两个控件GridView1,GridView2,通过两个线程分别加载绑定数据. 绑定GridView1:void BindCategory() ...
- Leetcode17--->Letter Combinations of a Phone Number(电话号码对应的字母的组合)
题目: 给定一个数字字符串,返回数字所能代表的所有字母组合: 举例: Input:Digit string "23" Output: ["ad", " ...
- [python subprocess学习篇] 调用系统命令
http://www.jb51.net/article/57208.htm 3).Popen.communicate(input=None):与子进程进行交互.向stdin发送数据,或从stdout和 ...
- 【转】[重构]Primitive Obsession
http://blog.csdn.net/wxr0323/article/details/7913950 Primitive Obsession(基本类型偏执) 偏执这个词实在是有点难懂.百度百科传送 ...