abc 383 C (bfs 最短路 )D(唯一分解定理,欧拉筛)

ops/2024/12/21 9:45:56/

C 题:
在这里插入图片描述
首先暴力的想,对于每一个加湿器的位置去 上下左右扩展是 n+m 的复杂度
。最多会有 nm 个加湿器。所以复杂度到达了n^3 。肯定超时了。
我们可以发现 对于一个点 会标记很多次,这回导致超时。
可以采用类似 bfs 求最短路的形式,找到每个点 距离 加湿器的最近距离,统计答案。
这样是n
m 的复杂度。每个点只会进队一次

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;struct node
{int x = 0, y = 0;int d = 0;
};
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
void solve()
{int n, m, lim;cin >> n >> m >> lim;vector<vector<char>> g(n, vector<char>(m));vector<vector<int>> vis(n, vector<int>(m));queue<node> q;int ans=0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cin >> g[i][j];if (g[i][j] == 'H'){q.push({i, j, 0});vis[i][j] = 1;ans++;}}}while (!q.empty()){auto [x, y, d] = q.front();q.pop();for (int i = 0; i < 4; i++){int nx = x + dx[i];int ny = y + dy[i];if (nx >= 0 && nx < n && ny >= 0 && ny < m){if (vis[nx][ny]||g[nx][ny]=='#')continue;vis[nx][ny]=1;if (d+1>lim)continue;else{q.push({nx,ny,d+1});ans++;}}}}cout<<ans<<"\n";
}
int main()
{std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// cin>>t;while (t--){solve();}return 0;
}

D题
在这里插入图片描述
在这里插入图片描述
所以 9= 19 说明合法的数是一个质数的8次幂
9=3
3 说明合法的数也可以是两个质数的二次幂的乘积
要求 不超过n ,所以只用处理 sqrt(n) 内的质数就可以了。
(因为如果是> sqrt(n) 的质数,那么相乘一定超过了n)
处理 出来质数之后 ,就对两种情况直接暴力的求就可以了,(这种的复杂度我不会分析,感觉比较玄)

对于 ttt<n 的情况,为了避免 t tt 溢出,可以写成
t<n/tt

#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> PII;
int read()
{int x = 0, f = 1;char ch = getchar();while (!isdigit(ch)){if (ch == '-')f = -1;ch = getchar();}while (isdigit(ch)){x = (x << 1) + (x << 3) + ch - '0';ch = getchar();}return x * f;
}
const int N = 3e6 + 5;
int is_prime[N];
int prime[N];
int cnt = 0;
int ans[N];
void pre(int n)
{for (int i = 2; i <= n; i++)is_prime[i] = 1;for (int i = 2; i <= n; i++){if (is_prime[i] == 1)prime[++cnt] = i;for (int j = 1; j <= cnt && i * prime[j] <= n; j++){is_prime[i * prime[j]] = 0;if (i % prime[j] == 0)break;}}
}void solve()
{int n;cin >> n;int t = sqrt(n);pre(t);set<int> se;// int ans = 0;// 八次幂的形式的for (int i = 1; i < cnt; i++){int t = prime[i] * prime[i];t = t * t * t * t;if (t <= n){se.insert(t);}else break;}// 两个 二次幂相乘for (int i = 1; i < cnt; i++){int t = prime[i] * prime[i];for (int j = i + 1; j < cnt; j++){int tt = prime[j] * prime[j];// if(t*tt>n)// break;if (t  > n/tt){break;}elsese.insert(t*tt);}}cout<<se.size()<<"\n";
}
signed main()
{std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// cin>>t;while (t--){solve();}return 0;
}

http://www.ppmy.cn/ops/143722.html

相关文章

《Vue3实战教程》13:Vue3侦听器

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 侦听器​ 基本示例​ 计算属性允许我们声明性地计算衍生值。然而在有些情况下&#xff0c;我们需要在状态变化时执行一些“副作用”&#xff1a;例如更改 DOM&#xff0c;或是根据异步操作的结果去修改另一处的状态。…

Postman前置脚本使用案例

背景 由于我们的服务接口需要进行验签&#xff0c;每次通过Postman手动调用接口时都显得颇为繁琐。为了简化这一过程&#xff0c;我们可以充分利用Postman提供的脚本功能&#xff0c;自动为接口请求生成所需的签名。 案例 在Scripts中写生成接口签名的脚本。 以下是一个实用…

Spark-Streaming receiver模式源码解析

一、上下文 《Spark-Streaming初识》博客中我们用NetworkWordCount例子大致了解了Spark-Streaming receiver模式的运行。下面我们就通过该代码进行源码分析&#xff0c;深入了解其原理。 二、构建StreamingContext 它是Spark Streaming功能的主要入口点。并提供了从各种输入…

Day28 C++ 命名空间

2024.12.20 C 命名空间 假设这样一种情况&#xff0c;当一个班上有两个名叫 Zara 的学生时&#xff0c;为了明确区分它们&#xff0c;我们在使用名字之外&#xff0c;不得不使用一些额外的信息&#xff0c;比如他们的家庭住址&#xff0c;或者他们父母的名字等等。 同样的情况…

【Spring】Spring的模块架构与生态圈—数据访问与集成(JDBC、ORM、Transactions)

在企业级应用中&#xff0c;数据的存储和访问是核心功能之一。Java开发语言通过Spring框架提供了多种方式来实现数据访问和集成&#xff0c;包括JDBC&#xff08;Java Database Connectivity&#xff09;、ORM&#xff08;对象关系映射&#xff09;以及事务管理。这些技术的有效…

出现 java.io.UncheckedIOException: Cannot delete Local\Temp\tomcat xxx.tmp 文件无法删除

目录 1. 问题所示2. 原理分析3. 解决方法3.1 kill(初审)3.2 代码Bug(严查)3.3 核心Bug(严查)3.4 版本(暂定)1. 问题所示 执行代码的时候,出现如下问题: java.io.UncheckedIOException: Cannot delete C:\Users\lixiaosong\AppData\Local\Temp\tomcat.48080.1595710…

Spring Boot应用关闭分析

优质博文&#xff1a;IT-BLOG-CN 一、使用spring容器的close方法关闭。 可通过在代码中获取SpringContext并调用close方法去关闭容器。 使用SpringApplication的exit方法。 public static int exit(ApplicationContext context,ExitCodeGenerator... exitCodeGenerators) {…

Serverless监控和调试、持续集成和持续部署

接下来,我们将探讨Serverless架构中的监控和调试,以及如何在Serverless环境中实现持续集成和持续部署(CI/CD)。 在Serverless架构中,监控和调试是确保应用健康运行的关键。以下是一些监控和调试的最佳实践: 日志聚合:使用云服务提供商的日志服务(如AWS CloudWatch、Azu…