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

目录

斐波那契数列的组合

三国杀

数列分段

小码哥的跳棋游戏新编

能量供应

小码哥爱数字

最小串

小船过河

摘果子

泼墨淋漓

很重的枪

小码哥的布阵指挥


斐波那契数列的组合

#include<bits/stdc++.h> 
 
using namespace std;
 
// 斐波那契数列 1 1 2 3 5 8 13 21 34 55 89 144
 
int 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 here
    N,M=map(int, input () .split ())
    num=list(map(int, input () .split ()))
    s=0
    res=1
    for i in range(N):
        if s+num[i]<=M:
            s+=num[i]
        else:
            res+=1 
            s=num[i]
    print(res)
    pass


if __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 PriorityQueue

def main():
    #code here
    s = 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 = -1
    ans = []
    all_zero = True
    pos = None
    for 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)-1
                all_zero = False
        
        cur_pos = idx
    
    if 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.mfbz.cn/a/608087.html

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

相关文章

pytorch加载模型出现错误

大概的错误长下面这样&#xff1a; 问题出现的原因&#xff1a; ​很明显&#xff0c;我就是犯了第一种错误。 网上的修改方法&#xff1a; 我觉得按道理哈&#xff0c;确实&#xff0c;蓝色部分应该是可以把问题解决了的​。​但是我没有解决&#xff0c;因为我犯了另外一个错…

[Linux]如何在Ubuntu 22.04系統安裝Node-red?

Node-red是一個建立在Node.js上的視覺化程式設計工具&#xff0c;其常見的應用情境為建置或轉換各項硬體之間的通信協定的物聯網或工聯網場域&#xff0c;其可藉由設置來安裝第三方應用模組來建置多樣的通信協定節點&#xff0c;包含modbus in/out, mqtt in/out, websocket in/…

Mac YOLO V9推理测试

环境&#xff1a; Mac M1 (MacOS Sonoma 14.3.1) Python 3.11PyTorch 2.1.2 一、准备工作 工程及模型下载&#xff1a;​​​​​​​https://github.com/WongKinYiu/yolov9 git clone https://github.com/WongKinYiu/yolov9.git 克隆后安装相关依赖&#xff08;没啥依赖好装…

全网最详细教学如何部署JVS-无忧企业文档

无忧企业文档项目直达地址 项目的简单介绍 JVS是面向软件开发团队可以快速实现应用的基础开发框架&#xff0c;采用微服务分布式框架&#xff0c;提供丰富的基础功能&#xff0c;集成众多业务引擎&#xff0c;它灵活性强&#xff0c;界面化配置对开发者友好&#xff0c;底层容…

2024年软件测试最全jmeter做接口压力测试_jmeter接口性能测试_jmeter压测接口(3),【大牛疯狂教学

既有适合小白学习的零基础资料&#xff0c;也有适合3年以上经验的小伙伴深入学习提升的进阶课程&#xff0c;涵盖了95%以上软件测试知识点&#xff0c;真正体系化&#xff01; 由于文件比较多&#xff0c;这里只是将部分目录截图出来&#xff0c;全套包含大厂面经、学习笔记、…

日志打印传值 传引用 右值引用性能测试(Linux/QNX)

结论 Linux平台和qnx平台优化后传值性能都是比传引用的差&#xff0c;也比传右值的差&#xff0c;因此传参时有必要传递引用。 测试代码 #include <cstdint> #include <ctime> #include <string>#ifdef __linux__#define ITERATIONS 10000000 #else#defin…

Windows命令行一键安装、配置WSL的方法

本文介绍在Windows电脑中&#xff0c;通过命令行的方式&#xff0c;快速、方便安装适用于Linux的Windows子系统&#xff08;Windows Subsystem for Linux&#xff0c;WSL&#xff09;的方法。 WSL是由微软开发的一项功能&#xff0c;允许在Windows操作系统上运行Linux发行版系统…

expected an expression报错

“expected an expression” 是一种编程错误&#xff0c;通常发生在程序中某个地方需要一个表达式&#xff08;expression&#xff09;的位置&#xff0c;但实际上没有提供一个有效的表达式。 据此&#xff0c;我在main.h—define宏定义中发现了问题&#xff0c;即&#xff1a;…

excel中怎么跳转到指定的单元格?

也许你会有这样的需求&#xff0c;如A1单元格中显示B100这种单元格地址&#xff0c;怎么做以点一下就跳转到B100&#xff1f; 一、设置公式 B1HYPERLINK("#"&MID(CELL("FILENAME",A1),FIND("]",CELL("FILENAME",A1))1,99)&&…

找出100~200的全部素数

解题思路&#xff1a; 判别 m 是否为素数的算法是这样的&#xff1a;让 m 被2~除&#xff0c;如果 m 不能被2~之中任何一个整数整除&#xff0c;就可以确定 m 是素数。为了记录 m 是否为素数&#xff0c;可以用一个布尔变量 prime 来表示。在循环开始时先设 prime 为真…

品鉴中的精神内涵:如何通过红酒品味生活的美好与哲学

红酒不仅仅是一种物质享受&#xff0c;更是一种精神体验。在品鉴云仓酒庄雷盛红酒的过程中&#xff0c;我们能够品味到生活的美好与哲学&#xff0c;感受到红酒所蕴含的精神内涵。 红酒的精神内涵源于其酿造过程中所融入的时间和匠心。一瓶上好的红酒需要经过长时间的陈年&…

重学java 34.API 5.工具类

有失才有悟&#xff0c;崩塌后的重建只会更牢固 —— 24.5.9 一、System类 1.概述: 系统相关类,是一个工具类 2.特点: a.构造私有,不能利用构造方法new对象 b.方法都是静态的 3.使用: 类名直接调用 4.方法 方法 …

vscode中配置 leetcode 插件

1. 环境准备 插件安装介绍 介绍 VS Code 1.23.0 Node.js 10 注意&#xff1a;请确保Node在PATH环境变量中。您也可以通过设定 leetcode.nodePath 选项来指定 Node.js 可执行文件的路径。 1.1 Node.js 安装 首先&#xff0c;您需要解压下载的 .tar.xz 文件。您可以使用以下…

汇编--栈和寄存器

栈 栈是一种运算受限的线性表&#xff0c;其限定仅在表尾进行插入和删除操作的线性表&#xff0c;表尾也被叫做栈顶。简单概括就是我们对于元素的操作只能够在栈顶进行&#xff0c;也造就了其先进后出的结构特性。 栈 这种内存空间其实本质上有两种操作&#xff1a;将数据放入…

Python自动化测试五大框架(测试员收藏夹必备)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

知从科技战略客户经理张志强受邀出席2024 AutoSec中国汽车网络安全与数据安全峰会

4月11-12日&#xff0c;AutoSec8周年年会暨中国汽车网络安全及数据安全合规峰会在上海成功举办。此次峰会吸引了来自全球各地的头部汽车网络安全企业、OEM厂商、安全专家和学者等齐聚盛会&#xff0c;零距离共话智能网联汽车产业的新发展、新趋势。 知从科技董事长成云霞亲自带…

番外篇 | YOLOv8改进之在C2f中引入MSBlock模块(来源于YOLO-MS) | 轻量化网络结构

前言:Hello大家好,我是小哥谈。YOLO-MS是一种基于YOLO(You Only Look Once)的目标检测算法,它利用多尺度特征图提取和融合的方式来检测不同尺度的物体。YOLO-MS在准确率和速度方面都有很好的表现,特别适用于实时场景下的物体检测。在YOLO-MS提出的一种针对于实时目标检测…

【intro】GraphSAGE

论文 https://arxiv.org/pdf/1706.02216 abstract 大图中节点的低维embedding已经被证明在各种预测任务中非常有用&#xff0c;然而&#xff0c;大多数现有的方法要求在embedding训练期间图中的所有节点都存在;这些先前的方法属于直推式&#xff08;transductive&#xff09…

Vue2——前端笔记

Vue 一、Vue核心1.1、vue简介1.2、初始vue1.3、模板语法1.4、数据绑定1.5、el与data的两种写法1.6、MVVM模型1.7、Vue中的数据代理1.7.1、Object.defineProperty() 理解1.7.2、Vue中的数据代理 1.8、事件处理1.8.1、事件的基本用法1.8.2、事件修饰符1.8.3、键盘事件 1.9、计算属…

【递归、回溯和剪枝】二叉树中的深搜

⼆叉树中的深搜深度优先遍历&#xff08;DFS&#xff0c;全称为 Depth First Traversal&#xff09;&#xff0c;是我们树或者图这样的数据结构中常⽤的⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分⽀&#xff0c;直到⼀条路径上的所有节点都被遍历完毕&#xff0c;然后…