A. 表达式

题意

题解

将所有数字替换为A,运算符替换为O,然后不断合并(AOA),判断表达式最后是否为A即可。

注意将数字替换时判断有无前导零。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
bool no_lead_zero = true;
auto isop = [](char c) {
return c == '+' or c == '-' or c == '*' or c == '/';
};
auto replace_digit = [&]() {
vector<string> v;
for (int i = 0; i < int(s.size()); i++) {
if (isdigit(s[i])) {
int j = i + 1;
while (j < int(s.size()) and isdigit(s[j])) ++j;
v.push_back(s.substr(i, j - i));
s.replace(i, j - i, "A");
i = -1;
}
}
for (const auto &i : v) {
if (i[0] == '0' and i.size() > 1) no_lead_zero = false;
}
};
auto replace_op = [&]() {
for (int i = 0; i < int(s.size()); i++) {
if (isop(s[i])) {
s.replace(i, 1, "O");
i = -1;
}
}
};
auto replace_AOA = [&]() {
for (int i = s.find("(AOA)"); i != -1; i = s.find("(AOA)")) {
s.replace(i, 5, "A");
}
};
replace_digit();
replace_op();
replace_AOA();
cout << (no_lead_zero and s == "A" ? "Legal" : "Illegal") << "\n";
return 0;
}

C. 股票

题意

题解

将股值看作曲线,每次从最高峰向前加。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> a(n);
for (auto &x : a) cin >> x;
vector<int> p(n);
iota(p.begin(), p.end(), 0);
sort(p.begin(), p.end(), [&](int x, int y) {
return a[x] > a[y];
});
long long ans = 0;
vector<bool> vis(n);
for (auto i : p) {
for (int j = i; j >= 0 and not vis[j]; j--) {
ans += a[i] - a[j];
vis[j] = true;
}
}
cout << ans << "\n";
return 0;
}

F. 稳定婚姻问题

题意



题解

模拟。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
multiset<string> female;
set<int> male;
map<int, string> match;
vector<int> boy;
for (int i = 0; i < 2 * n; i++) {
string a, b, c;
cin >> a >> b >> c;
if (c[0] == 'F') {
if (male.size()) {
match[*male.begin()] = b + " " + a;
male.erase(male.begin());
} else {
female.insert(b + " " + a);
}
} else {
boy.push_back(i);
if (female.size()) {
match[i] = *female.begin();
female.erase(female.begin());
} else {
male.insert(i);
}
}
}
for (const auto &i : boy) {
const auto &s = match[i];
int pos = s.find(' ');
cout << s.substr(pos + 1) << ' ' << s.substr(0, pos) << "\n";
}
return 0;
}

J. 质因子个数

题意

题解

打表发现数据范围内的一个数最多有8个不同的素因子,那么就很好算了,计算每个数的不同素因子个数并将这个数存到对应的个数中,对于每次给出的区间二分查找左右端点即可。

代码

#include <bits/stdc++.h>
using namespace std;
constexpr int N = 1e7 + 10; int p[N];
vector<vector<int>> v(9); inline void Init() {
for (int i = 2; i < N; i++) {
if (p[i]) continue;
for (int j = i; j < N; j += i) {
p[j] = i;
}
}
for (int i = 1; i < N; i++) {
int n = i, cnt = 0;
for (int j = p[n]; j != 0; j = p[n]) {
while (n % j == 0) n /= j;
++cnt;
}
v[cnt].push_back(i);
}
} int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
Init();
int t;
cin >> t;
while (t--) {
long long l, r, k;
cin >> l >> r >> k;
if (k > 8) {
cout << 0 << "\n";
continue;
}
int i = lower_bound(v[k].begin(), v[k].end(), l) - v[k].begin();
int j = upper_bound(v[k].begin(), v[k].end(), r) - v[k].begin();
cout << j - i << "\n";
}
return 0;
}

2020年10月ICPC & 天梯赛 选拔赛【ACFJ】的更多相关文章

  1. selenium-自动化测试51job网站(MacOS + Safari)2020年10月6日

    登录 51job ,http://www.51job.com 输入搜索关键词 "python", 地区选择 "杭州"(注意,如果所在地已经选中其他地区,要去掉) ...

  2. [2020年10月28日普级组]1406.SMRTFUN

    S M R T F U N SMRTFUN SMRTFUN 题目描述 "又肥又温顺,又大又笨,他们看起来那么傻,而且也不有趣--" 这些牛想要证明,他们是既有趣,又聪明的.为了这样 ...

  3. [2020年10月28日普级组]1408.MSWORLD

    1408. M S W O R L D 1408.MSWORLD 1408.MSWORLD 题目描述 Bessie , Farmer John 的优选牛,刚刚获得了一个牛科动物选美比赛的冠军!并得到了 ...

  4. AMD Ryzen 5000系列桌面处理器 2020年10月8日发布

    AMD Ryzen 5 5600X 6核心12线程,基础频率3.7GHz,最大频率4.6GHz,二级缓存3MB,三级缓存32MB,不锁频,支持DDR4 3200MHz内存,台积电7纳米工艺,PCIe ...

  5. [2020年10月28日普级组]1405.小B浇花

    区 间 和 的 和 区间和的和 区间和的和 题目解析 就直接模拟,从最低的花的高度向最高的花的高度枚举,如果当循环变量的值到达了顶峰,但还有花的数量大于2的,就把循环上线加一(所以数组要开大些) Co ...

  6. ADO.NET数据访问基础与综合应用2020年10月31日20:17:09学习笔记

    四.创建数据表 1.数据表的名称. 2.表中的字段名.数据类型.是否可以为空.字段的约束.必备的字段(通常会有一个ID,表示实体的唯一性:可以直接手写,也可以使用种子标识自动生成,给定起始值,给定增长 ...

  7. T-SQL创建数据库常用方法2020年10月29日20:12:04网课笔记

    2.接口的作用 第一.方便框架的设计.利于团队的开发. 第二.方便项目拓展.高内聚.低耦合. 3.反射 [1]反射的理解:通过读取程序集的信息,找到相关的类型和类型的成员,也可以得到相关的对象.而这种 ...

  8. 10月1日之后,你新建的GitHub库默认分支不叫「master」了

    从 2020 年 10 月 1 日开始,GitHub 上的所有新库都将用中性词「main」命名,取代原来的「master」,因为后者是一个容易让人联想到奴隶制的术语. 这个决定并不是最近才做出的.今年 ...

  9. JZOJ2020年10月5日提高B组反思

    2020年10月5日提高B组反思 T1 考试的时候想简单了 觉得把跟没有攻占的点相连的边留下就可以了 没有考虑到最小 WA&RE 10 T2 没有思路 就直接从中间往后枚举分解处 蜜汁错误 W ...

随机推荐

  1. Es5数组新增的方法及用法

    1.forEachforEach是Array新方法中最基本的一个,就是遍历,循环.例如下面这个例子: [1, 2 ,3, 4].forEach(alert);等同于下面这个传统的for循环: var ...

  2. LeetCode841 钥匙和房间

    有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间. 在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i ...

  3. 如何利用Intellij Idea搭建python编译运行环境 (转)

    首先进入Intellij Idea的官方网站:点击打开链接 点击download,选择旗舰版进行下载.网上的破解教程很多,也可以注册一个学生账号拿到一年的免费试用权. 安装过程不再细说,第一次打开选择 ...

  4. rename 表名

    rename table 旧表名1 to 新表名1,旧表名2 to 新表名2;

  5. 【Oracle】生成随机数

    Oracle生成随机数: dbms_random.string(opt, 6)     --括号里的opt要从下面的列表中选择,数字代表要生成几位随机数,如果是1位的话,就改成1 以此类推 opt可取 ...

  6. CMU数据库(15-445)Lab1-BufferPoolManager

    0. 关于环境搭建请看 https://www.cnblogs.com/JayL-zxl/p/14307260.html 1. Task1 LRU REPLACEMENT POLICY 0. 任务描述 ...

  7. Docker 如何动态修改容器端口映射

    Docker端口映射往往是Docker Run命令时通过-p将容器内部端口映射到宿主机的指定端口上,一般来说容器的端口所对应的端口是提前确定需要映射的.但是有些情况下不得不需要临时映射端口,例如Doc ...

  8. Linux安装Oracle数据库SQLPlus客户端

    安装 RPM包下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html ...

  9. jmeter-并发及常数吞吐量定时器设定

  10. 三. SpringCloud服务注册与发现

    1. Eureka 1.1 Eureka理解 什么是服务治理 Spring Cloud封装了Netflix公司开发的Eurkeka模块来实现服务治理 在传统的rpc远程调用框架中,管理每个服务与服务之 ...