\(\text{Solution}\)

首先把 \(T2\) 给切了,\(T1\) 找半天规律找不到

然后打了个表算是暴力了

\(T3\) 也暴。。。

太暴了。。。

\(T4\) 直接啥也不会

\(\text{T1}\)

考虑一个 \(a\) 的答案

\((c+b)(c-b)=a^2\) 或 \((c+b)(c-b)=(a+1)(a-1)\) 的 \(c,b\) 组数

就是一般的分类讨论了,记一个数 \(a\) 的答案为 \(f(a)\),\(d(a)\) 为 \(a\) 的约数个数

那么 \(2\nmid a,f(a)=d(a)/2\)

\(4\mid a,f(a)=d(a/4)/2\)

其余则为 \(0\)

具体考虑 \(a^2\) 和 \(a^2-1\) 的 \(f\) 值即可

\(\text{Code}\)

#include <cstdio>
#define RE register
using namespace std;
typedef long long LL; const int N = 1e7 + 5;
int x, y, d[N], _d[N], num[N], tot, pr[N / 10], vis[N], ans; void Sieve()
{
d[1] = _d[1] = num[1] = 1;
for(RE int i = 2; i <= 1e7 + 3; i++)
{
if (!vis[i]) pr[++tot] = i, d[i] = 2, num[i] = 1, _d[i] = 3;
for(RE int j = 1, z; j <= tot && pr[j] * i <= 1e7 + 3; j++)
{
vis[z = i * pr[j]] = 1;
if (i % pr[j] == 0)
{
num[z] = num[i] + 1, d[z] = d[i] / num[z] * (num[z] + 1);
_d[z] = _d[i] / (num[i] * 2 + 1) * (num[z] * 2 + 1);
break;
}
else d[z] = d[i] * 2, num[z] = 1, _d[z] = _d[i] * 3;
}
}
} int main()
{
Sieve(), scanf("%d%d", &x, &y);
for(RE int a = x; a <= y; a++)
if (a & 1) ans += (LL)_d[a] / 2 + (LL)d[(a + 1) / 2] * d[(a - 1) / 2] / 2;
else ans += (LL)d[a + 1] * d[a - 1] / 2 + _d[a / 2] / 2;
printf("%d\n", ans);
}

\(\text{T2}\)

一眼分位变成线段树赋值和异或操作

\(\text{Code}\)

#include <cstdio>
#define RE register
#define IN inline
using namespace std; const int N = 5e4 + 5, LG = 9, SZ = N * 4, M = LG + 2;
int n, m, a[N]; struct SegmenTree{
#define ls (p << 1)
#define rs (ls | 1)
int sum[SZ][M], tg1[SZ][M], tg2[SZ][M];
IN void pushup(int p, int k){sum[p][k] = sum[ls][k] + sum[rs][k];}
void build(int p, int l, int r)
{
for(RE int j = 0; j <= LG; j++) tg1[p][j] = -1;
if (l == r)
{
for(RE int j = 0; j <= LG; j++) sum[p][j] = ((a[l] >> j) & 1);
return;
}
int mid = l + r >> 1; build(ls, l, mid), build(rs, mid + 1, r);
for(RE int j = 0; j <= LG; j++) pushup(p, j);
}
IN void push(int p, int k, int z, int l, int r)
{
if (z == 0 || z == 1) sum[p][k] = z * (r - l + 1), tg1[p][k] = z;
else{
sum[p][k] = r - l + 1 - sum[p][k], tg2[p][k] ^= 1;
if (tg1[p][k] != -1) tg1[p][k] ^= 1;
}
}
IN void pushdown(int p, int k, int l, int r)
{
int mid = l + r >> 1;
if (tg2[p][k]) push(ls, k, 2, l, mid), push(rs, k, 2, mid + 1, r), tg2[p][k] = 0;
if (tg1[p][k] != -1) push(ls, k, tg1[p][k], l, mid), push(rs, k, tg1[p][k], mid + 1, r), tg1[p][k] = -1;
}
void assign(int p, int l, int r, int k, int x, int y, int z)
{
if (x > r || y < l) return;
if (x <= l && r <= y) return push(p, k, z, l, r), void();
pushdown(p, k, l, r); int mid = l + r >> 1;
if (x <= mid) assign(ls, l, mid, k, x, y, z);
if (y > mid) assign(rs, mid + 1, r, k, x, y, z);
pushup(p, k);
}
void reverse(int p, int l, int r, int k, int x, int y)
{
if (x > r || y < l) return;
if (x <= l && r <= y) return push(p, k, 2, l, r), void();
pushdown(p, k, l, r); int mid = l + r >> 1;
if (x <= mid) reverse(ls, l, mid, k, x, y);
if (y > mid) reverse(rs, mid + 1, r, k, x, y);
pushup(p, k);
}
int Query(int p, int l, int r, int k, int x, int y)
{
if (x > r || y < l) return 0;
if (x <= l && r <= y) return sum[p][k];
pushdown(p, k, l, r); int mid = l + r >> 1, res = 0;
if (x <= mid) res = Query(ls, l, mid, k, x, y);
if (y > mid) res += Query(rs, mid + 1, r, k, x, y);
return res;
}
}T; int main()
{
scanf("%d%d", &n, &m);
for(RE int i = 1; i <= n; i++) scanf("%d", &a[i]);
T.build(1, 1, n); char op[10];
for(RE int l, r, x; m; --m)
{
scanf("%s%d%d", op, &l, &r);
if (op[0] == 'a'){
scanf("%d", &x);
for(RE int j = 0; j <= LG; j++) if (!((x >> j) & 1)) T.assign(1, 1, n, j, l, r, 0);
}
else if (op[0] == 'o'){
scanf("%d", &x);
for(RE int j = 0; j <= LG; j++) if ((x >> j) & 1) T.assign(1, 1, n, j, l, r, 1);
}
else if (op[0] == 'x'){
scanf("%d", &x);
for(RE int j = 0; j <= LG; j++) if ((x >> j) & 1) T.reverse(1, 1, n, j, l, r);
}
else if (op[1] == 'x'){
int res = 0, z;
for(RE int j = 0; j <= LG; j++) z = T.Query(1, 1, n, j, l, r), res += ((z & 1) ? (1 << j) : 0);
printf("%d\n", res);
}
else{
int res = 0, z;
for(RE int j = 0; j <= LG; j++) z = T.Query(1, 1, n, j, l, r), res += z * (1 << j);
printf("%d\n", res);
}
}
}

JZOJ 2022.02.11【提高A组】模拟的更多相关文章

  1. JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)

    5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...

  2. JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团

    100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms  Memory Limits: 131072 KB  Detailed Limits   Got ...

  3. JZOJ 5818. 【NOIP提高A组模拟2018.8.15】 做运动

    5818. [NOIP提高A组模拟2018.8.15] 做运动 (File IO): input:running.in output:running.out Time Limits: 2000 ms  ...

  4. JZOJ 5812. 【NOIP提高A组模拟2018.8.14】 区间

    5812. [NOIP提高A组模拟2018.8.14] 区间 (File IO): input:range.in output:range.out Time Limits: 1000 ms  Memo ...

  5. JZOJ 4732. 【NOIP2016提高A组模拟8.23】函数

    4732. [NOIP2016提高A组模拟8.23]函数 (Standard IO) Time Limits: 1500 ms  Memory Limits: 262144 KB  Detailed ...

  6. JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线

    5328. [NOIP2017提高A组模拟8.22]世界线 (File IO): input:worldline.in output:worldline.out Time Limits: 1500 m ...

  7. JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器

    5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...

  8. JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)

    5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...

  9. JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)

    5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...

  10. [JZOJ]100047. 【NOIP2017提高A组模拟7.14】基因变异

    21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的变异息息相关,考察基因变 ...

随机推荐

  1. C# DataTable 虚拟Sql临时表,可以做一些处理

    /// <summary> /// 获取临时表-和数据库表一样的的表结构的才可以 /// </summary> /// <param name="SourceT ...

  2. easui 两个combobox相互选中时至对方为空的解决方案

    combobox HTML: <select id="monthplan" class="zxui-combobox" name="monthp ...

  3. day10 集合——队列(Queue)、Vector & Map集合常用方法 & HashMap的实现原理&二叉树&二叉查找树AVL树&红黑树

    集合--List 栈先进后出 队列 先进先出 Queue队列 方法 Queue<Integer> q = new LinkedList<>(); //添加元素 q.add(2) ...

  4. Pandas_1_预备知识

    Chapter1_Python基础 1.1 Python基础 推导式: 两个对象之间的映射关系,类似于实数之间关系变换的函数,只不过对象变成了矩阵. # Ex1-1 vacabulary = ['co ...

  5. Django基础笔记6(Django中间件)

    Django自带的中间件 中间件执行流程 自定义中间件 Middle.py class Middle1(MiddlewareMixin): def process_request(self, requ ...

  6. docker入门(利用docker部署web应用)

    第一章 什么是docker1.1 docker的发展史2010年几个年轻人成立了一个做PAAS平台的公司dotCloud.起初公司发展的不错,不但拿到过一些融资,还获得了美国著名孵化器YCombina ...

  7. MongoDB海量数据分页查询优化

    MongoDB海量数据分页查询优化 一.背景 大量数据需从Mongo拿出来,一次性拿出来不科学,传统分页效率低下 二.传统方案 就是最常规的方案,假设 我们需要对文章 articles 这个表(集合) ...

  8. 【转载】EXCEL VBA 20个有用的ExcelVBA代码

    1.显示多个隐藏的工作表 如果你的工作簿里面有多个隐藏的工作表,你需要花很多时间一个一个的显示隐藏的工作表. 下面的代码,可以让你一次显示所有的工作表 Sub UnhideAllWoksheets() ...

  9. CH392/CH395常见问题解决方法指南

    CH395 问题 1: CH395 初始化失败.解答: 1.首先检查"check_exist"命令,正常情况下 CH395 会将该命令的输入值按位取反后输出,若该命令不正常,则说明 ...

  10. [OpenCV实战]35 使用Tesseract和OpenCV实现文本识别

    目录 1 如何在Ubuntu和windows上安装Tesseract 1.1 在ubuntu18.04上安装Tesseract4 1.2 在Ubuntu 14.04,16.04,17.04,17.10 ...