首页 > 其他分享 >8.22集训笔记

8.22集训笔记

时间:2023-08-22 12:12:16浏览次数:180  
标签:sort return int 笔记 -- 8.22 排序 集训 cmp

上午简单排序

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10;
struct T{
    int x,y,z;
}a[N];

bool cmp(T a,T b){
    return a.z < b.z; // 返回是否合法,或者说 是否不需要交换 
}
double dis(int i,int j){
    return sqrt(
        pow(a[i].x - a[j].x, 2) + 
        pow(a[i].y - a[j].y, 2) + 
        pow(a[i].z - a[j].z, 2) ); 
}
int main(){
    int n,x,y,z; cin>>n;
    for(int i=1; i<=n; i++){
        cin>>x>>y>>z; a[i] = {x,y,z};// c++11
    }
    sort(a+1, a+1+n, cmp);
    double ans=0;
    for(int i=1; i<n; i++) ans += dis(i, i+1);    
    cout<<fixed<<setprecision(3)<<ans;
    return 0;
}
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,a[N];

bool cmp(int a,int b){
    return a < b;
}
// 冒泡:每次比较两个相邻的数 
int cnt=0; // 逆序对 
void bubble_sort(){
    for(int i=n; i>=1; i--)// 第 n-i+1 轮冒泡
        for(int j=1; j<i; j++) 
            if(a[j] > a[j+1]) {
                swap(a[j], a[j+1]);
                cnt++; // 每次冒泡,就是解决一个逆序对 
            }
}
// 选择:选择最大的放在最后 
void select_sort(){
    for(int i=n; i>=1; i--){
        int k = i; // 最大值的位置
        for(int j=1; j<i; j++) if(a[k]<a[j]) k=j;
        swap(a[k], a[i]); 
    }
}
// 插入:将当前元素插入到前面的有序序列中 
void insert_sort(){
    for(int i=2; i<=n; i++){
        int k = i; // 要插入的元素位置
        for(int j=i-1; j>=1; j--){
            if(a[k] >= a[j]) break;
            swap(a[k], a[j]), k=j;
        } 
    }
}
int main(){
    freopen("data.in", "r", stdin);
    scanf("%d", &n);
    for(int i=1; i<=n; i++) scanf("%d", &a[i]);

//    sort(a+1, a+1+n); // 默认升序,less<int>()
//    sort(a+1, a+1+n, cmp);   // 自定义比较函数 cmp 
//    sort(a+1, a+1+n, less<int>());   // 升序 less<int>()
//    sort(a+1, a+1+n, greater<int>()); // 降序 greater<int>()
//    sort 本身内部封装 快速排序,堆排序,插入排序 
//  快速排序:O(nlogn) 选择一个基准值 b,将元素分为两部分,左边 <b, 右边 >=b 
//    bubble_sort();
//    select_sort();
    insert_sort();
    for(int i=1; i<=n; i++) printf("%d ", a[i]);
    return 0;
}

下午二分

标签:sort,return,int,笔记,--,8.22,排序,集训,cmp
From: https://www.cnblogs.com/hellohebin/p/17648222.html

相关文章

  • Golang - Slice 学习笔记
    Slice1、概述:Slice又称动态数组,依托数组实现,可以方便的进行扩容、传递等,实际使用中比数组更灵活。2、实现原理Slice依托数组实现,底层数组对用户屏蔽,在底层数组容量不足时可以实现自动重分配并生成新的Slice。接下来按照实际使用场景分别介绍其实现机制。2.1Slcie底层结构源......
  • object - c 语言基础 进阶笔记 随笔笔记
    重点知识Engadget(瘾科技)StackOverFlow(栈溢出)Code4Apprespon魏先宇的程序人生第一周快捷键:Alt+上方向键跳到最上面 Alt+下方向键跳到最下面      Alt+左方向键跳到最左面  Alt+右方向键跳到最右面      Alt+shift+方向键 可以批量复制内容,在按方向......
  • 【分享】字符串常见函数学习笔记
    字符串常见函数学习笔记 1:查找函数:find()//返回值string::nposstrings="goodgoodstudy,daydayup";intpos1=s.find("good");//查找子串"good"intpos2=s.find("good",4);//从下标4开始,查找子串"good"cout<<pos1<......
  • 资讯_Windows 8笔记本电脑关机后电源灯要亮一段时间,是否正常?
    Windows8笔记本电脑关机后电源灯要亮一段时间,是否正常故障现象:随着Windows8的普及,多次遇到用户反馈安装Windows8的笔记本在执行关机动作后,屏幕关闭之后电源等指示灯还要亮几十秒,甚至几分钟不等。——此现象其实是由于Windows8的混合关机特质所致,并不属于故障的范畴。原因分析:在W......
  • golang 学习笔记 -- for
    forrange 遍历取不到所有元素的指针orgItems:=[]int{1,2,3}varnewItems[]*intfor_,item:=rangeorgItems{fmt.Println(item)//123fmt.Printf("%p\n",&item)//每次地址都是相同的newItems=append(newItems,&item)}for_,ite......
  • 【学习笔记】DSU on Tree
    概述DSUonTree即树上启发式合并,重点不在“合并”,而在利用树链剖分的性质对子树问题进行复杂度正确的分治。算法流程递归处理轻儿子的答案递归处理重儿子的答案重新遍历轻儿子子树,计算当前子树的答案如果当前节点是轻儿子,重新遍历整棵子树,清除答案发现一个节点......
  • 「学习笔记」扩展 KMP(Z 函数)
    对于个长度为\(n\)的字符串\(s\)。定义\(z[i]\)表示\(s\)和\(s[i,n-1]\)(即以\(s[i]\)开头的后缀)的最长公共前缀(LCP)的长度。\(z\)被称为\(s\)的Z函数。这里注意,在Z函数中,\(z[0]=0\),但是根据LCP的定义,\(z[0]=n\),具体应该为何值,根据题目意思来判断。本文更偏......
  • 【Boost】boost.log 要点笔记
    常用简写:namespacelogging=boost::log;namespacesrc=boost::log::sources;namespaceexpr=boost::log::expressions;namespacesinks=boost::log::sinks;namespaceattrs=boost::log::attributes;namespacekeywords=boost::log::keywords;要点:结构图要牢......
  • [Trick] [算法学习笔记] 线段树
    事先声明:本文并非线段树教学。只是一些理解Trick。若您需从0学起线段树建议您移步其他博文呢qwq感谢Idea提供尺子姐姐的博客!,尺子好闪,拜谢尺子!我们在学习线段树的时候,对于乘法“lazytag先乘再加”是不是难以理解?这里介绍一种线段树思考方法。我们可以将序列中的每个元素......
  • Programming abstractions in C阅读笔记:p123-p126
    《ProgrammingAbstractionsInC》学习第50天,p123-p126,总结如下:一、技术总结1.notaion这也是一个在计算机相关书籍中出现的词,但有时却不是那么好理解,因为它可以指代很多对象,这里做一个记录。示例:p124。InC,youcanuseanycharacterarraytoholdstringdata.charstr[6]={......