当前位置: 首页 > news >正文

洛谷100题DAY8

36.P1416 攻击火星

此题找出规律即可

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{cin >> n;cout << max(0, n - 2);return 0;
}

37.P1551 亲戚

并查集模板题目

两个人如果使亲戚就合并建立联系,最后进行查找即可

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, m, q, x, y, p[N];
int find(int x)
{if(p[x] != x)p[x] = find(p[x]);return p[x];
}
int main()
{cin >> n >> m >> q;for(int i = 1; i <= N; i ++)p[i] = i;for(int i = 1; i <= m; i ++){cin >> x >> y;p[find(x)] = find(y);}for(int i = 1; i <= q; i ++){cin >> x >> y;if(find(x) == find(y))cout << "Yes" << '\n';else cout << "No" << '\n';}return 0;
}

38.P1579 哥德巴赫猜想(升级版)

对于此题而言,使用普通的质数判断每一个数会超时,故使用埃氏筛法(将质数倍数的数全部筛去),一共只有三个数,我们循环枚举两个数,第三个数用和确定下即可

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
vector<int> prime;
int n;
bool vis[N];
int main()
{cin >> n;vis[0] = vis[1] = true;for(int i = 2; i <= n; i ++){if(!vis[i]){for(int j = 2 * i; j <= n; j += i){vis[j] = true;}}}for(int i = 2; i <= n; i ++){if(!vis[i])prime.push_back(i);}for(auto i : prime){for(auto j : prime){int k = n - i - j;if(k > 0 && !vis[k]){cout << i << ' ' << j << ' ' << k;return 0;}}}
}

39.P1604 B进制星球

使用高精度加法等转化即可

#include<bits/stdc++.h>
using namespace std;
const int N = 2009;
int B, a[N], b[N];
char s[N];
const char ch[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int main()
{cin >> B;cin >> s + 1;int n = strlen(s + 1);for(int i = 1; i <= n; i ++){if('0' <= s[i] && s[i] <= '9')a[i] = s[i] - '0';else a[i] = s[i] - 'A' + 10;}reverse(a + 1, a + 1 + n);cin >> s + 1;int m = strlen(s + 1);for(int i = 1; i <= m; i ++){if('0' <= s[i] && s[i] <= '9')b[i] = s[i] - '0';else b[i] = s[i] - 'A' + 10;}reverse(b + 1, b + 1 + m);for(int i = 1; i <= max(n, m) + 1; i ++){a[i] += b[i];if(a[i] >= B){a[i + 1] += a[i] / B;a[i] %= B;}}bool flag = false;//删去前导0for(int i = max(n, m) + 1; i >= 1; i --){if(a[i])flag = true;if(flag)cout << ch[a[i]];} return 0;
}        

40.P1599 结算日

分析出最优的方法为一旦金额足够就去还债这样走的步数最小

#include<bits/stdc++.h>
using namespace std;
int n, x, sum, pos;
int main()
{cin >> n;int ans = n;for(int i = 1; i <= n; i ++){cin >> x;sum += x;if(sum >= 0 && pos){ans += (i - pos) * 2;pos = 0; }else if(sum < 0 && !pos){pos = i;}}cout << ans;return 0;
}
http://www.lryc.cn/news/248829.html

相关文章:

  • 2. OpenHarmony源码下载
  • flask app.config 用法
  • 【Vue】【uni-app】实现工单列表项详情页面
  • 安装vmware_esxi 超详细
  • Spring-Mybatis源码解析--手写代码实现Spring整合Mybatis
  • 5.2 Windows驱动开发:内核取KERNEL模块基址
  • 聊聊Go语言的注释
  • 皮肤警告,羊大师讲解身体与环境的默契
  • 使用NVM管理多个Nodejs版同时支持vue2、vue3
  • Android帝国之进程杀手--lmkd
  • 堆栈_队列实现栈
  • 好用的json处理工具He3 JSON
  • RabbitMQ消息模型之Routing-Direct
  • Harmony 应用开发之size 脚本
  • 商家门店小程序怎么做?门店小程序的优势和好处
  • 什么是灯塔工厂?灯塔工厂的作用?
  • 【GEO-AI】SAM-Geo库(segment-geospatial)入门教程
  • ESP32-Web-Server 实战编程-使用文件系统建立强大的 web 系统
  • kubeadm快速搭建k8s高可用集群
  • GoLong的学习之路,进阶,Redis
  • Linux重置MySql密码(简洁版)
  • Ubuntu部署jmeter与ant
  • 如何使用 RestTemplate 进行 Spring Boot 微服务通信示例?
  • 新开普掌上校园服务管理平台service.action RCE漏洞复现 [附POC]
  • 滤波器、卷积核与内核的关系
  • 沉默是金,寡言为贵
  • 【网络奇遇之旅】:那年我与计算机网络的初相遇
  • 量化误差的测量
  • 8年测试工程师分享,我是怎么开展性能测试的(基础篇)
  • 微服务API网关Spring Cloud Gateway实战