龙星尘 2023-01-29 10:05 采纳率: 42.9%
浏览 41
已结题

C++算法题(不需要数据结构,帮我修正一下错误)

描述:
「公子」在战斗时可以对一些敌人添加「断流」标记。
现在有 n 个排成一排的敌人,编号分别为 1~n。

每一轮攻击,「公子」会击败所有带有「断流」标记的敌人,并在该轮攻击结束后,将与这些敌人编号相邻且存活的敌人添加「断流」标记,发起下一轮攻击。若无剩余敌人,则不再发起攻击。

初始时,「公子」可以对其中最多 m 个敌人添加「断流」标记并发起攻击。
他想知道初始时对哪几个敌人添加「断流」标记可以使攻击轮数尽可能少。
当然,你初始时添加「断流」标记的敌人个数可以小于 m,你也可以对同一个敌人多次添加「断流」标记,但每次添加均消耗标记次数。
输入格式:
两个整数n,m.
输出格式:
第一行一个整数 k,表示你初始时添加「断流」标记的敌人个数。你需要保证 1<=k<=m。

第二行 k 个整数,表示初始时添加「断流」标记的敌人的编号。

你需要保证在所有方案中,你的方案的攻击轮数最少。任何合法的方案均可通过。
样例
【样例 1 输入】
7 2
【样例 1 输出】
2
6 2
【样例 2 输入】
11 5
【样例 2 输出】
4
2 5 10 7
【样例 3 输入】
131 4
【样例 3 输出】
4
50 17 115 82
【样例 4 输入】
3141592 6
【样例 4 输出】
6
1308998 2879795 785399 1832597 261800 2356196
数据范围与提示
本题开启自定义校验器(Special Judge)。
对于 100% 的数据,1<=m<=10^5,1<=n<=10^9,保证 m<=n。

我提交过后显示错误,有没有人帮我改写一下:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    int a[n]={0},x=2,y=n-1;
    for(int i=0;i<m;i+=2)
      a[i]=x,a[i+1]=y,x+=2,y-=2;
    for(int i=0;i<m;i++)
      cout<<a[i]<<" ";
    return 0; 
}

  • 写回答

1条回答 默认 最新

  • 社区专家-Monster-XH 2023-01-29 10:15
    关注

    代码没问题,可能不是最优解吧,不是最优解,因为题目的数据范围很大,需要使用优化的算法,否则会超时。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月29日
  • 创建了问题 1月29日

悬赏问题

  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥15 comsol仿真压阻传感器