牛客周赛46(思路待补)

news/2024/9/30 23:26:54

比赛链接:牛客周赛46


赛时感受

       本场参加的是内测,多亏了内测群的佬提供的思路,得以AK。
image
       ABC都是简单的签到题,D稍微需要分类一下,EF有点算法知识,E可以使用前缀和+二分搜索过掉,但是听说好像还能使用离散化树状数组等等,F是数学知识,隔板法和求质数、求组合。
       一开始脑袋懵了,以为C题的数据太大暴力过不了,转去写欧拉筛求质数妄图通过质数求出x的小于n的因子个数,后面发现更难处理了,后面突然想起直接对x暴力求解是O(n½)的时间复杂度,然后直接暴力过掉。F题思考了很久,最开始连暴力的思路也没有,后面求出了x可以拆出来的质数个数,本来想对每个位置求组合,但是对于x = 4, y = 3,x = 2 * 2,可能第一个乘数排列得到第一个2,第二个乘数可能排列得到第二个2,但是同样可能第一个乘数排列取到第二个2,第二个乘数排列取到第一个二,但是此时两种情况是相同的,重复计算了同一种情况,一直卡在这个点,还是数学薄弱了。


A

思路

       在有热的抹茶的时候先吃热抹茶,再吃冰抹茶,当冰抹茶吃完但是热抹茶还有时,需要判断当前还能吃热抹茶吗,若热抹茶吃完了病抹茶还没吃完,就直接吃掉剩下所有的冰抹茶。

题解

# python
s = list(map(int, input().split()))
if s[0] > s[1] * 2:print(s[1] + s[0])
else :print(s[0] + s[0] // 2)

 

B

思路

       将输入的第x种茶的美味值赋值为0,然后对没位置数组进行排序,计算没位置最大的茶的种数就可以知道有多少种红茶可以选择了。

代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const int N = 1e5 + 10;
ll a[N];int main() {int n, x;cin >> n >> x;for (int i = 1; i <= n; i++) {cin >> a[i];}a[x] = 0;sort(a + 1, a + 1 + n);int i = n;while (i >= 1) {if (a[i] == a[i - 1]) {i--;} else {break;}}cout << n - i + 1 << endl;return 0;
}

 

C

思路

题解

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const int N = 1e6 + 10;int main() {ll n, x, ans = 0;cin >> n >> x;for (int i = 1; i <= x / i; i++) {if (x % i == 0 && i <= n) {ans++;if (i != (x / i) && x % (x / i) == 0 && (x / i) <= n) {ans++;}}}cout << (ans % 2 == 0 ? "OFF" : "ON") << endl;return 0;
}

 

D

思路

题解

#include <bits/stdc++.h>
using namespace std;#define ll long long 
const int N = 1e5 + 10;int main()  {int t;cin >> t;while (t--) {ll a[4], k;cin >> a[1] >> a[2] >> a[3] >> k;{sort(a + 1, a + 4);if (a[1] == k || a[2] == k || a[3] == k) {cout << 0 << endl;}else if (k == 0) {cout << 1 << endl;} else if (k == 1) {if (a[1] == 0 && (a[2] != 1 || a[3] != 1)) {cout << 1 << endl;} else {cout << 2 << endl;}}else if (k == 2) {if (a[1] == 0 && (a[2] == 1 || a[3] == 1)) {cout << 1 << endl;}else if (a[1] == 0) {cout << 2 << endl;}else if (a[1] == 1) {cout << 2 << endl;}else {cout << 3 << endl;}}else {cout << -1 << endl;}}} return 0;
}

 

E

思路

题解

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const int N = 1e5 + 10;
struct p {int a, b;
}food[N];bool cmp(struct p x, struct p y) {return x.b < y.b;
}ll all_sum[N], sum[N];
int main() {int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> food[i].a;}for (int j = 1; j <= n; j++) {cin >> food[j].b;}sort(food + 1, food + 1 + n, cmp);for (int i = 1; i <= n; i++) {all_sum[i] = food[i].a * food[i].b + all_sum[i - 1];sum[i] = food[i].a + sum[i - 1];}int q;cin >> q;for (int i = 1; i <= n; i++) {ll l = 1, r = n, res = 0, mid;int k;cin >> k;while (l <= r) {mid = (l + r) >> 1;if (food[mid].b <= k) {res = mid;l = mid + 1;}else {r = mid - 1;}}cout << all_sum[res] + (sum[n] - sum[res]) * k << endl;}return 0;
}

 

F

思路

题解

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const int N = 1e5 + 10;
const ll mod = 1e9 + 7;
bool vis[N];
int isprime[N];
void prime() {for (int i = 2; i <= 5e4; i++) {if (vis[i] == false) isprime[++isprime[0]] = i;for (int j = 1; j <= isprime[0] && i * isprime[j] <= 5e4; j++) {vis[i * isprime[j]] = true;if (i % isprime[j] == 0) break;}}
}ll qsm(ll x, ll y) {ll res = 1;while (y) {if (y & 1) {res *= x;res %= mod;}x *= x;y >>= 1;x %= mod;}return res;
}ll inverse(ll x) {return qsm(x, mod - 2);
}ll c(ll n, ll m) {ll res = 1;for (ll i = n; i > (n - m); i--) {res *= i;res %= mod;}ll x = 1;for (ll i = 1; i <= m; i++) {x *= i;x %= mod;}res *= inverse(x);return res % mod;
}int main() {int t;cin >> t;prime();while (t--) {ll x, y, ans = 0, res = 1;cin >> x >> y;for (int i = 1; i <= isprime[0]; i++) {if (isprime[i] > x) break;if (x % isprime[i] == 0) {while (x % isprime[i] == 0) {x /= isprime[i];ans++;}}if (ans == 0) continue;res *= c(ans + y - 1, ans);res %= mod;ans = 0;}if (x > 1) {res *= y;res %= mod;}cout << res << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/45091.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

[TinyRenderer] Chapter1 p3 Line

(注:本小节不是对划线算法事无巨细的证明,如果你需要更加系统的学习,请跳转至文末的参考部分) 如果你是一名曾经学习过图形学基础的学生,那么你一定对画线算法稔熟于心,中点划线算法,Bresenham算法。其中,现代光栅化器中使用最多的就是Bresenham算法,它以去除了除法和…

3个月搞定计算机二级C语言!高效刷题系列进行中

前言 大家好,我是梁国庆。 计算机二级应该是每一位大学生的必修课,相信很多同学的大学flag中都会有它的身影。 我在大学里也不止一次的想要考计算机二级office,但由于种种原因,备考了几次都不了了之。 这一次我想换个目标! 备考计算机二级C语言 今天山东省考试院发布了关于…

讯飞有一个可以根据描述文本自动生成PPT的AI接口,有趣

文档:https://www.xfyun.cn/doc/spark/PPTGeneration.html 价格方面提供了免费1000点的额度,生成一次是10点,正好100次,如果要购买的话最低要购买1344元的,没有按量付费的模式,个人小开发者可买不起。 让我们跑起来玩玩,官方提供了python的sdk,下载到本地: 不想下载sd…

RSS 解析:全球内容分发的利器及使用技巧

RSS(Really Simple Syndication)是一种 XML 格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS 文档结构包括 `<channel>` 和 `<item>` 元素,允许内容创作者分享标题、链接和描述。通过 RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RS…

2024.6.10漏洞探针

探针(扫描器) 1、nmap漏洞库,根目录下scripts中调用2、Goby(红队版) 直接输入ip扫描资产,漏洞库较少; 3、Nessus 本地安装: 下载安装普通版;注册获取验证码; 注册用户 nessus,nessus123 漏洞利用 1、工具框架 metasploit和searchsploit 忍者系统可以一键使用msf;2、…

6.12Web应用漏洞发现探针利用

已知CMS、开发框架、 思路: 各个页面查看数据包(地址信息),查看框架,上fofa关键字搜索(查看其框架信息如thinkhphp),利用检测工具测试漏洞情况; 网站根目录下的robots.txt文件信息; /data/admin/ver.txt 网站升级时间; 常见SQL注入、登录、逻辑越权支付逻辑绕过思路:…

6.13API接口服务类漏洞探针

ip地址解析:www.x.x.x.com, 对应网站目录为d:/wwwroot/xiaodi/ 而127.x.x.x,对应网站目录为d:/wwwroot/,可能存在网站备份文件zip,所以ip网址端口都的扫描; 协议端弱口令爆破: 超级弱口令检查工具;端口服务安全问题(用于无思路时) 思路:利用探针对端口探测后,对口令安全…

Modbus协议转Profinet协议网关与气体监测系统配置案例

Modbus协议和Profinet协议作为工业领域常见的两种通讯协议,各自具有一定的特点和应用范围。Modbus转Profinet网关(XD-MDPN100/300)在工业自动化控制系统中,可以将Modbus协议转换为Profinet协议,以实现不同设备之间的数据交换和通讯。本文将结合Modbus协议转Profinet协议网…