A:暴力模拟

#include<bits/stdc++.h>
using namespace std;
int a, b;
int main()
{
scanf("%d%d", &a, &b);
int delta = , x = ;
while()
{
if(x == )
{
if(a < delta)
{
puts("Vladik");
return ;
}
a -= delta; ++delta;
x ^= ;
}
else
{
if(b < delta)
{
puts("Valera");
return ;
}
b -= delta; ++delta;
x ^= ;
}
}
return ;
}

B:先写了个sort竟然pp了,过了十分钟感觉不太好,又写了个基数排序

#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, m;
int p[N], a[N], b[N];
bool cp(int i, int j) { return i < j; }
int main()
{
scanf("%d%d", &n, &m);
for(int i = ; i <= n; ++i) scanf("%d", &p[i]);
while(m--)
{
int l, r, x, temp; scanf("%d%d%d", &l, &r, &x);
for(int i = l; i <= r; ++i) a[i] = p[i], b[p[i]] = ;
temp = p[x];
int pos1 = l, pos2 = ;
while(pos1 <= r)
{
while(!b[pos2]) ++pos2; b[pos2] = ;
a[pos1] = pos2; ++pos1;
}
if(a[x] == temp) puts("Yes"); else puts("No");
}
return ;
}

C:dp什么的滚吧。。。dp[i]表示到i的最大值,那么我们枚举i-1每个数选不选,转移一下即可

#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n;
int a[N], l[N], r[N], f[N], vis[N];
int main()
{
scanf("%d", &n);
for(int i = ; i <= n; ++i)
{
scanf("%d", &a[i]);
r[a[i]] = i;
if(!l[a[i]]) l[a[i]] = i;
}
for(int i = ; i <= n; ++i)
{
f[i] = max(f[i], f[i - ]); int cur = ;
memset(vis, , sizeof(vis));
int last = << ;
for(int j = i; j >= ; --j)
{
if(last == j) f[i] = max(f[i], f[j] + cur);
if(r[a[j]] > i) break;
if(!vis[a[j]])
{
cur ^= a[j];
vis[a[j]] = ;
last = min(last, l[a[j]] - );
}
}
}
printf("%d\n", f[n]);
return ;
}

D:没看懂题目

E:很不错的一道题 我们用线段树维护每一层的值和并查集 然后查询的时候把并查集复原合并 太巧妙了 这个并查集复原想了很长时间 思路是这个样子的:因为对于两块东西 原来是不相连的

但是build完和query完并查集都会变 那么我们在build的时候用并查集维护每个节点的连通性 保存两侧的当前并查集中的根是谁。 查询的时候把根的fa赋成自己 因为这个fa代表了原来的连通块

然后之后的节点合并改变了根 那么我们想要回到原来的状态把根赋成单独的一块就行了 然后要注意更新ret要在外面更新 因为可能下面和上面会连接 否则并查集不能及时地更新

#include<bits/stdc++.h>
using namespace std;
#define id(i, j) (i - 1) * m + j
const int N = ;
struct data {
int sum, l[], r[], L, R;
} tree[N];
int n, m, q;
int fa[N], a[][N];
int find(int x)
{
return fa[x] == x ? x : fa[x] = find(fa[x]);//fa[x] = find(fa[x]);
}
void connect(int x, int y)
{
int a = find(x), b = find(y);
if(a == b) return;
fa[a] = b;
}
data merge(data x, data y, int mid)
{
if(!x.sum) return y;
if(!y.sum) return x;
data ret;
ret.sum = x.sum + y.sum;
for(int i = ; i <= n; ++i)
{
fa[x.l[i]] = x.l[i];
fa[x.r[i]] = x.r[i];
fa[y.l[i]] = y.l[i];
fa[y.r[i]] = y.r[i];
}
for(int i = ; i <= n; ++i)
if(a[i][mid] == a[i][mid + ])
{
if(find(x.r[i]) != find(y.l[i])) connect(x.r[i], y.l[i]), --ret.sum;
}
for(int i = ; i <= n; ++i)
{
ret.l[i] = find(x.l[i]);
ret.r[i] = find(y.r[i]);
}
ret.L = x.L; ret.R = y.R;
return ret;
}
void build(int l, int r, int x)
{
if(l == r)
{
for(int i = ; i <= n; ++i)
if(a[i][l] == a[i - ][l])
{
fa[id(i, l)] = tree[x].l[i] = tree[x].r[i] = tree[x].l[i - ];
}
else fa[id(i, l)] = tree[x].l[i] = tree[x].r[i] = id(i, l), ++tree[x].sum;
tree[x].L = l; tree[x].R = r;
return;
}
int mid = (l + r) >> ;
build(l, mid, x << ); build(mid + , r, x << | );
tree[x] = merge(tree[x << ], tree[x << | ], mid);
}
data query(int l, int r, int x, int a, int b)
{
if(l > b || r < a) return tree[];
if(l >= a && r <= b)
{
for(int i = ; i <= n; ++i)
fa[id(i, l)] = tree[x].l[i], fa[id(i, r)] = tree[x].r[i];
return tree[x];
}
int mid = (l + r) >> ;
data L = query(l, mid, x << , a, b);
data R = query(mid + , r, x << | , a, b);
return merge(L, R, mid);
}
int main()
{
scanf("%d%d%d", &n, &m, &q);
for(int i = ; i <= n; ++i)
for(int j = ; j <= m; ++j) scanf("%d", &a[i][j]);
build(, m, );
while(q--)
{
int l, r; scanf("%d%d", &l, &r);
printf("%d\n", query(, m, , l, r).sum);
}
return ;
}

codeforces round #416 div2的更多相关文章

  1. codeforces round 416 div2 补题 CF 811 A B C D E

    A. Vladik and Courtesy 水题略过 #include<cstdio> #include<cstdlib> #include<cmath> usi ...

  2. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  3. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  4. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  5. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  6. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  7. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  8. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  9. Codeforces Round #359 div2

    Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...

随机推荐

  1. 2019西安多校联训 Day2

    试题链接:http://www.accoders.com/contest.php?cid=1894   考试密码请私信; T1 残忍WA 0,明明就是一道非常菜的字符串QAQ 思路:一共找四种东西,A ...

  2. <MyBatis>入门二 全局配置文件

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  3. (四)Python3 循环语句——for

    for循环的一般格式如下: for <variable> in <sequence>: <statements> else: <statements> ...

  4. LVS集群的三种工作模式

    LVS的三种工作模式: 1)VS/NAT模式(Network address translation) 2)VS/TUN模式(tunneling) 3)DR模式(Direct routing) 1.N ...

  5. Vuex实践小记

    1.目录结构 2.开始(安装vuex) npm install vuex --save 3.编辑store/index.js(创建一个Vuex.store状态管理对象) import Vue from ...

  6. 洛谷 2055 BZOJ 1433 [ZJOI2009]假期的宿舍

    [题解] 既然是一人对应一床,那么显然可以用二分图匹配来做.俩人认识的话,如果其中一个a是在校学生,另一个b不回家,b就可以向a的床连边(a,b当然也可以是同一个人). 然后如果最大匹配数大于等于需要 ...

  7. [luoguP1196] 银河英雄传说(并查集)

    传送门 记录 up[x] 表示 x 上方有多少个 all[x] 表示当前连通的有多少个 find 的时候 和 合并的时候 更新一下即可 ——代码 #include <cstdio> #in ...

  8. [bzoj1001]狼爪兔子[平面图的最小割等于其对偶图的最短路]

    一定要仔细算内存,,,又少写一个零.. #include <bits/stdc++.h> using namespace std; template<const int _n,con ...

  9. Mysql优化和执行计划

    SQL优化准则 禁用select * 使用select count(*) 统计行数 尽量少运算 尽量避免全表扫描,如果可以,在过滤列建立索引 尽量避免在where子句对字段进行null判断 尽量避免在 ...

  10. cogs——1298. 通讯问题

    1298. 通讯问题 ★★   输入文件:jdltt.in   输出文件:jdltt.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 一个篮球队有n个篮球队员,每个队员 ...