马蹄集oj赛(双周赛第二十六次)

目录

斐波那契数列的组合

三国杀

数列分段

小码哥的跳棋游戏新编

能量供应

小码哥爱数字

最小串

小船过河

摘果子

泼墨淋漓

很重的枪

小码哥的布阵指挥


斐波那契数列的组合

#include<bits/stdc++.h> using namespace std;// 斐波那契数列 1 1 2 3 5 8 13 21 34 55 89 144int main( )
{int n;int temp = 0;cin >> n;vector<int> v;v.insert(v.end(), 0); v.insert(v.end(), 1);for(int i=1;i<n;i++){temp = v[i]+v[i-1];if(temp>n){break;}v.insert(v.end(),temp);}int len = v.size()-1;int sum = 0;int num = 0;for(int i=len;i>0;i--){sum += v[i];num++;if(sum>n){sum -= v[i];num--;}else if(sum==n){cout << num ;break;}else{continue;}}return 0;
}

三国杀


少难度:黄金时间限制:1秒四占用内存:128 M
小码哥和小码妹酷爱三国杀。在一局游戏中,每人有n名武将,每名武将有一个武力值。每一回合,每人挑选一名武将作战,武力值大的获胜,同时该武将进入弃牌堆。如果提前知道了小码妹的出牌顺序,小码哥能最多获胜几回合?
格式
输入格式:第一行包含一个正整数n;第二行 n 个正整数 ai,表示小码哥的武将第三行 n 个正整数 b ,表示小码妹的武将。
输出格式:一个整数,输出小码哥最多获胜的回合数。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;int i,j,k,n,m,t,a[1000005];
multiset<int> s;int main() {cin>>n;for(i=1;i<=n;i++){cin>>k;s.insert(k);}for(i=1;i<=n;i++) cin>>a[i];sort(a+1,a+n+1);for(i=n;i>=1;i--){auto it = s.upper_bound(a[i]);if(it!=s.end()){s.erase(it);t++;}}cout<<t;return 0;}

数列分段


巴 占用内存:128 M少难度:黄金时间限制:1秒
对于给定的一个长度为N的正整数数列 A;,现要将其分成连续的若干段,并且每段和不超过M(可以等于 M),问最少能将其分成多少段使得满足要求。
格式
输入格式:第一行包含两个正整数 N,M ,表示了数列 A,的长度与每段和的最大值,第二行包含 N 个空格隔开的正整数 A;,如题目所述。
输出格式:一个正整数,输出最少划分的段数。

def main():#code hereN,M=map(int, input () .split ())num=list(map(int, input () .split ()))s=0res=1for i in range(N):if s+num[i]<=M:s+=num[i]else:res+=1 s=num[i]print(res)passif __name__ == '__main__':main();

小码哥的跳棋游戏新编


了难度:黄金时间限制:1秒四占用内存:128M
小码哥喜爱跳棋。跳棋游戏在一条直线上,一共几个位置(1~n),每个位置有3个状态:0表示没有棋子,1表示红棋子,2表示蓝棋子。在起始的点(坐标为8)没有棋子。小码哥的棋子自然是能通过没有棋子的位置。当面前有1个棋子时,小码哥可以直接跳过。当有两个及以上不同颜色棋子连在一起时,小码哥的棋子是跳不过去的。这时候,就要花费能量,破坏掉一些棋子,才能跳过。但小码哥的棋子是经过升级的,如果一连串相同颜色的棋子在一起时,小码哥是可以直接跳过的。已知破坏一枚棋子需要花费一点能量。现在求小码哥到达终点(坐标为几+1)需要花费至少多少能量?
格式
输入格式:第一行包含一个正整数 n;
第二行 n 个整数 a;(1 <i< n),表示棋盘的状态。
输出格式:一个整数,输出最小耗费的能量数。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7;
int a[N];
int main()
{int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}int ans = 0;for (int i = 1; i <= n; i++) {if (a[i] && a[i - 1] && a[i] != a[i - 1]) {a[i] = 0;ans++;}}cout << ans << endl;return 0;
}

能量供应


难度:钻石时间限制:1秒巴 占用内存:128 M
最近小码哥迷上了一款建造管理类游戏,游戏中的设施需要能量塔提供能量,设施运行时需要一定数量的能量塔在附近才能运作,不同的设施需要的能量塔的数量以及能链接到能量塔的范围也不一样,超出设施链接范围的能量塔无法为设施提供能量,不同设施可以重复利用同一座能量塔。
现在小码哥修建了一条长为n的道路来放置能量塔,但能量塔的修建成本稍高,小码哥不想花太多时间收集资源建造过多能量塔,现在小码哥用一个区间s,e告诉你每个设施链接到能量塔的有效范围,以及每个设施需要的能量塔数量t,请你告诉他最少修建多少个能量塔即可让所有设施运作?
格式
输入格式:两个正整数 n,b,表示道路的长度和设施的数量;接下来6行每行三个正整数 s,e,t,表示设施的链接范围的起始和结尾以及需要的能量塔数量。

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;const int maxn = 100005;int n, b;vector<int> se[maxn];vector<int> st[maxn];int ans[maxn], len[maxn];int main() {cin >> n >> b;for(int i = 1; i <= b; i++) {int s, e, t;cin >> s >> e >> t;se[s - 1].push_back(e);st[s - 1].push_back(t);len[s - 1]++;}for(int i = 0; i <= n; i++) {if(i != 0) ans[i] = max(ans[i - 1], ans[i]);for(int j = 0; j < len[i]; j++) {ans[se[i][j]] = max(ans[se[i][j]], ans[i] + st[i][j]);int tt = ans[se[i][j]] - se[i][j];for(int k = i + 1; k < se[i][j]; k++)ans[k] = max(ans[k], tt + k);}}cout << ans[n];return 0;}

小码哥爱数字


难度:钻石◎ 时间限制:1秒巴占用内存:128 M
小码哥很喜欢数字,有一天他找到老师给他出一道有关数字的题目。老师给他一个位数很多的正整数N(不超过 250位),让小码哥去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的非负整数。小码哥觉得老师在刁难他(因为小码哥才一年级),所以他找身为程序员的你编程对给定的N 和k寻找一种方案使得剩下的数字组成的新数最小。
格式
输入格式:(正整数,不超过250位),不必考虑前导0;入
(需要删除的数字个数),保证有输出,即 k小于n的位数。k
输出格式:最后剩下的最小数。

from collections import deque,Counter
from queue import PriorityQueuedef main():#code heres = str(int(input()))k = int(input())n = len(s)bits = n-k;que = PriorityQueue()for i in range(n-bits):que.put((s[i],i))cur_pos = -1ans = []all_zero = Truepos = Nonefor i in range(n-bits,n):que.put((s[i],i))while que.queue[0][1] <= cur_pos:que.get()v,idx = que.get()ans.append(v)if v!= '0':if all_zero:pos = len(ans)-1all_zero = Falsecur_pos = idxif all_zero:print(0)return print(''.join(ans[pos:]))if __name__ == '__main__':main();

最小串


少 难度:钻石时间限制:1秒巴 占用内存:128 M
给定一个由 8,组成的字符串S。可以交换相邻,1或1,2的位置(例1210)请输出原字符串经过任意转换后字典序最小的字符串。原字符串如:1221013长度不超过 105
格式
输入格式:字符串 S
输出格式:转化后字典序最小的字符串

#include <bits/stdc++.h>using namespace std;void solve() {string str, res; cin >> str;int n = str.length(), one = 0;for (int i = 0; i < n; ++i) one += str[i] == '1';for (int i = 0; i < n; ++i)if (str[i] == '2') {res += string(one, '1');for (int j = 0; j < n; ++j)if (str[j] != '1')res += str[j];cout << res << "\n";return;} else if (str[i] == '0') {int zero = 0, p = i;while (p < n && str[p] != '2') zero += str[p++] == '0';res += string(zero, '0');res += string(one, '1');for (int j = p; j < n; ++j) if (str[j] != '1') res +=str[j];cout << res << "\n";return;}cout << str << "\n";}int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);solve();return 0;}

小船过河


难度:黄金。时间限制:1秒四占用内存:128 M
几个人想要过河,但现在只有一条小船(有船夫)。小船每次最多载两人过河(不考虑船夫),且有最大承载重量t。请计算小船最少要来回几次。
格式
输入格式:第一行输入2个整数n和t(0 <n<10',0<t< 232 );第二行输入 n个整数代表每个人的体重(范围:[1,232-1],均小于t)。
输出格式:输出一个整数。

#include <bits/stdc++.h>using namespace std;int main() {cin.tie(NULL)->ios_base::sync_with_stdio(false);int n, m;cin >> n >> m;vector<int> v(n);for (auto &x : v)cin >> x;multiset<int> s;for (auto x : v)s.insert(x);int ans = 0;while (!s.empty()) {auto x = *s.rbegin();s.erase(s.find(x));if (!s.empty() && s.upper_bound(m - x) != s.begin())s.erase(prev(s.upper_bound(m - x)));++ans;}cout << ans << endl;return 0;}

摘果子


难度:钻石时间限制:1秒巴 占用内存:128 M
在一个果园中,有几种果树,他们分布在一条数轴上,有独立的坐标。小码哥被奖励了许多果子,但是这些果子需要他自己去摘,小码哥摘一次果子需要1分钟。
现在小码哥在第一颗果树下开始行走,从“棵走到“-1棵需要t;的时间。如果小码哥选择在这棵果树下摘,那么第一个1分钟将会摘下 ai的果子,第二次摘将摘下 ai-d;个果子,第三次将摘下 ai-2*d个果子,以此类推。但是小码哥的时间有限,只有t的总时间来摘果子。
请你帮助他算出,可以摘下的最大果子数是多少?
格式
输入格式:第一行输入正整数 n,t;第二行 n 个数,表示第一次可以摘的果子数 ai;第三行 n 个数,表示每次摘减少的可摘数 d;第四行几-1个数,表示数之间的间隔行走时间t

#include<bits/stdc++.h>using namespace std;int n,m,ct;long long ans;long long f[30][200005];int a[30],d[30],t[30];priority_queue<int>q;void solve(int w){
int sum=m-t[w];long long rans=0;if(sum<0) return ;for(int i=1;i<=w;i++){int ct=a[i];for(int j=1;j<=sum;j++){q.push(ct);ct-=d[i];if(ct<0) break;}}while(sum>0 && !q.empty()){rans+=q.top();q.pop();sum--;}ans=max(ans,rans);while(!q.empty()) q.pop();}int main(){cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) cin>>d[i];for(int i=2;i<=n;i++) cin>>t[i];for(int i=3;i<=n;i++) t[i]+=t[i-1];for(int i=1;i<=n;i++) solve(i);cout<<ans;return 0;}

泼墨淋漓


。时间限制:1秒四占用内存:128 M乡难度:黄金
小码哥有 n幅画,每幅画都有一个编号 ;,编号为非负数且可以相同。他想改变一些画的编号,使得幅画使用的不同编号数量不超过 k(1<k<n<200000),问最少需要改变多少幅画的编号?n
格式
输入格式:第一行输入 n,k;
第二行输入 ai。
输出格式:输出需要改变编号的画的最少数量。

#include<bits/stdc++.h> using namespace std;int n,k;
map<int,int> cnt;
vector<int> a;
int main( )
{cin>>n>>k;
for (int i=1,x;i<=n;++i){
cin>>x;
if(cnt.count (x))++cnt[x];
else cnt [x]=1;
}
for (map<int,int>::iterator it=cnt.begin();it!=cnt.end();++it)a.emplace_back(it->second);
sort (a.begin(),a.end ());
if(a.size()<=k){cout<<0<<endl;return 0;} 
int sum(0);
for (int i=1;i<=k;++i)
sum+=a[a.size()-i];
cout<<n-sum<<endl;return 0;
}

很重的枪


难度:白银巴: 占用内存:128 M时间限制:1秒
小码哥在玩打怪游戏,他的面前有n个怪,第个怪的血量为 a;。对于一个怪物,他有两种攻击方式:
1.使用 a次普通攻击消灭该怪物;
2.施放一次技能消灭该怪物。
小码哥最多只能使用 k 次技能,他想知道最少使用多少次普通攻击就可以消灭所有怪物。
格式
输入格式:第一行输入 n,k;
第二行输入 ai。
其中:0≤ai≤10°,1≤k<n<2x105
输出格式:输出使用普通攻击的最少次数

#include<bits/stdc++.h> using namespace std;
int a[200010];
int main( )
{int i,j,k,m,n;long long sum=0;scanf("%d%d",&n,&k);for(i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);for(i=1;i<=n-k;i++){sum+=a[i];}printf("%lld\n",sum);return 0;
}

小码哥的布阵指挥


少难度:黄金◎时间限制:1秒巴占用内存:128 M
小码哥手上有几 个部队,驻扎在一条马路上,可以把这个马路看作一条轴,小码哥的指挥所在原点,第i个部队在 a”的位置,现在重新布置部队的位置,设布置后的位置为bi,要求bi>ai,且每个部队之间的距离大于等于 X
说明:部队从第1个开始按顺序进行处理。一旦处理完,位置就不再发生变化。所以你需要做出对于每只部队来说,当前情况下最优解(当前情况指,序号在他之前的部队已经更新过后的情况),即在满足上述条件下,部队离小码哥越近越好。
格式
输入格式:第一行两个整数 n,X
第二行 n 个整数,表示 a[]。

#include<bits/stdc++.h> using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
#define rall(a) a.rbegin(), a.rend()
#define fi first
#define se second
#define rep(i,s,n) for(int i=s;i<n;i++)
#define repd(i,s,n) for(int i=s;i>=n;i--)
const int MOD=1e9+7;
const int maxN=5e3+1;const int INF=2e9;const int MB=20;const int MAX_LEN=200001;ull s[MAX_LEN];ull p[MAX_LEN];void solve(){ll n,x;cin>>n>>x;rep(i,0,n){cin>>s[i];p[i]=s[i];}ll pre=s[0];rep(i,1,n){sort(p,p+i);ll temp;rep(j,0,i){temp=p[j]+x;if (j==i-1)break;else{if (p[j+1]-temp>=x)break;}} s[i]=temp>s[i]?temp:s[i];p[i]=s[i];}rep(i,0,n)cout<<s[i]<<" " ;}int main(){solve();return 0;}

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

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

相关文章

LeetCode HOT 100刷题总结

文章目录 1 哈希1.1 1-1.两数之和&#x1f7e2;1.2 2-49.字母异位词分组&#x1f7e1;1.3 3-128.最长连续序列&#x1f7e1; 2 双指针2.1 4-283.移动零&#x1f7e2;2.2 6-15.三数之和&#x1f7e1;2.3 7-11.盛最多水的容器&#x1f7e1;2.4 8-42.接雨水&#x1f534; 3 滑动窗…

程控负载的功能实现原理

程控负载&#xff0c;顾名思义&#xff0c;就是可以通过程序控制其工作状态的负载设备。它的主要功能是模拟实际负载的工作状态&#xff0c;为电源、电子设备等提供稳定的工作电流或电压。程控负载的功能实现原理主要包括以下几个方面&#xff1a; 1. 电流和电压调节&#xff1…

开源模型应用落地-CodeQwen模型小试-SQL专家测试(二)

一、前言 代码专家模型是基于人工智能的先进技术&#xff0c;它能够自动分析和理解大量的代码库&#xff0c;并从中学习常见的编码模式和最佳实践。这种模型可以提供准确而高效的代码建议&#xff0c;帮助开发人员在编写代码时避免常见的错误和陷阱。 通过学习代码专家模型&…

ChatGPT开源的whisper音频生成字幕

1、前言 好了&#xff0c;那接下来看一下whisper开源库的介绍 有五种模型大小&#xff0c;其中四种仅支持英语&#xff0c;提供速度和准确性的权衡。上面便是可用模型的名称、大致的内存需求和相对速度。如果是英文版的语音&#xff0c;直接想转换为英文。 本来我是想直接在我的…

魔法程序员的奥妙指南:Java基本语法

作为一名魔法程序员&#xff0c;精通Java语言是至关重要的。Java作为一种强大的编程语言&#xff0c;在编写优质代码和开发强大应用程序时发挥着重要作用。让我们深入探讨Java基本语法的关键要点&#xff0c;从注释到变量&#xff0c;无所不包&#xff01; Java基本语法的神秘魔…

Linux网络编程:TCP并发服务器实现

目录 1、前言 2、多进程代码实现 2.1 创建新的进程 2.2 客户端接收响应函数 2.3 僵尸进程处理 2.4 完整代码 2.5 代码测试 3、多线程代码实现 3.1 创建新的线程 3.2 线程函数定义 3.3 完整代码 3.4 代码测试 4、总结 1、前言 前面实现了基本的TCP编程&#xf…

一文了解美国洛杉矶私有云的亮点优势

美国洛杉矶作为全球科技与经济的重要中心&#xff0c;其私有云服务的亮点优势备受瞩目。以下是对洛杉矶私有云优势的科普介绍。 首先&#xff0c;洛杉矶私有云的核心优势在于其安全性。在私有云环境中&#xff0c;数据被存储在专有的、隔离的服务器上&#xff0c;这意味着只有授…

同创优配正规炒股A股三大指数集体收涨 创指重回1900点关口

查查配5月9日电 周四,A股三大指数震荡上扬。截至收盘,上证指数涨0.83%,报3154.32点;深证成指涨1.55%,报9788.07点;创业板指涨1.87%,报1900.01点。总体上个股涨多跌少,全市场超4200只个股上涨。沪深两市今日成交额9011亿元,较上个交易日放量367亿元。 同创优配是AAA 级诚信经营…

【win10 文件夹数量和看到不一致查看隐藏文件已经打开,Thumb文件作妖】

目录 任务介绍&#xff1a;重命名规则修改前修改后 实现思路VB代码实现BUG犯罪现场&#xff08;眼见不一定为实&#xff09;破案1&#xff1a;抓顶风作案的反贼&#xff01;&#xff01;&#xff01;破案2&#xff1a;破隐身抓刺客&#xff01;&#xff01;&#xff01;杀器&am…

机器人系统ros2-开发实践08-了解如何使用 tf2 来访问坐标帧转换(Python)

tf2 库允许你在 ROS 节点中查询两个帧之间的转换。这个查询可以是阻塞的&#xff0c;也可以是非阻塞的&#xff0c;取决于你的需求。下面是一个基本的 Python 示例&#xff0c;展示如何在 ROS 节点中使用 tf2 查询帧转换。 本教程假设您已完成tf2 静态广播器教程 (Python)和tf…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月10日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年5月10日 星期五 农历四月初三 1、 商务部&#xff1a;汽车以旧换新补贴可与新能源汽车购置税减免等叠加享受。 2、 教育部&#xff1a;京津优质中小学基础教育资源同雄安共享。 3、 医保局&#xff1a;发挥零售药店等不同…

HarmonyOS NEXT星河版之美团外卖点餐功能实战(上)

文章目录 一、目标二、开撸2.1 目录结构2.2 页面模块拆分2.3 主体拆分布局2.4 底部购物车布局2.5 顶部布局2.6 点菜布局---左2.7 菜品Item封装2.7 点菜布局---右2.8 主页面整体布局 三、小结 一、目标 二、开撸 2.1 目录结构 2.2 页面模块拆分 将页面主体拆为三部分&#xff…

Middle for Mac:简洁高效的文本编辑软件

追求简洁与高效&#xff1f;Middle for Mac将是您文本编辑的最佳选择。这款Mac平台上的文本编辑器&#xff0c;以其独特的魅力和实用的功能&#xff0c;赢得了众多用户的喜爱。 Middle注重用户体验&#xff0c;采用简洁直观的界面设计&#xff0c;让您能够迅速上手并享受高效的…

【设计模式】JAVA Design Patterns——Abstract-document

&#x1f50d; 目的 使用动态属性&#xff0c;并在保持类型安全的同时实现非类型化语言的灵活性。 &#x1f50d; 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全&#xff0c;并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部…

docker学习笔记(五):harbor仓库搭建与简单应用

harbor私有仓库 简介 Docker容器应用的开发和运行离不开可靠的镜像管理&#xff0c;虽然Docker官方也提供了公共的镜像仓库&#xff0c;但是从安全和效率等方面考虑&#xff0c;部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管…

组件目录存放问题

目录 一、思考引入 二、组件分类 三、组件分类的目的 一、思考引入 .vue文件本质无区别&#xff0c;而路由相关的组件&#xff0c;为什么要放在views目录呢&#xff1f; 二、组件分类 .vue文件分2类&#xff1a;页面组件和复用组件。注意&#xff1a;都是.vue文件&#xff…

漫画对话 ai翻译

復讐の教科書ーー81 81-1 いい加減吐け&#xff01;&#xff01;冴木&#xff01;&#xff01; 快说吧&#xff01;&#xff01;冴木&#xff01;&#xff01; お前が一連の事件の犯人なんだろ&#xff01;&#xff1f; 你就是连续事件的犯人吧&#xff01;&#xff1f; だか…

游戏工作室如何利用惯性动作捕捉技术制作动画?

随着动捕设备不断进步和游戏行业的发展&#xff0c;惯性动作捕捉技术在游戏开发领域逐渐普及。惯性动作捕捉技术&#xff0c;可以精准捕捉现实世界中的真人动作&#xff0c;并将其精准应用于虚拟角色上&#xff0c;使游戏中的角色动作可以呈现出更写实、逼真和沉浸感&#xff0…

##10 卷积神经网络(CNN):深度学习的视觉之眼

文章目录 前言1. CNN的诞生与发展2. CNN的核心概念3. 在PyTorch中构建CNN4. CNN的训练过程5. 应用:使用CNN进行图像分类5. 应用:使用CNN进行时序数据预测代码实例7. 总结与展望前言 在深度学习的领域中,卷积神经网络(CNN)已经成为视觉识别任务的核心技术。自从AlexNet在2…

光伏设备制造5G智能工厂数字孪生可视化平台,推进行业数字化转型

光伏设备制造5G智能工厂数字孪生可视化平台&#xff0c;推进行业数字化转型。光伏设备制造5G智能工厂数字孪生可视化平台是光伏行业数字化转型的重要一环。通过数字孪生平台&#xff0c;光伏设备制造企业可以实现对生产过程的全面监控和智能管理&#xff0c;提高生产效率&#…