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

A - Calc

题意

给出一个正整数 $a$,计算 $a + a^2 + a^3$ 。($1 \le a \le 10$)

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
int a; cin >> a;
cout << a + a * a + a * a * a;
}

B - Minor Change

题意

给出两个等长的字符串 $s$ 和 $t$,每次可以替换 $s$ 中的一个字符,问使 $s$ 和 $t$ 相等至少要替换多少字符。

题解

不同的字符是一定要替换的。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
string s, t; cin >> s >> t;
int cnt = 0;
for (int i = 0; i < s.size(); i++)
if (s[i] != t[i]) ++cnt;
cout << cnt << "\n";
}

C - Tsundoku

题意

有两摞书,一摞有 $n$ 本,从上至下每本需阅读 $a_i$ 分钟,一摞有 $m$ 本,从上至下每本需阅读 $b_i$ 分钟,问最多能在 $k$ 分钟内读多少本书。

题解

计算两摞书阅读时长的前缀和,枚举从第一摞书中读多少本,余下的时间用二分或双指针查找能在第二摞书中读多少本。

代码一

二分

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
int main() {
int n, m, k; cin >> n >> m >> k;
ll pre_a[n + 1] = {};
for (int i = 0; i < n; i++) {
int x; cin >> x;
pre_a[i + 1] = pre_a[i] + x;
}
ll pre_b[m + 1] = {};
for (int i = 0; i < m; i++) {
int x; cin >> x;
pre_b[i + 1] = pre_b[i] + x;
}
int ans = 0;
for (int i = 0; i < n + 1; i++) {
ll ex = k - pre_a[i];
if (ex >= 0) {
int j = upper_bound(pre_b, pre_b + m + 1, ex) - pre_b - 1;
ans = max(ans, i + j);
}
}
cout << ans << "\n";
}

代码二

双指针

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
int main() {
int n, m, k; cin >> n >> m >> k;
ll pre_a[n + 1] = {};
for (int i = 0; i < n; i++) {
int x; cin >> x;
pre_a[i + 1] = pre_a[i] + x;
}
ll pre_b[m + 1] = {};
for (int i = 0; i < m; i++) {
int x; cin >> x;
pre_b[i + 1] = pre_b[i] + x;
}
int ans = 0;
for (int i = 0, j = m; i < n + 1; i++) {
ll ex = k - pre_a[i];
if (ex >= 0) {
while (j >= 0 and pre_b[j] > ex) --j;
ans = max(ans, i + j);
}
}
cout << ans << "\n";
}

D - Sum of Divisors

题意

设 $f_{(x)}$ 为 $x$ 正因子的个数。计算 $\sum_{i = 1}^n i \times f_{(i)}$ 。

题解

筛得每个数的 $f_{(x)}$,求和即可。

代码一

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
const int N = 1e7 + 10; ll f[N]; int main() {
int n; cin >> n;
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j += i)
++f[j];
ll ans = 0;
for (int i = 1; i <= n; i++)
ans += i * f[i];
cout << ans << "\n";
}

代码二

代码一简化而得

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
int main() {
int n; cin >> n;
ll ans = 0;
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j += i)
ans += j;
cout << ans << "\n";
}

E - NEQ

题意

给出 $n, m$,计算有多少对大小为 $n$ 的数列 $a, b$ 满足:

  • $1 \le a_i, b_i \le m$
  • $a_i \neq a_j\ \ \ if\ \ \ i \neq j$
  • $b_i \neq b_j\ \ \ if\ \ \ i \neq j$
  • $a_i \neq b_i$

题解

\begin{equation} A_m^n ( \sum_{i = 0}^n (-1)^{i} C_n^i A_{m - i}^{n - i}) \nonumber \end{equation}

  • $A_m^n$,$m$ 个数排 $n$ 个位置,即合法的 $a$ 的个数;
  • $\sum$,对于每个合法的 $a$ 来说,合法的 $b$ 的个数;
    • $(-1)^i$,容斥原理;
    • $C_n^i A_{m - i}^{n - i}$,从 $b$ 的 $n$ 个位置中选 $i$ 个位置与 $a$ 中的数相等,余下 $n - i$ 个位置共有 $m - i$ 个数可选;
      • 当 $i = 0$ 时,$C_n^i A_{m - i}^{n - i} = A_m^n$,即合法的 $b$ 的个数;
      • 当 $i \ge 1$ 时,$C_n^i A_{m - i}^{n - i}$ 即代表对 $a$ 来说不合法的 $b$ 的个数;
      • 所以右式即用容斥原理从合法的 $b$ 中减去对 $a$ 来说不合法的 $b$ 的个数。

代码

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
const int N = 5e5 + 10;
const int mod = 1e9 + 7; ll fac[N]; ll binpow(ll a, ll b) {
ll res = 1;
while (b > 0) {
if (b & 1) res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
} void init() {
fac[0] = 1;
for (int i = 1; i < N; i++)
fac[i] = fac[i - 1] * i % mod;
} ll inv(ll a) {
return binpow(a, mod - 2);
} ll A(ll n, ll m) {
return fac[n] * inv(fac[n - m]) % mod;
} ll C(ll n, ll m) {
return fac[n] * inv(fac[m]) % mod * inv(fac[n - m]) % mod;
} int main() {
init();
int n, m; cin >> n >> m;
ll sum = 0;
for (int i = 0; i <= n; i++) {
sum += binpow(-1, i) * C(n, i) * A(m - i, n - i) % mod;
sum = (sum + mod) % mod;
}
cout << A(m, n) * sum % mod << "\n";
}

AtCoder Beginner Contest 172的更多相关文章

  1. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

  2. AtCoder Beginner Contest 100 2018/06/16

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

  3. AtCoder Beginner Contest 052

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

  4. AtCoder Beginner Contest 053 ABCD题

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

  5. AtCoder Beginner Contest 136

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

  6. AtCoder Beginner Contest 137 F

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

  7. AtCoder Beginner Contest 076

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

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

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

  9. AtCoder Beginner Contest 064 D - Insertion

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

随机推荐

  1. Solon rpc 之 SocketD 协议 - RPC调用模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  2. Solon rpc 之 SocketD 协议 - 单链接双向RPC模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  3. Docker PHP 扩展配置

    # PHP 容器配置 # 从官方基础版本构建 FROM php:7.2-fpm # 官方版本默认安装扩展: # Core, ctype, curl # date, dom # fileinfo, fi ...

  4. 获取微信Token值

    /** * 获取Token值 * @param $corpid * @param $corpsecret * @return mixed * @author 宁佳兵 <meilijing.nin ...

  5. 数组的方法some和includes

    some() 方法用于检测数组中的元素是否满足指定条件(函数提供). some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测. 如果没 ...

  6. 通过JS逆向ProtoBuf 反反爬思路分享

    前言 本文意在记录,在爬虫过程中,我首次遇到Protobuf时的一系列问题和解决问题的思路. 文章编写遵循当时工作的思路,优点:非常详细,缺点:文字冗长,描述不准确 protobuf用在前后端传输,在 ...

  7. JAVA中@Override的含义

    @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例 ...

  8. [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本

    [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 目录 [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 0x00 摘要 0x01 背景 1.1 代码进化 1.2 Deep ...

  9. Mybatis plus 报错Invalid bound statement (not found) 终极解决办法

    我产生的错误原因是写的mapper继承BaseMapper没有添加泛型: 点进去: 为了解决这个bug,网上很多人也提出了解决办法:1.检查xml文件的namespace是否正确 2.Mapper.j ...

  10. 【汇编实践】go assembly

    https://mp.weixin.qq.com/s/B577CdUkWCp_XgUc1VVvSQ asmshare/layout.md at master · cch123/asmshare htt ...