ABC365

news/2025/3/18 14:59:08/文章来源:https://www.cnblogs.com/wmmdbk/p/18341725

A

link

题目已经说的很明白了,判断即可。

点击查看代码
#include<bits/stdc++.h>using namespace std;int y;signed main(){cin >> y;if(y%4 != 0) cout << 365;else if(y%4 == 0&&y%100 != 0) cout << 366;else if(y%100 == 0&&y%400 != 0) cout << 365;else if(y%400 == 0) cout << 366;return 0;} 

B

link

emmm,排序找哪个位置是第二大。

点击查看代码
#include<bits/stdc++.h>using namespace std;int a[105],b[105];signed main(){int n;cin >> n;for(int i = 1;i <= n;++ i)cin >> a[i],b[i] = a[i];sort(a+1,a+1+n);for(int i = 1;i <= n;++ i)if(b[i] == a[n-1]) cout << i;return 0;}

C

link

首先判断一下,如果\(A_i\)的总和还不到\(m\),补贴就可以无限大,因为和\(A_i\)\(min\),最后不会超过\(A_i\)的和。
剩下的二分答案。对于一个答案\(x\),算出所需付的补贴金额,判断是否\(>m\),如果在\(m\)范围内,可以让\(x\)变大,否则就要变小。

点击查看代码
#include<bits/stdc++.h>#define int long longusing namespace std;int n,m;
int a[200005];
int sum;int check(int x){int res = 0;for(int i = 1;i <= n;++ i)res += min(x,a[i]);return res;
}signed main(){cin >> n >> m;for(int i = 1;i <= n;++ i)cin >> a[i],sum += a[i];if(sum <= m){cout << "infinite";return 0;}int l = 0,r = sum,md;while(l<r){md = (l+r+1)/2;int t = check(md);if(t > m) r = md-1;else l = md;}cout << l;return 0;}

D

link

首先明确一下题意,他说高桥没输过,代表他赢了或平了,在他每次都和前一次出的不一样的情况下,找到赢了的最大数。
考虑\(DP\),设\(f_{i,0/1}\)\(f_{i,1}\)代表到第\(i\)局中第\(i\)局赢了的赢的最大局数,\(f_{i,0}\)代表到第\(i\)局中第\(i\)局平了的赢的最大局数。
考虑转移。每一个状态都可以从\(i-1\)的所有状态(\(0/1\))转移过来,只要判断这个状态高桥该出什么和前一个的哪一个状态高桥该出什么不一样即可。

if(这一个赢的状态!=上一个赢/平的状态)f[i][1] = max(f[i][1],f[i-1][1/0]+1);

大概这样即可。

点击查看代码
#include<bits/stdc++.h>using namespace std;int n;
char s[200005];
char t[200005][2];
int f[200005][2];char ying(char x){if(x == 'R') return 'P';else if(x == 'P') return 'S';else return 'R';
}signed main(){cin >> n >> s+1;for(int i = 1;i <= n;++ i){t[i][1] = ying(s[i]);t[i][0] = s[i];}int ans = 0,q = 0;for(int i = 1;i <= n;++ i){if(t[i-1][0] != t[i][1])f[i][1] = max(f[i][1],f[i-1][0]+1);if(t[i-1][1] != t[i][0])f[i][0] = max(f[i][0],f[i-1][1]);if(t[i-1][0] != t[i][0])f[i][0] = max(f[i][0],f[i-1][0]);if(t[i-1][1] != t[i][1])f[i][1] = max(f[i][1],f[i-1][1]+1); }cout << max(f[n][1],f[n][0]);return 0;} 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没闲着系列 21

离上个20记录已经3个月了。 这3个月我算体会到了什么是欠缺项目管理导致的项目失败。 当然,有一部分我认为项目是没有失败的,但有一部分也是个人原因,但不多。 算了,不去想之前的糟心事,讲一讲TaskSaas近期更新了什么吧。首先还是关于迭代需求,现在不创建迭代不允许新增需…

5、Qt-pyqt6常用基本控件 - 按钮控件

Buttons -- 按钮类控件名 说明PushButton 按钮ToolButton 工具按钮RadioButton 单选按钮CheckBox 复选框CommandLinkButton 命令链接按钮DialogButtonBox 对话框按钮盒🕹 1. PushButton 按钮控件这是最常用的控件之一,允许用户通过单击来执行操作 该控件既可以显示文本也可以…

设计模式图汇

模板模式简单工厂模式工厂模式原型模式建造者模式策略模式观察者模式装饰模式单件模式外观模式命令模式组合模式状态模式享元模式代理模式 / 适配器模式桥接模式中介模式

推荐3款免费且实用的数据库管理工具

前言 数据库在日常工作中确实扮演着至关重要的角色,无论是数据管理、分析还是应用开发,都离不开它的支持。今天大姚给大家分享3款免费且实用的数据库管理工具,希望可以帮助到有需要的同学。 DBeaver DBeaver是一款免费的跨平台数据库工具,适用于开发人员、数据库管理员、分…

kettle从入门到精通 第八十三课 ETL之kettle kettle调用python且接收返回值

场景:kettle调用python执行脚本,处理之后,再把结果数据流发给下一个步骤。 看到有个qq群里有个小伙伴求助要实现kettle调用python脚本,然后接收python脚本执行的结果,最后将结果传递到下一个步骤。之前的课程里面介绍的是kettle通过shell步骤调用python脚本,没有接收pyth…

攻防世界的一些题目

攻防世界的一些题目 唉,一些题目做的还是磕磕绊绊的,好菜啊,得加把劲了,马上要省赛了。。。 misc 如来十三掌 附件是一个docx,打开之后 夜哆悉諳多苦奢陀奢諦冥神哆盧穆皤三侄三即諸諳即冥迦冥隸數顛耶迦奢若吉怯陀諳怖奢智侄諸若奢數菩奢集遠俱老竟寫明奢若梵等盧皤豆蒙密…

6.交换机及其配置

6.1 交换机的基本概念# 路由器工作在:第三层网络层,跨局域网传输 交换机工作在:第二层数据链路层,在局域网内传输在PC2 ping 一下PC3 的IP交换机自动就会记录他们的MAC地址和端口号6.2 交换表的内容 小型交换机大型交换机6.3 交换机的交换模式直通-快速转发:知道地址后就…