P1088 [NOIP2004 普及组] 火星人

embedded/2024/12/22 16:22:45/

思路就是 全排列中找到题目所给的组合 然后加上的最小数就是往后面数几个组合 就是要求的那个排列 然后输出

  • 我写的那一份代码ac了两个点 其他 全部tle 估计是比较的时间复杂度太高了
  • 暴力写法的时间复杂度比内置函数要大很多
    在这里插入图片描述
    暴力208ms 内置31ms

暴力

#include<bits/stdc++.h>
using namespace std;
int res[10010];
int num[10010];
int n,m;
int cnt;
bool flag;
void dfs(int x){if(flag==true) return;if(x>n){cnt++;if(cnt==m+1){//到点输出for(int i=1;i<=n;i++){cout<<res[i]<<" \n"[i==n];}flag=true;}}for(int i=1;i<=n;i++){  if(cnt==0) i=res[x];//这一步相当于剪纸了 直接指向题目给的数组  可以自己cout一下if(num[i]!=1){num[i]=1;res[x]=i;dfs(x+1);num[i]=0;}else continue;}
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cnt=0;memset(num,0,sizeof(num));cin>>n>>m;for(int i=1;i<=n;i++) cin>>res[i];dfs(1);//开始深度搜索return 0;
}

内置函数

```#include<bits/stdc++.h>
using namespace std;
int res[10010];
int n,m;
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
// 	cnt=0;
// 	memset(num,0,sizeof(num));cin>>n>>m;for(int i=1;i<=n;i++) cin>>res[i];for(int i=1;i<=m;i++) next_permutation(res+1,res+1+n);  //next_permutation函数for(int i=1;i<=n;i++) cout<<res[i]<<" \n"[i==n];return 0;
}

next_permutation

有迭代器

bool customCompare(int a, int b) {return a > b; // 如果a大于b,则返回true,表示a应该在b之前  这样返回从大到小
}
其实和sort差不多 外面for循环就是生成多少个全排列 顺序是从小到大(默认)
格式:next_permutation(ord.begin() + 1, ord.begin() + 1 + n, customCompare)

http://www.ppmy.cn/embedded/123389.html

相关文章

关于Elastic Search与MySQL之间的数据同步

目录 前言 思路分析 同步调用 异步通知 监听binlog 选择 实现数据同步 思路 运行项目 声明交换机、队列 1&#xff09;引入依赖 2&#xff09;声明队列交换机名称 3&#xff09;声明队列交换机 发送MQ消息 接收MQ消息 前言 Elastic Search中的酒店数据来自于MyS…

工具方法 - 面试中回答问题的技巧

在面试中&#xff0c;回答问题的技巧尤为重要。它不仅展示了你的知识和能力&#xff0c;还体现了你处理压力和沟通的技巧。以下是一些在面试中常用的回答技巧&#xff0c;以及如何在这些场合有效地回应问题的示例&#xff1a; 1. 抓住问题的核心 面试官通常会提出直接的问题&a…

unity3D雨雪等粒子特效不穿透房屋效果实现(粒子不穿透模型)

做项目有时候会做天气模拟&#xff0c;模拟雨雪天气等等。但是容易忽略一个问题&#xff0c;就是房屋内不应该下雨或者下雪&#xff0c;这样不就穿帮了嘛。 下面就粒子穿透物体问题做一个demo。 正常下雨下雪在室内的话&#xff0c;你可以看到&#xff0c;粒子是穿透建筑的。…

【Unity踩坑】Unity更新Google Play结算库

一、问题描述&#xff1a; 在Google Play上提交了app bundle后&#xff0c;提示如下错误。 我使用的是Unity 2022.01.20f1&#xff0c;看来用的Play结算库版本是4.0 查了一下文档&#xff0c;Google Play结算库的维护周期是两年。现在需要更新到至少6.0。 二、更新过程 1. 下…

C++ | Leetcode C++题解之第455题分发饼干

题目&#xff1a; 题解&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int m g.size(), n s.size();int count 0;for (int i 0, j 0; i < …

SpringBoot技术:实现古典舞在线交流平台的秘诀

摘 要 随着互联网技术的发展&#xff0c;各类网站应运而生&#xff0c;网站具有新颖、展现全面的特点。因此&#xff0c;为了满足用户古典舞在线交流的需求&#xff0c;特开发了本古典舞在线交流平台。 本古典舞在线交流平台应用Java技术&#xff0c;MYSQL数据库存储数据&#…

算法笔记(七)——哈希表

文章目录 两数之和判定是否互为字符重排存在重复元素存在重复元素 II字母异位词分组 哈希表&#xff1a;一种存储数据的容器&#xff1b; 可以快速查找某个元素&#xff0c;时间复杂度O(1)&#xff1b; 当频繁查找某一个数时&#xff0c;我们可以使用哈希表 创建一个容器&#…

65 注意力分数_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录回顾拓展到高维度总结掩蔽softmax操作加性注意力缩放点积注意力小结练习 回顾 上一节使用了高斯核来对查询和键之间的关系建模。上一节中的高斯核指数部分可以视为注意力评分函数&#xff08;attention scoring function&#xff09;&#…