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. vsCode scss安装

    点击在settings.json中编辑写入代码: { /** Easy Sass 插件 **/ "easysass.formats": [ { "format" ...

  2. spark学习(1)---dataframe操作大全

    一.dataframe操作大全 https://blog.csdn.net/dabokele/article/details/52802150 https://www.jianshu.com/p/00 ...

  3. js识别手机访问自动跳转到相应页面

    /* * 智能机浏览器版本信息: * */ var browser={ versions:function(){ var u = navigator.userAgent, app = navigato ...

  4. UVA - 514 Rails(栈模拟)

    题目: 给出一个序列,问将1,2,3,4……按从小到大的顺序入栈,能否得到给出的序列. 思路: 用stack模拟就可以了. 当前的cnt如果小于a[i],就将cnt入栈,否则就判断栈顶是不是和a[i] ...

  5. MySQL练习题及答案(复习)

    新建一个叫做 review 的数据库,将测试数据脚本导进去.(可以使用Navicat查询功能) /* Navicat MySQL Data Transfer Source Server : DB So ...

  6. PHP 锁机制

    应用环境 解决高并发,库存为负数的情况 阻塞模式 如果其他进程已经加锁文件,当前进程会一直等其他进程解锁文件后继续执行 flock($fp, LOCK_EX) // 文件锁 非阻塞模式 如果其他进程已 ...

  7. Python基础(八)装饰器

    今天我们来介绍一下可以提升python代码逼格的东西——装饰器.在学习装饰器之前我们先来复习一下函数的几个小点,方便更好的理解装饰器的含义. 一.知识点复习 1, 在函数中f1和f1()有什么不同,f ...

  8. gdb个人使用记录

    参考博客:https://blog.csdn.net/zdy0_2004/article/details/80102076 安装gdb,查看版本确认成功: sudo apt install gdb g ...

  9. RabbitMQ-高级特性(六)

    存储机制 待... 消息结构 惰性队列 惰性队列会尽可能将消息存入到磁盘中,消费者消费相应的消息才会加载到内存,它可以支持更长的队列 默认情况下生产者消息会尽可能存储到内存中就算设置持久化消息 也会再 ...

  10. Ubuntu安装vnc 解决乱码

    https://blog.csdn.net/dddxxxx/article/details/53580789 https://www.centos.bz/2017/12/%E8%A7%A3%E5%86 ...