前四题都好水。后面两道题好难。

C Divide the Problems

#include <cstdio>
#include <algorithm>
using namespace std; inline int read() {
int x = , f = ; char ch = getchar();
while (ch < '' || ch > '') { if (ch == '-') f = -; ch = getchar(); }
while (ch >= '' && ch <= '') { x = x * + ch - ; ch = getchar(); }
return x * f;
} const int N = 1e5 + ;
int a[N]; int main() {
int n = read();
for (int i = ; i < n; i++) a[i] = read();
sort(a, a + n);
printf("%d\n", a[n / ] - a[n / - ]);
return ;
}

D Blue and Red Balls

#include <cstdio>
using namespace std; inline int read() {
int x = , f = ; char ch = getchar();
while (ch < '' || ch > '') { if (ch == '-') f = -; ch = getchar(); }
while (ch >= '' && ch <= '') { x = x * + ch - ; ch = getchar(); }
return x * f;
} const int MOD = 1e9 + ;
const int N = ;
int C[N][N]; void init() {
C[][] = ;
C[][] = C[][] = ;
for (int i = ; i < N; i++) {
C[i][] = ;
for (int j = ; j <= i; j++)
C[i][j] = (C[i - ][j] + C[i - ][j - ]) % MOD;
}
} int main() {
init();
int n = read(), k = read();
for (int i = ; i <= k; i++) {
printf("%d\n", 1LL * C[k - ][i - ] * C[n - k + ][i] % MOD);
}
return ;
}

E Hopscotch Addict

题意:给一个有向图,问能不能从$S$,走$3^{x}$ $x \geq 1$ 能输出$x$,不能输出-1

思路:BFS。刚开始想的是对每一个点,枚举它往后走三步的点,但是T了。正解应该用$dis\left[ i\right] \left[ k\right]$表示走到$i$,并且走的步数模3等于$k$ 然后BFS就OK了。

#include <bits/stdc++.h>
using namespace std; inline int read() {
int x = , f = ; char ch = getchar();
while (ch < '' || ch > '') { if (ch == '-') f = -; ch = getchar(); }
while (ch >= '' && ch <= '') { x = x * + ch - ; ch = getchar(); }
return x * f;
} const int N = 1e5 + ;
const int INF = 0x3f3f3f3f;
int n, m, s, t, dis[N][];
vector<int> G[N]; void bfs() {
memset(dis, -, sizeof(dis));
dis[s][] = ;
queue< pair<int, int> > que;
que.push({s, });
while (!que.empty()) {
pair<int, int> u = que.front(); que.pop();
for (auto v : G[u.first]) {
if (dis[v][(u.second + ) % ] < ) {
dis[v][(u.second + ) % ] = dis[u.first][u.second] + ;
que.push({v, (u.second + ) % });
}
}
}
} int main() {
n = read(), m = read();
while (m--) {
int u = read(), v = read();
G[u].push_back(v);
}
s = read(), t = read();
bfs();
if (dis[t][] == -) puts("-1");
else printf("%d\n", dis[t][] / );
return ;
}

F Small Products

题意:给定一个$N$,$K$,问长度为$K$,且相邻两数的乘积不超过$N$的方案数。

思路:我只会$O\left( KN^{2}\right)$的暴力。看了题解瞬间觉得...tql

将数分为小于等于$\sqrt {N}$和大于$\sqrt {N}$,记为$s$和$b$

把$b$分成$\sqrt {N}$块 第$i$块表示$i\cdot b\leq N$ 那么这个块里有$\dfrac {N}{i}-\dfrac {N}{i+1}$个数

$S\left( i,j\right)$表示长度为$i$,最后一个数为$j$ ($j\leq \sqrt {N}$)的方案数

$B\left( i,j\right)$表示长度为$i$,最后一个数在块$B^{j}$里($j\leq \sqrt {N}$)的方案数

一个小的数前面可以放任意一个小的数,也可以放一个大数,这个数与这个小的数乘积小于等于$N$

那么$S$的递推式子是$S\left( i,j\right) =\sum ^{\sqrt {N}}_{k=1}s\left( i-1,k\right) +\sum ^{\sqrt {N}}_{k=j}B\left( i-1,k\right)$

$B$的递推式子是$B\left( i,j\right) =\left( \dfrac {N}{j}-\dfrac {N}{j+1}\right) \sum ^{j}_{k=1}S\left( i-1,k\right)$

$ans=\sum ^{\sqrt {N}}_{i=1}\left( S\left( k,i\right) +B\left( k,i\right) \right)$

但是这样复杂度是$O\left( k\left( \sqrt {N}\right) ^{2}\right)$

在计算的过程中计算完这一层可以把这一层的给求个和,复杂度就降为$O\left( k\sqrt {N}\right)$

好题。

#include <cstdio>
#include <cstring>
#include <cmath>
#define ll long long
using namespace std; const ll MOD = 1e9 + ;
const int N = 5e4 + ;
ll S[][N], B[][N]; inline int read() {
int x = , f = ; char ch = getchar();
while (ch < '' || ch > '') { if (ch == '-') f = -; ch = getchar(); }
while (ch >= '' && ch <= '') { x = x * + ch - ; ch = getchar(); }
return x * f;
} int main() {
int n = read(), k = read();
int r = sqrt(n) + ;
S[][] = ;
for (int i = ; i < k; i++) {
for (int j = ; j < r; j++) S[i][j] = (S[i][j] + S[i][j - ]) % MOD;
for (int j = r - ; j > ; j--) B[i][j] = (B[i][j] + B[i][j + ]) % MOD;
for (int j = ; j < r; j++) {
B[i + ][j] = S[i][j] * (n / j - n / (j + ));
if (j == n / j) B[i + ][j] = ; //已被包含在S里
B[i + ][j] %= MOD;
}
for (int j = ; j < r; j++) {
S[i + ][j] = B[i][j] + S[i][r - ];
S[i + ][j] %= MOD;
}
}
ll ans = ;
for (int i = ; i <= r; i++) ans = (ans + B[k][i] + S[k][i]) % MOD;
printf("%lld\n", ans);
return ;
}

AtCoder Beginner Contest 132 解题报告的更多相关文章

  1. AtCoder Beginner Contest 122 解题报告

    手速选手成功混进rated only里面的前30名,但是总排名就到110+了... A - Double Helix #include <bits/stdc++.h> #define ll ...

  2. AtCoder Beginner Contest 146解题报告

    题目地址 https://atcoder.jp/contests/abc146/tasks 感觉没有什么有意思的题... 题解 A #include <bits/stdc++.h> usi ...

  3. Atcoder Beginner Contest 124 解题报告

    心态爆炸.本来能全做出来的.但是由于双开了Comet oj一个比赛,写了ABC就去搞那个的B题 还被搞死了. 回来写了一会D就过了.可惜比赛已经结束了.真的是作死. A - Buttons #incl ...

  4. AtCoder Beginner Contest 118 解题报告

    A - B +/- A #include <bits/stdc++.h> int main() { int a, b; std::cin >> a >> b; b ...

  5. AtCoder Beginner Contest 120 解题报告

    为啥最近都没有arc啊... A - Favorite Sound #include <algorithm> #include <iostream> #include < ...

  6. AtCoder Beginner Contest 117 解题报告

    果然abc都是手速场. 倒序开的qwq. D题因为忘记1e12二进制几位上界爆了一发. A - Entrance Examination 就是除一下就行了... 看样例猜题意系列. #include& ...

  7. AtCoder Beginner Contest 129 解题报告

    传送门 写了四个题就跑去打球了.第五题应该能肝出来的. A - Airplane #include <bits/stdc++.h> using namespace std; inline ...

  8. AtCoder Beginner Contest 127 解题报告

    传送门 非常遗憾.当天晚上错过这一场.不过感觉也会掉分的吧.后面两题偏结论题,打了的话应该想不出来. A - Ferris Wheel #include <bits/stdc++.h> u ...

  9. AtCoder Beginner Contest 126 解题报告

    突然6道题.有点慌.比赛写了五个.罚时爆炸.最后一个时间不太够+没敢写就放弃了. 两道题奇奇怪怪的WJ和20/20.今天的评测机是怎么了. A Changing a Character #includ ...

随机推荐

  1. Python实现字典树

    字典树,又称单词查找树,Trie 树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:利用字符串 ...

  2. Centos7下RabbitMQ的安装与配置

    具体按照步骤以此为准 第一步:安装最新版的erlang依赖 通过github设置版本号:https://github.com/rabbitmq/erlang-rpm vi /etc/yum.repos ...

  3. 基于Spark2.X系列的累加器和Streaming基础

    一.累加器API 关于累加器,前面我也写了一篇博客,顺便粘贴这儿,对比学习,Spark学习之编程进阶总结(一).Spark 2.0系列引入了一个更加简单和更高性能的累加器API,如在1.X版本中可以这 ...

  4. AGC037

    Contest page A Tag:贪心 猜想段的长度只会有$1$和$2$(感性理解,应该可以反证--),然后就可以DP/贪心了 B Tag:贪心.组合 考虑如何构造合法方案.从右往左考虑球,因为当 ...

  5. CF468C Hack It! 构造

    传送门 让人觉得脑子不够用的构造 考虑对于一个区间\([l,r]\)如何让它调整使得最后的结果恰好加上\(1\). 注意到对于一个\(<10^{18}\)的数\(x\),\(f(x+10^{18 ...

  6. Linux文件比对,批量复制

    --背景 工作中突然有一天文件服务器空间满了,导致文件存不进去,立马换了另外一台服务器作为文件服务器,将服务器挂载上去,原来的服务器修复之后需要重新换回来,但是需要将临时使用的服务器内的文件迁移至原文 ...

  7. 无法定位 Local Database Runtime 安装。请验证 SQL Server Express 是否正确安装以及本地数据库运行时功能是否已启用。

    错误描述: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provide ...

  8. oracle plsql基本语法

    oracle plsql 基本语法 --plsql默认规则:plsql赋值用":=" plsql判断用"=" plsql输入用"&" ...

  9. 一个超实用的python爬虫功能使用 requests BeautifulSoup

    一个简单的数据爬取的示例 import os,re import requests import random import time from bs4 import BeautifulSoup us ...

  10. Python进阶----进程之间通信(互斥锁,队列(参数:timeout和block),), ***生产消费者模型

    Python进阶----进程之间通信(互斥锁,队列(参数:timeout和block),), ***生产消费者模型 一丶互斥锁 含义: ​ ​ ​ 每个对象都对应于一个可称为" 互斥锁&qu ...