Educational Codeforces Round 132 (Rated for Div. 2)
Educational Codeforces Round 132 (Rated for Div. 2)
A. Three Doors
简述
题意: 有三扇门(1~3), 其中两扇门后面有对应标号门的钥匙,现在手上有一把标号为n的钥匙,是否能打开所有的门?
判断现在有的钥匙 对应的门后 是否有钥匙即可,就是套娃 不是
Code
#define OK cout << (ok ? "YES" : "NO") << endl
void testcase() {
int n, ok = 0;
cin >> n;
vector<int> a(4);
for (int i = 1; i <= 3; ++i) cin >> a[i];
if (a[n] and a[a[n]]) ok = 1;
cout << (ok ? "YES" : "NO") << endl;
}
B. Also Try Minecraft
简述
题意: n个有高度的塔 ,向上飞不扣血,向下飞会扣血,每次询问判断从一个塔到另一个塔所扣的最少血
直接走过去肯定比来回走扣的血少,所以直接统计在询问的区间内会扣得血就行,前缀和预处理一下,由于可能从右向左走,要从前和从后做两遍前缀和
Code
int n, m;
cin >> n >> m;
vector<ll> a(n + 1), b(n + 1), c(n + 1);
for (int i = 1; i <= n; ++i) cin >> a[i];
for (int i = 2; i <= n; ++i) b[i] = b[i - 1] + max(0ll, a[i - 1] - a[i]);
for (int i = n - 1; i >= 1; --i) c[i] = c[i + 1] + max(0ll, a[i + 1] - a[i]);
while (m--) {
int x, y;
cin >> x >> y;
if (x < y) cout << b[y] - b[x] << endl;
else cout << c[y] - c[x] << endl;
}
C. Recover an RBS
简述
题意: 一个括号序列,只含' ( ' , ' ) ' , ' ? ' 三种字符,可以将?替换为括号,是否只有唯一一种方案使得这个字符串的每个括号能匹配 也就是使它变为( ( ) ) , ( ) 这种样子 题目保证最少有一种方案是它成为括号序列
要点1 : 题目保证的最少有一种方案 这意味着最后左括号和右括号都等于字符串长度的一半
要点2 : 括号序列 意味着 对于字符串的每个位置之前的右括号个数一定小于等于左括号个数
先将 '?' 替换得到一组最简单的括号序列 尝试交换所能替换的最后一个 左括号 和其之后的右括号
看替换后的序列是否为括号序列,如果是括号序列说明方案数不唯一,输出NO
Code
void testcase() {
string s; cin>>s;
int cntl=0,cntr=0;
vector<int>a;
for(int i=0;i<s.length();++i){
if( s[i] == '(' ) ++cntl;
else if(s[i]==')') ++cntr;
else a.emplace_back(i);
}
int mid=s.length()>>1;
for(int i=0,en=(int)a.size();i<en;++i){
if( i < mid-cntl ) s[a[i]] = '(';
else s[a[i]] = ')' ;
}
bool ok=true;
if(cntl<mid and cntr<mid){
swap(s[a[mid-cntl-1]],s[a[mid-cntl]]);
int cnt=0;
for(int i=0;i<s.length();++i){
if(s[i]=='(')++cnt;
else --cnt;
if(cnt<0) break;
}
if(cnt==0)ok=false;
}
cout << (ok ? "YES" : "NO") << endl;
}
D. Rorororobot
简述
机器人只能上下左右走固定的k步 每一列有从下往上的一定长度的障碍 不能走出界,是否可以从一个点到另一个点
先不看障碍判断是否可达 : 用%来判断 再看能不能找到一条路径走过去
判断是否能走过障碍:假如两个点之间有一堵高墙,每次只能跨k的距离 能不能走到最高的这堵墙与边界之间,如果可以走到就可达
Code
#define OK cout << (ok ? "YES" : "NO") << endl
template <typename T, class F = function<T(const T&, const T&)>>
class SparseTable {
public:
int n;
vector<vector<T>> mat;
F func;
SparseTable(const vector<T>& a, const F& f) : func(f) {
n = static_cast<int>(a.size());
debug(n);
int max_log = 32 - __builtin_clz(n);
mat.resize(max_log);
mat[0] = a;
for (int j = 1; j < max_log; j++) {
mat[j].resize(n - (1 << j) + 1);
for (int i = 0; i <= n - (1 << j); i++) {
mat[j][i] = func(mat[j - 1][i], mat[j - 1][i + (1 << (j - 1))]);
}
}
}
T get(int from, int to) const {
assert(0 <= from && from <= to && to <= n - 1);
int lg = 32 - __builtin_clz(to - from + 1) - 1;
return func(mat[lg][from], mat[lg][to - (1 << lg) + 1]);
}
};
void testcase() {
int n, m;
cin >> n >> m;
vector<int> a(m);
for (int& i : a) cin >> i;
SparseTable<int> st(a, [&](int i, int j) { return max(i, j); });
int q;
cin >> q;
while (q--) {
int sx, sy, tx, ty, k;
cin >> sx >> sy >> tx >> ty >> k;
int x = abs(sx - tx), y = abs(sy - ty);
bool ok = false;
if (x % k and y % k) {
OK;
continue;
}
int now = tx + (n - tx - (n - tx) % k);
if (sy > ty) swap(sy, ty);
int mx = st.get(sy - 1, ty - 1);
if (now > mx) ok = true;
OK;
}
}
EF 待补
Educational Codeforces Round 132 (Rated for Div. 2)的更多相关文章
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...
- Educational Codeforces Round 63 (Rated for Div. 2) 题解
Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...
- Educational Codeforces Round 39 (Rated for Div. 2) G
Educational Codeforces Round 39 (Rated for Div. 2) G 题意: 给一个序列\(a_i(1 <= a_i <= 10^{9}),2 < ...
- Educational Codeforces Round 48 (Rated for Div. 2) CD题解
Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...
随机推荐
- 104_Power Query 数据库条件查询
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载 1.应用场景 底层数据在数据库(sql server数据库,其他数据库同理,下文不再说明.)中,Excel中有查询的字段,需要 ...
- Vue路由的安装
1.在Vue ui中插件中找到添加vue-router 2.安装以后,项目中的会自动完成配置. 3.在store中的index.js配置路由页面以及路径.
- 英语资源及其APP推荐
step1:记单词 a,说到背单词常规方法是拿着一本单词书一个一个往下背.该种方法不仅枯燥且效率极低. b,app辅助记忆.在此就我用过的两个app做简述.第一个是百词斩 百词斩:功能主打图片记忆,并 ...
- Web自动化定位方法以及常用便捷操作
很遗憾现在才开始给大家逐步分享自动化教程,原本计划着将现有的接口以及app.pc网页端进行自动化处理后再逐步给大家好好分享一下,由于当前实在没必要自动化操作了,所以临时用脑海中的知识再为大家继续更一篇 ...
- 【Redis】skiplist跳跃表
有序集合Sorted Set zadd zadd用于向集合中添加元素并且可以设置分值,比如添加三门编程语言,分值分别为1.2.3: 127.0.0.1:6379> zadd language 1 ...
- opencv-python获取视频信息
代码 import cv2 if __name__ == '__main__': # 读取视频 capture = cv2.VideoCapture('./videos/person.mp4') # ...
- idea运行Tomcat出现 Address localhost:8080 is already in useAddress localhost:8080 is already in use
使用IDEA运行 tomcat时出现 Address localhost:8080 is already in use,就很奇怪,我明明只有这一个程序呀,怎么还会被占用.后来想想可能就是被其他进程占用 ...
- 关于Vue移动端框架(Muse-UI)的使用(说明书,针对不愿看文档的童鞋)
一.安装 1.npm安装 npm i muse-ui -S 或者 CDN安装 <link rel="stylesheet" href="https://unpkg. ...
- JavaScript易错知识点
JavaScript易错知识点整理1.变量作用域上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. 上方的函数作用域中虽然声明并赋值了a,但位于console之下 ...
- lvm逻辑卷创建及使用
创建逻辑卷 pvcreate /dev/md0 pvs 查看创建的pv组 pvdisplay /dev/md0 查看磁盘详细信息 添加vg组: 创建vg组: vgcreate vg1 /dev/md0 ...