2020.1.5考试总结

T1和T3不太可做..先只放一下T2
TMD考场上没算好空间直接MLE爆零...
操作1可以归到操作3里,并且几个人的操作可以合并到一块,用线段树挺好维护的。
对于询问的话可以对每一个节点开一个桶,记录区间内前缀数量,向上合并的时候左儿子直接加,右儿子异或后再加。
发现很多节点根本用不到,动态开点即可。

#include<iostream>
#include<cstring>
#include<cstdio>
#define lson (k<<1)
#define rson ((k<<1)|1)
using namespace std;
int n, m, r, q, opt, x, y, v, ans, To, tot;
const int N = 130005;
int sum[N << 2][1 << 6], lz[N << 2];
inline int read()
{
    int res = 0; char ch = getchar(); bool XX = false;
    for (; !isdigit(ch); ch = getchar())(ch == '-') && (XX = true);
    for (; isdigit(ch); ch = getchar())res = (res << 3) + (res << 1) + (ch ^ 48);
    return XX ? -res : res;
}
struct ju
{
    int c[3][4];
    friend ju operator ^(const ju &a, const ju &b)
    {
        ju c;
        memset(c.c, 0, sizeof(c.c));
        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= m; ++j)
                c.c[i][j] = a.c[i][j] ^ b.c[i][j];
        return c;
    }
} to, tmp, tr[N << 2];
inline void fu(ju &x, int v)
{
    memset(x.c, 0, sizeof(x.c));
    if (v <= n)
        for (int i = 1; i <= m; ++i)x.c[v][i] = 1;
    else
    {
        v -= n;
        for (int i = 1; i <= n; ++i)x.c[i][v] = 1;
    }
}
inline int to1(ju x)
{
    int res = 0;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            res = (res << 1) | x.c[i][j];
    return res;
}
inline ju to2(int x)
{
    ju res;
    memset(res.c, 0, sizeof(res.c));
    for (int i = n; i >= 1; --i)
        for (int j = m; j >= 1; --j)
            res.c[i][j] = (x & 1), x >>= 1;
    return res;
}
inline void upd(int k)
{
    int tmp;
    tr[k] = tr[lson] ^ tr[rson];
    for (int i = 0; i < tot; ++i)sum[k][i] = sum[lson][i];
    tmp = to1(tr[lson]);
    for (int i = 0; i < tot; ++i)sum[k][i ^ tmp] += sum[rson][i];
}
void build(int k, int l, int r)
{
    lz[k] = -1;
    if (l == r)
    {
        fu(tr[k], 1); sum[k][to1(tr[k])] = 1;
        return;
    }
    int mid = (l + r) >> 1;
    build(lson, l, mid); build(rson, mid + 1, r);
    upd(k);
}
inline void work(int k, int l, int r, int v)
{
    tr[k] = to2((r - l + 1) & 1 ? v : 0);
    lz[k] = v;
    for (int i = 0; i < tot; ++i)sum[k][i] = 0;
    sum[k][v] = (r - l + 2) >> 1; sum[k][0] = (r - l + 1) - sum[k][v];
}
inline void cd(int k, int l, int r)
{
    int mid = (l + r) >> 1;
    work(lson, l, mid, lz[k]); work(rson, mid + 1, r, lz[k]);
    lz[k] = -1;
}
void change(int k, int l, int r, int x, int y, int v)
{
    if (x <= l && r <= y)
    {
        work(k, l, r, v);
        return;
    }
    if (lz[k] != -1)cd(k, l, r);
    int mid = (l + r) >> 1;
    if (x <= mid)change(lson, l, mid, x, y, v);
    if (mid + 1 <= y)change(rson, mid + 1, r, x, y, v);
    upd(k);
}
int ask2(int k, int l, int r, int x, int y, int val)
{
    if (x <= l && r <= y)return sum[k][val];
    if (lz[k] != -1)cd(k, l, r);
    int res = 0, mid = (l + r) >> 1;
    if (x <= mid)res += ask2(lson, l, mid, x, y, val);
    if (mid + 1 <= y)res += ask2(rson, mid + 1, r, x, y, val ^ to1(tr[lson]));
    return res;
}
void solve2()
{
    ju tmp;
    build(1, 1, r);
    while (q--)
    {
        opt = read();
        if (opt == 0)
        {
            x = read(); y = read();
            fu(tmp, y);
            change(1, 1, r, x, x, to1(tmp));
        }
        if (opt == 1)
        {
            x = read(); y = read();
            printf("%d\n", ask2(1, 1, r, x, y, To));
        }
        if (opt == 2)
        {
            x = read(); y = read(); v = read();
            fu(tmp, v);
            change(1, 1, r, x, y, to1(tmp));
        }
    }
}
int main()
{
    cin >> n >> m; tot = (1 << (n * m));
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            to.c[i][j] = read();
    To = to1(to);
    cin >> r >> q;
    solve2();
    fclose(stdin); fclose(stdout);
    return 0;
}

原文地址:https://www.cnblogs.com/wljss/p/12153776.html

时间: 2024-08-30 17:42:58

2020.1.5考试总结的相关文章

脱产备考CPA是孤注一掷?应该如何备考2020年注册会计师考试?

在浩浩荡荡的CPA备考大军中,有朝九晚五想要寻求职业突破的上班族,有家务孩子一把抓的全职妈妈,也有想要奋力一搏的脱产人员--背景不同,面临的问题当然有所不同.而与其他人相比,脱产备考的考生心理压力总是格外的重,毕竟没有工作,没有收入,甚至可能得不到家人朋友的理解,如此全力以赴.孤注一掷的冒险,无非是希望自己能比别人多占据一些备考优势,那么脱产人员应该如何备考2020年注册会计师考试呢?老实说,对于选择脱产备考的人来说,时间确实足够充裕,但要想把时间充分利用起来,争取一次性过五科甚至六科,以下几个

2020.1.2考试总结

T1圆圈游戏 暴力DP有60分,设包含圆i的最小的圆是fa[i],那没最终会的得到一棵树,对于一棵子树,选了根节点就不能选子树内其它点,f[i]=max(w[i],\(\sum f[son]\)). 瓶颈就在怎么建图,因为圆不相交相切,所以扫描线的时候相对位置不会发生改变,用set维护一下就好啦. #include<algorithm> #include<iostream> #include<cmath> #include<queue> #include&l

2020.1.9考试总结

T1 数据范围很合适.. 第一档就是暴力枚举 第二档就是数位DP 第三档就是矩阵乘法 丢一下学长的博客 #include<iostream> #include<cstring> #include<cstdio> #define LL long long using namespace std; LL n; const int mod = 1e9 + 7; struct ju { LL c[4][4]; friend ju operator *(const ju &

2020.1.11考试总结

恭贺 treAKer 在毒瘤之神的考验一题中rank1,成为新一届毒瘤之神! ...... 结果今天就考了 treAKer 的毒瘤题... T1 考场上看到1e6就想O(n)的做法,结果失败了... 正解思路很神奇,就是先对物品按照a来排序,询问按照m来排序,用双指针一起扫,同时维护\(f_i\) 当物品的和为i时 在所有的方案中,最小的b最大 的方案中的 b值.判一下\(f_i\)和m+s的大小关系即可. #include<algorithm> #include<cstring>

2020.3.1考试T1 多项式

出题人很凉心的把算法写成了题目名 首先我们可以发现每一维的贡献是独立的,这可以从 \(solve1\) 里看出来 然后我们可以考虑转化为 \(DP\) ,这可以从 \(solve2\) 里看出来 我们统计每一维能产生的贡献,就是 \(a\) 个 \(0\) 面, \(b\) 个 \(1\) 面, \(c\) 个 \(2\) 面这种形式,能写成一个多项式 \(ax^0+bx^1+cx^2\),而我们最终显然就是把所有的多项式都乘起来. 暴力一个一个乘就很 naive,分治 \(NTT\) 解决就好

2019OKR规划

转眼又一年过去了,回顾审视一年的得失,规划下一年的奋斗目标.Review And Planning,让全新的2019迎来全新的自己. O1 学习软件开发技术知识 KR1.1 阅读<CLR via C#(第四版)> KR1.2 阅读<代码整洁之道> KR1.3 阅读<VUE.js权威指南> KR1.4 阅读Python相关书籍1本 KR1.5 阅读<Microsoft.NET 企业级应用架构设计> KR1.6 阅读<.NET微服务:容器化.NET应用架构

【晨间日记】35计划第0004天(191206)

晨间日记:35计划第0004天(191206) 一.三早 1.早睡:11:30 2.早起:07:00 3.早读:英语口语练习.单词背诵 二.每日基础 1.晨间日记:每日早上写. 2.每日博客:每天至少写一篇博客(博客园.CSDN.简书). 3.每日学习:每天职业技能书籍至少学习一章. 4.每日阅读:每天阅读技术类博客 30 - 60 分钟. 5.学习计划:<操作系统>学习. 6.工作学习:PowerShell 学习. 三.昨日总结 1.晨间日记:完成 2.每日博客:[黑客基础]Windows

2020奕诚国家电网考试资料全套视频

链接:https://pan.baidu.com/s/1npAYuq7Yg6zSrdiQ55oVyA 提取码:ub4t 复制这段内容后打开百度网盘手机App,操作更方便哦 2020奕诚国家电网考试视频资料 综合(行测)(高清完整版) 2020奕诚国家电网考试视频资料 电路(高清完整版) 2020奕诚国家电网考试视频资料电工类 电分(高清完整版) 2020奕诚国家电网考试视频资料 继保(高清完整版) 2020奕诚国家电网考试视频资料 龙腾分科测试题讲解 电路 (高清完整版) 2020奕诚国家电网考

2020年出版专业技术人员职业资格考试,历年真题,考前复习,考试大纲,视频课程

各出版社.期刊社.新媒体单位.网络出版单位: 从2001年8月1日起,国家对出版专业技术人员实行职业资格制度,纳入全国专业技术人员职业资格制度的统一规划.同时在2016年3月10日,由国家新闻出版广电总局.中华人民共和国工业和信息化部联合发布的<网络出版服务管理规定>中,第二章第九条明确规定,从事网络出版服务单位,必须有8名以上具有<中华人民共和国出版专业技术人员职业资格证书>人员,其中中级以上人员不少于3名.<中华人民共和国出版专业技术人员职业资格证书>是传统出版行业