Codeforces 555C Case of Chocolate 其他
原文链接https://www.cnblogs.com/zhouzhendong/p/9272797.html
题目传送门 - CF555C
题意
给定一个 $n\times n(n\leq 10^9)$ 的方格阵列。
接下来,我们将从该方阵的副对角线开始进行一些操作。
操作 $"y\ x\ U"或"y\ x\ L"$ 分别表示一个人从第 $x$ 行第 $y$ 列开始走,$U$ 表示向上,$L$ 表示向左。保证初始位置在副对角线上面。
已经有人走过的不能再走,每次操作走到不能走为止。对于每次操作,输出能走几格。
下面是样例:
6 5
3 4 U
6 1 L
2 5 L
1 6 U
4 3 U
4
3
2
1
2
10 6
2 9 U
10 1 U
1 10 U
8 3 L
10 1 L
6 5 U
9
1
10
6
0
2
Pictures to the sample tests:

题解
由于向上和向左走是差不多的,所以我们这里只讲向上时的做法。
首先我们考虑特殊情况:
如果当前起始各自已经走过人了,那么输出 $0$ 。这个用 map 可以搞定。
对于向上的,我们在这个格子的左边分别找到离他最近的向上的和向左的行走记录。
考虑分两种情况讨论:


其中红色为当前位置,绿色为当前位置右侧第一个向上的记录。橙色为当前位置右侧的第一个向左记录。
蓝色为拦住绿色线段的线段。
这个只需要 set + lower_bound 就可以了。
代码还是比较短的。
代码
#include <bits/stdc++.h>
#define y1 __y1
using namespace std;
const int N=200005;
int n,q;
set <int> U,L;
map <int,int> u,l;
int main(){
scanf("%d%d",&n,&q);
U.clear(),L.clear(),u.clear(),l.clear();
U.insert(0),L.insert(0);
U.insert(n+1),L.insert(n+1);
u[0]=l[0]=n+1,u[n+1]=l[n+1]=0;
for (int i=1;i<=q;i++){
int x,y;
char ch[2];
scanf("%d%d%s",&y,&x,ch);
if (ch[0]=='L'){
if (u[y]||l[x]){
puts("0");
continue;
}
int x1=*L.upper_bound(x),y1=n+1-x1;
int y2=*--U.upper_bound(y),x2=n+1-y2;
if (y1<y2)
l[x]=x2-x;
else
l[x]=l[x1]+x1-x;
printf("%d\n",l[x]);
L.insert(x);
}
else {
if (l[x]||u[y]){
puts("0");
continue;
}
int x1=*--L.upper_bound(x),y1=n+1-x1;
int y2=*U.upper_bound(y),x2=n+1-y2;
if (x1>x2)
u[y]=y1-y;
else
u[y]=u[y2]+y2-y;
printf("%d\n",u[y]);
U.insert(y);
}
}
return 0;
}
Codeforces 555C Case of Chocolate 其他的更多相关文章
- codeforces 555c// Case of Chocolate// Codeforces Round #310(Div. 1)
题意:直角边为n的网格巧克力,一格为一块,选择斜边上一点,从左或上吃,直到吃到空气,称为一次操作.给出几个操作,问各能吃几块.如果x是当前要吃的横坐标,在已经吃过的中找x1>=x的第一个x1,即 ...
- Codeforces Round #310 (Div. 1) C. Case of Chocolate set
C. Case of Chocolate Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/555/ ...
- Codeforces 555 C. Case of Chocolate
\(>Codeforces \space 555 C. Case of Chocolate<\) 题目大意 : 有一块 \(n \times n\) 的倒三角的巧克力,有一个人要吃 \(q ...
- [Codeforces 555E]Case of Computer Network(Tarjan求边-双连通分量+树上差分)
[Codeforces 555E]Case of Computer Network(Tarjan求边-双连通分量+树上差分) 题面 给出一个无向图,以及q条有向路径.问是否存在一种给边定向的方案,使得 ...
- Codeforces Round #310 (Div. 1) C. Case of Chocolate (线段树)
题目地址:传送门 这题尽管是DIV1的C. . 可是挺简单的. .仅仅要用线段树分别维护一下横着和竖着的值就能够了,先离散化再维护. 每次查找最大的最小值<=tmp的点,能够直接在线段树里搜,也 ...
- Codeforces 689C. Mike and Chocolate Thieves 二分
C. Mike and Chocolate Thieves time limit per test:2 seconds memory limit per test:256 megabytes inpu ...
- CodeForces 689C Mike and Chocolate Thieves (二分+数论)
Mike and Chocolate Thieves 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/G Description ...
- Educational Codeforces Round 1 E. Chocolate Bar 记忆化搜索
E. Chocolate Bar Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/598/prob ...
- Educational Codeforces Round 1 E. Chocolate Bar dp
题目链接:http://codeforces.com/contest/598/problem/E E. Chocolate Bar time limit per test 2 seconds memo ...
随机推荐
- mysql优化——show processlist命令详解
SHOW PROCESSLIST显示哪些线程正在运行 不在mysql提示符下使用时用mysql -uroot -e 'Show processlist' 或者 mysqladmin pro ...
- 技术的热门度曲线:GHC
全球最大的 IT 咨询公司高德纳(Gartner),有一个"技术热门度曲线"模型(Gartner Hype Cycle). 该模型认为,一门技术的发展要经历五个阶段. (1)启 ...
- 安娜Anna:世界最快的超级伸缩的KVS, 秒杀Redis
伯克利 这个大学在计算机学术界.工业界的地位举足轻重,其中的AMP实验室曾开发出了一大批大获成功. 对计算机行业产生深远影响的分布式计算技术,包括 Spark.Mesos.Tachyon 等.作为AM ...
- Confluence 6 使用 JConsole 监控本地 Confluence
如果你遇到了一些特定的问题,或者你仅仅是希望在一个很短的时间内监控你 Confluence 的运行,你可以使用本地监控.本地监控将会对你的服务器性能产生影响,所以我们并不推荐你使用本地监控来长时间的监 ...
- NIO(五)
分散读取,聚集写入 package com.cppdy.nio; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import ...
- jq插件模板
!(function($,window, document, undefined){ function Plugin(ele,options){ //默认参数设置 this.defaults={ pa ...
- spring mvc底层(DispacherServlet)的简单实现
使用过spring mvc的小伙伴都知道,mvc在使用的时候,我们只需要在controller上注解上@controller跟@requestMapping(“URL”),当我们访问对应的路径的时候, ...
- 对<tr><td>标签里的input 循环取值
需求描述:单击table整行,跳转到具体的信息页面 关键就是获取整行的id,传给后台做查询,返回list 解决思路:用带参数函数传过去id,然后在js的函数中用$("#id"). ...
- HTML&javaSkcript&CSS&jQuery&ajax(五)
一.Framset标签定义了每个框架中的HTML文档, 1. <framset cols="25%,75%"> <frame src="frame_a. ...
- solt插槽简单使用实例
在父组件内可以定义方法,变量 等,还可以在父组件中使用呢. 样式可以在子组件里写,也可以在父组件写. 子组件: <template> <div class="admin-u ...