洛谷4月月赛R2

打酱油...

A.koishi的数学题

线性筛约数和就可以\(O(N)\)了...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <ctime>
using namespace std;
typedef long long ll;
const int N=1e6+5;
inline ll read(){
char c=getchar(); ll x=0,f=1;
while(c<'0' || c>'9') {if(c=='-')f=-1; c=getchar();}
while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();}
return x*f;
} bool notp[N]; int p[N/10], lp[N]; ll si[N];
void sieve(int n) {
si[1] = 1;
for(int i=2; i<=n; i++) {
if(!notp[i]) p[++p[0]] = i, lp[i] = i, si[i] = 1+i;
for(int j=1; j <= p[0] && i*p[j] <= n; j++) {
int t = i*p[j]; notp[t] = 1;
if(i % p[j] == 0) {
lp[t] = lp[i] * p[j];
if(lp[t] == t) si[t] = si[i] + lp[t];
else si[t] = si[t / lp[t]] * si[lp[t]];
break;
}
lp[t] = p[j];
si[t] = si[i] * (1 + p[j]);
}
}
for(int i=1; i<=n; i++) si[i] += si[i-1];
} int n;
int main() {
n=read();
sieve(n);
for(int i=1; i<=n; i++) printf("%lld ", (ll) n * i - si[i]);
}

B大爷的字符串题

卡读题...

容易发现就是求区间出现次数最多的权值

把区间众数的分块复制上T掉了,怒写莫队

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=2e5+5, mo = 998244353;
inline ll read(){
char c=getchar(); ll x=0,f=1;
while(c<'0' || c>'9') {if(c=='-')f=-1; c=getchar();}
while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();}
return x*f;
} int n, Q, a[N], ans[N], mp[N], pos[N], block;
struct meow{
int l, r, id;
bool operator <(const meow &a) const {return pos[l] == pos[a.l] ? r < a.r : pos[l] < pos[a.l];}
} q[N]; int c[N], d[N], l, r, now;
inline void add(int x) {
d[c[x]]--; d[ ++c[x] ]++;
while(d[now+1]) now++;
}
inline void del(int x) {
d[c[x]]--; d[ --c[x] ]++;
while(!d[now]) now--;
}
void modui() {
l=1; r=0; d[0] = n;
sort(q+1, q+1+Q);
for(int i=1; i<=Q; i++) {
while(r < q[i].r) add(a[++r]);
while(r > q[i].r) del(a[r--]);
while(l < q[i].l) del(a[l++]);
while(l > q[i].l) add(a[--l]);
ans[ q[i].id ] = now;
}
}
int main() {
// freopen("in", "r", stdin);
n=read(); Q=read(); block = sqrt(n);
for(int i=1; i<=n; i++) mp[i] = a[i] = read(), pos[i] = (i-1)/block+1;
for(int i=1; i<=Q; i++) q[i].l = read(), q[i].r = read(), q[i].id = i;
sort(mp+1, mp+1+n); mp[0] = unique(mp+1, mp+1+n) - mp - 1;
for(int i=1; i<=n; i++) a[i] = lower_bound(mp+1, mp+1+mp[0], a[i]) - mp;
modui();
for(int i=1; i<=Q; i++) printf("%d\n", -ans[i]);
}

C仓鼠的数学题

不会...我多项式除了算卷积什么都不会...

update:现在会了,在另一篇文章上

D方方方的数据结构

题意:支持区间加,区间乘,单店询问,撤销某次操作


一眼感觉可以用线段树分治做,然后写写写,拍了几组数据不对啊...

然后调了两个小时,突然发现,因为有乘标记,每个操作不是独立的!,这还分治什么啊。

感觉其他的做法都很神奇

放一个错误的代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
const int N=2e5+5, mo = 998244353;
inline ll read(){
char c=getchar(); ll x=0,f=1;
while(c<'0' || c>'9') {if(c=='-')f=-1; c=getchar();}
while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();}
return x*f;
} int n, m, op, l, r, d, p, ans[N];
struct meow {
int op, l, r, d, s, t, id;
void print() {
printf("meow %d [%d, %d] %d [%d, %d]\n", op, l, r, d, s, t);
}
};
typedef vector<meow> vm;
vm a;
meow st[N]; int top; inline void mod(ll &x) {if(x>=mo) x-=mo; else if(x<0) x+=mo;}
inline int Pow(ll a, int b) {
mod(a);
ll ans=1;
for(; b; b>>=1, a=a*a%mo)
if(b&1) ans=ans*a%mo;
return ans;
}
namespace seg {
#define mid ((l+r)>>1)
#define lc x<<1
#define rc x<<1|1
#define lson lc, l, mid
#define rson rc, mid+1, r
struct node{ ll val, a, b; node():b(1){} } t[N<<2];
inline void _add(int x, ll d) {
mod(t[x].a += d); mod(t[x].val += d);
}
inline void _mul(int x, ll d) {
t[x].a = (t[x].a * d) %mo;
t[x].b = (t[x].b * d) %mo;
t[x].val = (t[x].val * d) %mo;
}
inline void pushdn(int x) {
if(t[x].b != 1) {
_mul(lc, t[x].b);
_mul(rc, t[x].b);
t[x].b = 1;
}
if(t[x].a) {
_add(lc, t[x].a);
_add(rc, t[x].a);
t[x].a = 0;
}
}
void add(int x, int l, int r, int ql, int qr, ll d) {
if(ql<=l && r<=qr) _add(x, d);
else {
pushdn(x);
if(ql <= mid) add(lson, ql, qr, d);
if(mid < qr ) add(rson, ql, qr, d);
}
}
void mul(int x, int l, int r, int ql, int qr, ll d) {
if(ql<=l && r<=qr) _mul(x, d);
else {
pushdn(x);
if(ql <= mid) mul(lson, ql, qr, d);
if(mid < qr ) mul(rson, ql, qr, d);
}
}
int que(int x, int l, int r, int p) {
if(l == r) return t[x].val;
else {
pushdn(x);
if(p <= mid) return que(lson, p);
else return que(rson, p);
}
} #undef mid
}
inline void add(int l, int r, int d) {
seg::add(1, 1, n, l, r, d);
}
inline void mul(int l, int r, int d) {
seg::mul(1, 1, n, l, r, d);
}
void recov(int bot) {
while(top != bot) {
meow &now = st[top--];
if(now.op == 1) add(now.l, now.r, -now.d);
if(now.op == 2) mul(now.l, now.r, Pow(now.d, mo-2));
}
} int Q;
void cdq(int l, int r, vm &a) { if(l==1 && r==4) return;printf("\n-----------cdq [%d, %d]\n\n", l, r);
int mid = (l+r)>>1, bot = top;
vm b, c;
for(int i=0; i < (int)a.size(); i++) { //[s, t]
meow &now = a[i];
if(now.op == 4) continue;
printf("now %d [%d, %d]\n", now.id, now.s, now.t);
if(now.s == l && now.t == r) { puts("get");
if(now.op == 1) add(now.l, now.r, now.d);
if(now.op == 2) mul(now.l, now.r, now.d);
if(now.op == 3) ans[++Q] = seg::que(1, 1, n, now.l); if(now.op <= 2) st[++top] = now;
}
else if(now.t <= mid) b.push_back(now);
else if(mid < now.s) c.push_back(now);
else {
meow q = now;
q.s = now.s; q.t = mid; b.push_back(q);
q.s = mid+1; q.t = now.t; c.push_back(q);
}
}
if(l != r) {
if(b.size()) cdq(l, mid, b);
if(c.size()) cdq(mid+1, r, c);
}
recov(bot);
} int main() {
freopen("in", "r", stdin);
//freopen("a.out", "w", stdout);
n=read(); m=read();
for(int i=1; i<=m; i++) {
op=read();
if(op == 1) l=read(), r=read(), d=read(), a.push_back( (meow){op, l, r, d, i, -1, i} );
if(op == 2) l=read(), r=read(), d=read(), a.push_back( (meow){op, l, r, d, i, -1, i} );
if(op == 3) p=read(), a.push_back( (meow){op, p, 0, 0, i, i, i} );
if(op == 4) p=read()-1, a[p].t = i, a.push_back( (meow){4, 0, 0, 0, i, i, i} );
}
for(int i=0; i<m; i++) if(a[i].t == -1) a[i].t = m;
for(int i=0; i<m; i++) printf("%d ",i+1), a[i].print();
cdq(1, m, a);
for(int i=1; i<=Q; i++) {
if(ans[i] < 0) ans[i] += mo;
printf("%d\n", ans[i]);
}
//printf("\n\n%lld", ((ll)1e18 % mo + mo) %mo);
}

洛谷4月月赛R2的更多相关文章

  1. 洛谷10月月赛R2·浴谷八连测R3题解

    早上打一半就回家了... T1傻逼题不说了...而且我的写法比题解要傻逼很多T T T2可以发现,我们强制最大值所在的块是以左上为边界的倒三角,然后旋转4次就可以遍历所有的情况.所以二分极差,把最大值 ...

  2. 洛谷3月月赛 R1 Step! ZERO to ONE

    洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...

  3. 【洛谷5月月赛】玩游戏(NTT,生成函数)

    [洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...

  4. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  5. 【LGR-051】洛谷9月月赛

    [LGR-051]洛谷9月月赛 luogu 签到题 description 给出\(K\)和质数\(m\),求最小的\(N\)使得\(111....1\)(\(N\)个\(1\))\(\equiv k ...

  6. 「LGR-049」洛谷7月月赛 D.Beautiful Pair

    「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max ...

  7. 洛谷9月月赛round2

    洛谷9月月赛2 t1 题意:懒得说了 分析:模拟 代码: program flag; var a:..,..]of char; n,i,m,j,x,y,ans,k:longint; begin ass ...

  8. 「P4996」「洛谷11月月赛」 咕咕咕(数论

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  9. 「P4994」「洛谷11月月赛」 终于结束的起点(枚举

    题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...

随机推荐

  1. BZOJ 2219: 数论之神

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2219 N次剩余+CRT... 就是各种奇怪的分类讨论.. #include<cstrin ...

  2. Spark算子--mapValues

    转载请标明出处http://www.cnblogs.com/haozhengfei/p/ccc9d6b5c46ac7209c1e104bd219bfb4.html mapValues--Transfo ...

  3. NopCommerce用core重写ef

    最近看了NopCommerce源码,用core学习着写了一个项目,修改的地方记录下.项目地址 NopCommerce框架出来好久了.18年的第一季度 懒加载出来后也会全部移动到.net core.那么 ...

  4. html dl dt dd标签元素语法结构与使用

    dl dt dd认识及dl dt dd使用方法 标签用于定义列表类型标签. dl dt dd目录 dl dt dd介绍 结构语法 dl dt dd案例 dl dt dd总结 一.dl dt dd认识 ...

  5. 【WebApi系列】浅谈HTTP

    [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi如何传递参数 [04]详解WebApi测试和PostMan [05]浅谈WebApi Core ...

  6. vue学习笔记(五)——指令

    13条指令 1. v-text (数据绑定语法-插值) <span v-text="msg"></span> <!-- 和下面的一样 --> & ...

  7. nodejs http小爬虫

    本课程用nodejs写一个http小爬虫,首先科普一下,爬虫就是把网上的网页代码给弄下来,然后纳为己用.目前最大的爬虫:百度快照等的. 下面直接上代码 示例一: var http = require( ...

  8. ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(二)—启用用户管理

    修改和启用默认的用户账户管理和角色管理 一.修改Models目录中的ApplicationUser.cs类文件,如下 namespace xxxx.Models{    //将应用程序用户的属性添加到 ...

  9. RocketMQ-消费重试机制

    介绍: RocketMQ的消息重试及时分为两种,一种是Producer端重试,一种是Consume端重试. 1.Producer端重试 : 1.1消息发没发成功,默认情况下是3次重试. 2.Consu ...

  10. python_11_字符编码

    什么是字符编码? --世界上有很多国家,每个国家都有自己独特的语言,所以在计算机普及的当今世界, 每个国家都有自己的字符编码,本国的软件运行在其他国家的机器上,会出现乱码, 有utf-8,gbk等各种 ...