比赛链接:https://atcoder.jp/contests/abc165/tasks

A - We Love Golf

题意

区间 $[a, b]$ 中是否存在 $k$ 的倍数。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
int k, a, b; cin >> k >> a >> b;
for (int i = a; i <= b; i++) {
if (i % k == 0) {
cout << "OK";
return 0;
}
}
cout << "NG";
}

B - 1%

题意

一开始在银行存有 $100$ 元,年利率为 $\lfloor \frac{n}{100} \rfloor$,问多少年后存款不少于 $x$ 元。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
long long x; cin >> x;
long long sum = 100;
for (int i = 1; i < INT_MAX; i++) {
sum += sum / 100;
if (sum >= x) {
cout << i << "\n";
return 0;
}
}
}

C - Many Requirements

题意

构造一个长为 $n$ 的数组 $A$,其中 $1 ≤ A_1 ≤ A_2 ≤ ... ≤ A_n ≤ m$。

另有数组 $a,b,c,d$,如果 $A_{b_i} - A_{a_i} = c_i$,则该数组的价值加上 $d_i$ ,求能构造出的数组的最大价值。

题解

枚举所有情况即可。

代码

#include <bits/stdc++.h>
using namespace std; int n, m, q;
int a[50], b[50], c[50], d[50];
int A[10], ans; void dfs(int dep, int pre) {
if (dep == n) {
int sum = 0;
for (int i = 0; i < q; i++)
if (A[b[i]] - A[a[i]] == c[i]) sum += d[i];
ans = max(ans, sum);
return;
}
for (int i = pre; i <= m; i++) {
A[dep] = i;
dfs(dep + 1, i);
}
} int main() {
cin >> n >> m >> q;
for (int i = 0; i < q; i++) {
cin >> a[i] >> b[i] >> c[i] >> d[i];
--a[i], --b[i];
}
dfs(0, 1);
cout << ans << "\n";
}

D - Floor Function

题意

求 $max( \lfloor \frac{Ax}{B}  \rfloor - A \lfloor \frac{x}{B} \rfloor )$ 。

题解

设 $x = cB + d\ (0≤c,\ 0≤d<B)$

$\ \ \ \ \lfloor \frac{Ax}{B}  \rfloor - A \lfloor \frac{x}{B} \rfloor$

$=\lfloor \frac{A(cB+d)}{B} \rfloor - A \lfloor \frac{cB+d}{B} \rfloor$

$=Ac + \lfloor \frac{Ad}{B} \rfloor - Ac - A \lfloor \frac{d}{B} \rfloor$

$=\lfloor \frac{Ad}{B} \rfloor - A \lfloor \frac{d}{B} \rfloor$

$=\lfloor \frac{Ad}{B} \rfloor$

即求 $max(\lfloor \frac{Ad}{B} \rfloor)$,取 $d$ 的最大值即可。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
long long a, b, n; cin >> a >> b >> n;
cout << a * min(b - 1, n) / b << "\n";
}

E - Rotation Matching

题意

有 $n$ 个选手,$m$ 个比赛场地,为每 $m$ 个比赛场地指定一对选手的编号(一个编号只能出现在一个比赛场地),来保证在之后的 $n$ 轮比赛中,所有选手不会与同一选手比赛两次,每轮比赛后所有选手编号加 $1$,编号 $n+1$ 的变为 $1$。

题解

一个选手最多的情况是要与 $m$ 个人一人比一次,所以 $m$ 对编号应取 $m$ 个不同的间隔。

即在 $[1, n]$ 中取 $m$ 对数,每对数间隔不同的长度。

代码

待填

F - LIS on Tree

题意

一棵有 $n$ 个结点的树,每个结点有一个值,输出每个从根节点 $1$ 到其他点最短路的值序列中 $LIS$ 的长度。

题解

维护一个最长单调序列即可。

代码一

#include <bits/stdc++.h>
using namespace std; const int M = 2e5 + 100;
vector<int> e[M];
int a[M], ans[M];
int b[M], len; void dfs(int u, int pre) {
int id = lower_bound(b, b + len, a[u]) - b;
int del = -1;
if (id == len) ++len;
else del = b[id];
b[id] = a[u];
ans[u] = len;
for (auto v : e[u]) {
if (v != pre) {
dfs(v, u);
}
}
if (del == -1) --len;
else b[id] = del;
} int main() {
int n; cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n - 1; i++) {
int u, v; cin >> u >> v;
--u, --v;
e[u].push_back(v);
e[v].push_back(u);
}
dfs(0, -1);
for (int i = 0; i < n; i++) cout << ans[i] << "\n";
}

代码二

再贴一下用 $set$ 的做法,需要注意一些语句的前后顺序。

#include <bits/stdc++.h>
using namespace std; const int M = 2e5 + 100;
vector<int> e[M];
int a[M], ans[M];
set<int> st; void dfs(int u, int pre) {
auto it = st.lower_bound(a[u]);
int del = -1;
if (it != st.end()) {
del = *it;
st.erase(it);
}
st.insert(a[u]);
ans[u] = st.size();
for (auto v : e[u]) {
if (v != pre) {
dfs(v, u);
}
}
st.erase(a[u]);
if (del != -1) st.insert(del);
} int main() {
int n; cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n - 1; i++) {
int u, v; cin >> u >> v;
--u, --v;
e[u].push_back(v);
e[v].push_back(u);
}
dfs(0, -1);
for (int i = 0; i < n; i++) cout << ans[i] << "\n";
}

AtCoder Beginner Contest 165的更多相关文章

  1. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  2. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  3. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  7. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  8. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

随机推荐

  1. Java JVM——9.方法区

    前言 方法区是运行时数据区的最后一个部分: 从线程共享与否的角度来看: 大家可能在这里有些疑惑,方法区和元空间的关系到底是怎样的?请往下看,下面会为大家解惑. 栈.堆.方法区的交互关系 下面就涉及了对 ...

  2. 使用msys2在window下构建和使用Linux的软件

    目录 前言 安装 使用 总结 前言 在window下构建Linux编译环境是很常见的,以前用过mingw弄过差不多的环境. 但是使用msys2后就根本停不下来咯,太好用咯. 安装 去官网下载吧,安装跟 ...

  3. 【Oracle】dump函数用法

    Oracle dump函数的用法 一.函数标准格式: DUMP(expr[,return_fmt[,start_position][,length]]) 基本参数时4个,最少可以填的参数是0个.当完全 ...

  4. 【ASM】查看ASM磁盘组剩余容量和总容量

    col total_size for a10; col free_size for a20; select name,total_mb/1024 || 'G' as total_size , free ...

  5. 网件wndr4300 ttl连接

    路由成砖而还能进入cfe或uboot等情况下,可以通过ttl快速救砖. r4300主板有TTL的接线脚,脚的顺序可以找在OpenWrt的wiki上找到. 如下图4个TTL针在左下角,从下往上分别是GN ...

  6. vxfs(Veritas File System)扩充目录大小

    1.新增加一个磁盘并初始化 # vxdisk list # vxdisksetup -i 3pardata0_22 2.将新增加的磁盘合并到磁盘组中 # vxdg -g testdg01 adddis ...

  7. ALV中layout布局控制详解

    参数的结构为SLIS_LAYOUT_ALV.结构中比较常用的字段如下: no_colhead      隐藏列标题          值为X或空 no_hotspot     headings不作为热 ...

  8. Java编程开发之浅析Java引用机制

    对于一个Java的对象而言,存储主要分为两种,一种是内存堆(Heap),内存堆是无序的,主要用来存放创建的Java对象:一种是内存栈(Stack),主要用来存放Java引用,然后在管理过程使用Java ...

  9. SDNU_ACM_ICPC_2021_Winter_Practice_1st [个人赛] 2021.1.19 星期二

    SDNU_ACM_ICPC_2021_Winter_Practice_1st [个人赛] K - Color the ball 题意: 有n个气球,每次都给定两个整数a,b,给a到b内所有的气球涂一个 ...

  10. 24V降压5V芯片,5A,4.5V-30V输入,同步降压调节器

    PW2205开发了一种高效率的同步降压DC-DC转换器5A输出电流.PW2205在4.5V到30V的宽输入电压范围内工作集成主开关和同步开关,具有非常低的RDS(ON)以最小化传导损失.PW2205采 ...