<蓝桥杯软件赛>零基础备赛20周--第8周第2讲--排序的应用

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集
20周的完整安排请点击:20周计划
每周发1个博客,共20周(读者可以按自己的进度选“正常”和“快进”两种计划)。
每周3次集中答疑
,周三、周五、周日晚上,在QQ群上答疑:

在这里插入图片描述

文章目录

  • 1. C++ STL sort()
  • 2. Python的sort()和sorted()
  • 3. Java的sort()
  • 4. 例题
    • 例1 排序的基本应用
    • 例2 排序的基本应用
    • 例3 自定义排序比较函数
    • 例4 结构体排序
    • 例5 结构体排序
  • 5. 习题

第8周第2讲:排序的应用
  在算法竞赛中,一般不需要自己写这些排序算法,而是直接使用库函数,例如C++的sort()函数,Python的sort()和sorted()函数,Java的sort()函数。

1. C++ STL sort()

  有以下排序函数。
  sort (first, last, comp) 对[first, last) 范围内的元素进行排序。注意排序的范围[first, last),包括first,不包括last。comp是比较函数,sort()自带4种comp排序:less、greater、less_equal、greater_equal。缺省情况下,程序是按从小到大的顺序排序的,less可以不写。也可以用自定义的比较函数进行排序,见下面第3、4行的例子。

  stable_sort (first, last, comp) 和sort()相似,不同之处在于,对于 [first, last) 范围内值相同的元素,该函数不会改变它们的相对位置。
  partial_sort(first, middle, last, , comp) 以交换元素存储位置的方式实现部分排序,将 [first, last) 范围内最小(或最大)的 middle-first 个元素移动到 [first, middle) 区域中,并对这部分元素做升序(或降序)排序。
  nth_element(first, nth, last, comp) 采用默认的升序时,该函数从某个序列中找到第 k 小的元素e(序列下标从0开始),并将e移动到序列中第k的位置处。而且,整个序列经过nth_element()函数处理后,所有位于e之前的元素都比e小,所有位于e之后的元素都比e大。
  is_sorted (first, last, comp) 检测 [first, last) 范围内是否已经排好序,默认检测是否按升序排序。
  下面是例子。

#include<bits/stdc++.h>
using namespace std;
bool my_less(int i, int j)     {return (i < j);}  //自定义小于
bool my_greater(int i, int j)  {return (i > j);}  //自定义大于int main (){int a[]={1,3,2,2,6,8,5,4};sort(a+2,a+6);                        //对前4个排序,结果:1 3 2 2 6 8 5 4sort(a,a+8,less<int>());              //结果:1 2 2 3 4 5 6 8sort(a,a+8,my_less); 	              //自定义排序,结果:1 2 2 3 4 5 6 8sort(a,a+8,greater<int>());           //从大到小排序,结果:8 6 5 4 3 2 2 1sort(a,a+8,my_greater);               //结果:8 6 5 4 3 2 2 1stable_sort(a+3,a+8);                 //结果:8 6 5 1 2 2 3 4int b[]={3,7,2,5,6,8,5,4};partial_sort(b,b+3,b+8);              //结果:2 3 4 7 6 8 5 5partial_sort(b,b+3,b+8,greater<int>());   //结果:8 7 6 2 3 4 5 5if(is_sorted(b,b+3,greater<int>())) cout<<"is sorted"<<endl;  //输出:is sortedvector<int> c = {1,2,3,4,5,6,7,8};sort(c.begin(),c.end(),my_greater);      //结果:8 7 6 5 4 3 2 1string s="hello world";sort(s.begin(),s.end(),greater<char>());  cout<<s;                               //输出: wroolllhed    注意最后一个是空格return 0;
}

  利用cmp()函数,sort()可以对结构体进行排序,见后面的例题。
  C++的sort()有两个优点:(1)能在原数组上排序,不需要新的空间;(2)能在数组的局部区间上排序。

2. Python的sort()和sorted()

  Python提供了两个排序函数,sort()和sorted()。
1、sort和sorted()的区别
  sort()是应用在list上的方法,而sorted 可以对所有可迭代的对象进行排序操作。 
  一个关键的区别是:sort是在原列表上排序,而sorted()产生一个新的列表,不改变原列表。
2、sorted()
  sorted(iterable, key=None, reverse=False)
  参数说明:
  iterable:可迭代对象。
  key:用来进行比较的元素,只有一个参数,具体的函数的参数取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  reverse:排序规则,reverse = True 降序,reverse = False 升序(默认)。
  返回值:重新排序的列表。
3、sort()和sorted()的例子

a = [3,7,9,3,4,1,2]
a.sort()            #直接在a上升序排序,a改变了
print(a)            #[1, 2, 3, 3, 4, 7, 9]
b = sorted(a,reverse = True)
print(b)            #排序结果给b,输出:[9, 7, 4, 3, 3, 2, 1]
print(a)            #a不变,输出:[1, 2, 3, 3, 4, 7, 9]a.sort(reverse = True)  #降序
print(a)            #输出:[9, 7, 4, 3, 3, 2, 1]a = "abadae"
print(sorted(a))    #输出:['a', 'a', 'a', 'b', 'd', 'e']
#这样是错的:a.sort(),因为sort()应用在list上,a不是lists1 = [('b', 'A', 15), ('c', 'B', 12), ('e', 'B', 10)]
s2 = sorted(s1, key=lambda s: s[2])                 # 按第3个排序,默认升序
print(s2)           #输出:[('e', 'B', 10), ('c', 'B', 12), ('b', 'A', 15)] 
s3 = sorted(s1, key=lambda s: s[2], reverse=True)   # 按第3个排序,降序
print(s3)           #输出:[('b', 'A', 15), ('c', 'B', 12), ('e', 'B', 10)]s = "hello world"
s = ''.join(sorted(s, reverse=True))
#Python中字符串不可变,不能直接在原字符串上进行排序
#可以将字符串转换为列表进行排序,然后再转回字符串
print(s) #输出:wroolllhed     注意最后一个是空格

  Python的sort()不能在数组的一部分上做排序,只能对整个数组排序;sorted()虽可以对一部分排序,但是不能直接在原数组上排序。

3. Java的sort()

  有Arrays.Sort()、Collections.sort()。
  Arrays.sort()可以对数组,字符串等排序。Collections.sort()是对list集合排序,list也可以放数字、字符串。自定义比较见后面的例题。
  例子:

import java.util.*;
public class Main {public static void main(String[] args) {int[] a = {8, 3, 6, 2, 3, 5, 9}; Arrays.sort(a);                 //升序for (int num : a)   System.out.print(num+" ");  //输出: 2 3 3 5 6 8 9 System.out.println();Integer[] b = {2, 3, 4, 1, 0, 6, 5}; Arrays.sort(b,Collections.reverseOrder());   //降序//不支持基本类型int,double,char,如果是int型需要改成Integer,float要改成Floatfor (int num : b)   System.out.print(num+" ");  //输出: 6 5 4 3 2 1 0      System.out.println();String s = "hello world";char[] chars = s.toCharArray();Arrays.sort(chars);s = new String(chars);   //Java中字符串是不可变的,因此不能直接在原字符串上进行排序。可以将字符串转换为字符数组进行排序,然后再将排序后的字符数组转换回字符串。System.out.println(s);     //输出: dehllloorw ArrayList<Integer> list  = new ArrayList<>();list.add(36);list.add(52);list.add(15);Collections.sort(list);System.out.print(list);       //输出: [15, 36, 52]  }
}

4. 例题

例1 排序的基本应用

输油管道问题
  已知n个油井的y坐标,把它们排个序, y 0 ≤ y 1 ≤ . . . ≤ y n − 1 y_0≤y_1≤...≤y_{n-1} y0y1...yn1
  设主管道的y坐标是m,那么就是求 ∣ y 0 − m ∣ + ∣ y 1 − m ∣ + . . . + ∣ y n − 1 − m ∣ |y_0-m|+|y_1-m|+...+|y_{n-1}-m| y0m+y1m+...+yn1m的最小值。
  m肯定大于 y 0 y_0 y0小于 y n − 1 y_{n-1} yn1,猜测是平均值,或者中位数。容易证明是中位数,例如n=7,m是 y 3 y_3 y3;n=8,m是 y 3 y_3 y3 y 4 y_4 y4
C++代码

#include<bits/stdc++.h>
using namespace std;
int y[10001];
int main(){int n; cin>>n;for (int i=0; i<n; i++)  {int x;cin>>x>>y[i];      //忽略x坐标}sort(y,y+n);           //对n个y值排序  int m = y[n/2];        //m是中位数int ans = 0;for (int i=0; i<n; i++)  ans += abs(m-y[i]);cout<<ans;return 0;
}

Java代码

import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] y = new int[n];for (int i = 0; i < n; i++) {int x = sc.nextInt();y[i] = sc.nextInt();}Arrays.sort(y);int m = y[n/2];int ans = 0;for (int i = 0; i < n; i++)   ans += Math.abs(m - y[i]);System.out.println(ans);}
}

Python代码

n = int(input())
y = []
for i in range(n):x, yi = map(int, input().split())y.append(yi)
y.sort()
m = y[n//2]
ans = 0
for i in range(n): ans += abs(m - y[i])
print(ans)

例2 排序的基本应用

肖恩的排序

  先考虑简单直接的做法。题目要求“所有位置i都有A[i] > B[i]”,先对A从小到大排序,然后枚举B数组,对某个B[i],若有个A[j]>B[i],那么A[j]~A[n-1]都合法。找到所有这种排列,就是答案。但是这样做计算量极大。
  题目只要求A[i]>B[i],那么A[]和B[]内部的顺序对答案没有影响。对于位置i,A[i]可以是A[]中所有大于B[i]的元素。所以对A[]和B[]排序方便计算。
  先从大到小对A[]和B[]排序,然后枚举B[]数组,步骤如下:
  B[0]对应的A[]的元素,是大于B[0]的所有A[]的元素,设范围是A[i]~A[j]。
  B[1]对应的A[]的元素,包括了两部分:第一部分是A[i]~A[j],因为B[1] ≤ B[0];第二部分是A[j]之后大于B[1]的那些A[]的元素。第一部分可以利用上一步的结果。另外,因为当前位置要选一个A[],所以符合条件的数减一。
  继续枚举其他B[]的元素,直到结束。
  把每次符合要求的A[]的元素个数乘起来,就是答案。
C++代码。分析计算复杂度,第9行和第10行的sort()是O(nlogn)的,第12行和第13行合起来是O(n2),总复杂度O(n2)。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10,MOD=1e9+7;
int a[N],b[N];
int main() {long long n=0; cin>>n;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<n;i++) cin>>b[i];sort(a,a+n,greater<int>());    //A数组从大到小排序sort(b,b+n,greater<int>());    //B数组从大到小排序long long cnt=0,ans=1;for(int i=0,j=0;i<n;i++) {     //枚举每个B[i]while(j<n && a[j]>b[i])    //找所有大于b[i]的数cnt++,j++;ans *= cnt--;ans %= MOD;}cout<<ans<<endl;
}

Java代码

import java.util.Arrays;
import java.util.Scanner;
public class Main {static final int N = 100010;static final int MOD = 1000000007;public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[] a = new int[N];int[] b = new int[N];for (int i = 0; i < n; i++)     a[i] = scan.nextInt();for (int i = 0; i < n; i++)     b[i] = scan.nextInt();Arrays.sort(a, 0, n);                           //从小到大排序for (int i = 0; i < n/2; i++) 
{int tmp=a[i]; a[i]=a[n-1-i];a[n-1-i]=tmp;}   //从大到小Arrays.sort(b, 0, n);                           //从小到大排序for (int i = 0; i < n/2; i++) 
{int tmp=b[i]; b[i]=b[n-1-i];b[n-1-i]=tmp;}   //从大到小long cnt = 0, ans = 1;int j = 0;for (int i = 0; i < n; i++) {while (j < n && a[j] > b[i]) {cnt++;j++;            }ans *= cnt;cnt--;ans %= MOD;}System.out.println(ans);}
}

Python代码

n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
a.sort(reverse=True)
b.sort(reverse=True)
cnt, ans = 0, 1
j = 0
for i in range(n):while j < n and a[j] > b[i]:cnt += 1j +=1ans *= cntcnt -= 1ans %= int(1e9+7)
print(ans)

例3 自定义排序比较函数

  用这一题熟悉sort()中的自定义比较函数。
数位排序
C++代码。本题看似不好做,实际上可以利用sort (first, last, comp)中的自定义比较函数comp,简单地实现。

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int a[N], b[N];
int sum(int x){              //计算x的数位和int ans = 0;while(x)  ans += x % 10, x /= 10;return ans;
}
bool cmp(int x, int y){     //自定义比较,数位和小的在前面if(b[x] == b[y])  return x < y;return b[x] < b[y];
}
int main(){int n, m;   cin >> n >> m;for(int i = 1; i <= n; i++) {a[i] = i;b[i] = sum(i);}sort(a + 1, a + 1 + n, cmp);cout<<a[m]<<endl;return 0;
}

java代码。注意Arrays.sort()如何自定义比较。

import java.util.*; 
public class Main {public static int sum(int num) {int ans = 0;while(num>0) {ans+=num%10;num/=10;}return ans;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int [][]a = new int[n][2];for (int i=0;i<n;i++){a[i][0] = sum(i+1);a[i][1] = i+1;} Arrays.sort(a,(v1,v2)->{if (v1[0]!=v2[0])    return v1[0]-v2[0];          return v1[1]-v2[1];});System.out.println(a[m-1][1]);}
}

Python代码。用lambda自定义比较。

def sum(x):    # 计算每一个数的数位和ans = 0while x:ans += x % 10x //= 10return ans
n=int(input())
m=int(input())
a=list(range(1,n+1))     #赋值a[0]~a[n],注意rang(1,n+1)最后一个是a[n]
a.sort(key=lambda i:sum(i))
print(a[m-1])

例4 结构体排序

排队接水
  用这一题熟悉结构体排序
C++代码

#include<bits/stdc++.h>
using namespace std;
struct node{ int t,id;};          //定义结构体a
struct node a[1010];              //定义结构体数组
bool cmp(node x,node y) { return x.t<y.t;}      //定义“小于”运算符
int main(){int n; cin>>n;for(int i=1; i<=n; i++){cin>>a[i].t;a[i].id=i;                 //序号存起来}sort(a+1,a+n+1,cmp);           //排序for(int i=1; i<=n; i++)        //输出cout<<a[i].id<<" ";cout<<endl;                    //换行double time=0;                 //总时间for(int j=n-1; j>=1; j--) {    //等待人数,由n-1开始int i=n-j;                 //当前最少时间的人序号 + 要等待的人数=ntime += a[i].t*j;          //累加}printf("%.2lf",time/n);        //算平均时间,保留两位小数return 0;
}

Java代码

import java.util.Arrays;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();double time=0;node[] a=new node[n+10];for (int i = 1; i <=n ; i++) a[i]=new node(i,sc.nextInt());Arrays.sort(a,1,n+1,(x,y)->(x.t-y.t));for (int i = 1; i <=n ; i++) System.out.print(a[i].id+" ");for (int i = 1; i <=n; i++) time+=a[i].t*(n-i);     System.out.println();System.out.printf("%.2f",time/n);}
}
class node{int id;int t;public node(int id, int t) {this.id = id;this.t = t;}
}

Python代码

n = int(input())
t = list(map(int, input().split()))
a = [(id, e) for id, e in enumerate(t)]
a.sort(key=lambda x:x[1])
print(' '.join([str(i + 1) for i, e in a]))
time = [0] * n
tmp = 0
for i, (j, e) in enumerate(a):time[i] = tmptmp += e
print('{:.2f}'.format(sum(time) / len(time)))

例5 结构体排序

分香蕉
  这是一道有点啰嗦的排序题,需要做多次排序:(1)香蕉按质量排序;(2)猴子按分配到的香蕉排序;(3)猴子按编号排序。最好用结构体排序。
C++代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int banana[N],part[N];   //香蕉、分成m份
struct Monkey{int w,id,y;    //猴子的重量、编号、吃到的香蕉
}mon[N];
bool com1(Monkey a, Monkey b){ return a.w  > b.w;}  //比较重量
bool com2(Monkey a, Monkey b){ return a.id < b.id;}  //比较编号
int main(){int n,m;   cin>>n>>m;for(int i=1;i<=n;i++) cin >> banana[i];sort(banana+1,banana+1+n);    //香蕉排序for(int i=1;i<=m;i++)    {cin >> mon[i].w;mon[i].id=i;}sort(mon+1,mon+1+m,com1);  //猴子按重量排序for(int i=1;i<=n;i++)part[i%m] += banana[n-i+1];   //把香蕉分成m份for(int i=1;i<=m;i++)mon[i].y = part[i%m];         //分给m个猴子sort(mon+1,mon+1+m,com2);      //按编号排序,也就是回到初始排序for(int i=1;i<=m;i++)cout<< mon[i].y <<" ";return 0;
}

Java代码

import java.util.*;  public class Main {  static class Monkey {  int w, id, y;   //猴子的重量、编号、吃到的香蕉  public Monkey(int w, int id, int y) {  this.w = w;  this.id = id;  this.y = y;  }  }    public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  int n = scanner.nextInt();  int m = scanner.nextInt();  ArrayList<Integer> banana = new ArrayList<>();  for (int i = 0; i < n; i++) banana.add(scanner.nextInt());          Collections.sort(banana);    ArrayList<Monkey> monkeys = new ArrayList<>();  for (int i = 0; i < m; i++) monkeys.add(new Monkey(scanner.nextInt(), i + 1, 0));          Collections.sort(monkeys, (a, b) -> b.w - a.w);  //猴子按重量排序  int[] part = new int[m];  for (int i = 0; i < n; i++) part[i % m] += banana.get(n - i - 1);  //把香蕉分成m份          for (int i = 0; i < m; i++) monkeys.get(i).y = part[i % m];  //分给m个猴子          Collections.sort(monkeys, (a, b) -> a.id - b.id); //按编号排序,回到初始排序  for (int i = 0; i < m; i++) System.out.print(monkeys.get(i).y + " ");  //输出每个猴子的香蕉数量          }  
}

Python代码

n,m=map(int,input().split())
banana=list(map(int,input().split()))  #香蕉质量
banana.sort(reverse=True)              #香蕉排序
monkey=list(map(int,input().split()))  #猴子重量
id=[i for i in range(1,m+1)]           #猴子编号
part=[0 for i in range(1,m+1)]
weight=list(zip(id,monkey,part))
weight=map(list,weight)
weight=sorted(weight,key=lambda x:x[1],reverse=True) #猴子按重量排序
for i in range(len(banana)):    #把香蕉分成m份weight[i%m][2] += banana[i]
weight.sort()                      #猴子按编号排序
for i in range(len(monkey)):print(weight[i][2],end=' ')

5. 习题

统计数字
错误票据
奖学金
外卖店优先级
双向排序
第几个幸运数字
插入排序
排个序
图书管理员
瑞士轮
肖恩的大富翁

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

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

相关文章

MFC 绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线.

MFC 绘制三种不同圆形以及绘制正弦函数曲线 本文使用visual Studio MFC 平台实现绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线. 关于基础工程的创建请参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-vis…

百度收录批量查询工具,免费SEO优化排名工具

拥有一个在搜索引擎中得到良好收录的网站对于个人和企业都至关重要。而百度&#xff0c;作为中国最大的搜索引擎&#xff0c;其收录情况直接影响着网站的曝光度和流量。 百度搜索引擎是中文用户获取信息的重要途径之一。而在这个竞争激烈的网络环境中&#xff0c;了解自己网站…

重启路由器可以解决N多问题?

为什么重启始终是路由器问题的首要解决方案? 在日常的工作学习工作中,不起眼的路由器是一种相对简单的设备,但这仍然是我们谈论的计算机。 这种廉价的塑料外壳装有 CPU、随机存取存储器 (RAM)、只读存储器 (ROM) 和许多其他组件。 该硬件运行预装的软件(或固件)来管理连接…

vue之mixin混入

vue之mixin混入 mixin是什么&#xff1f; 官方的解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的…

严蔚敏数据结构题集 p18(2.25——2.30)(c语言代码实现)

目录 2.25假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。 2.26要求同2.25题。是对单链表编写求C的算法 2.…

[架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

目录 前言&#xff1a; 一、CPU寄存器级的复用&#xff1a;CPU寄存器 二、指令级复用&#xff1a;二进制指令 三、过程级复用&#xff1a;汇编语言 四、函数级复用&#xff1a;C语言 五、对象级复用&#xff1a;C, Java, Python 六、组件级复用 七、服务级复用 八、微…

Swift下如何使用#if条件编译

一、OC使用条件编译 OC中可以使用宏定义&#xff0c;再使用条件编译 #define USER_CUSTOM使用 #if USER_CUSTOM //其他代码 #endif二、Swift使用条件编译 Swift 不像ObjectC一样&#xff0c;通过定义一个变量&#xff0c;然后使用**#if #endif** 方法。swift需要设置一下才能…

2 文本分类入门:TextCNN

论文链接&#xff1a;https://arxiv.org/pdf/1408.5882.pdf TextCNN 是一种用于文本分类的卷积神经网络模型。它在卷积神经网络的基础上进行了一些修改&#xff0c;以适应文本数据的特点。 TextCNN 的主要思想是使用一维卷积层来提取文本中的局部特征&#xff0c;并通过池化操…

搭建Appium工具环境

1、安装Java Development Kit&#xff08;JDK&#xff09; 前往Oracle官网下载JDK。 在https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 找到最新版本的JDK。根据操作系统选择适合的版本&#xff0c;并根据指示下载安装程序。 安装JDK。运行下载的安…

Unittest单元测试之unittest用例执行顺序

unittest用例执行顺序 当在一个测试类或多个测试模块下&#xff0c;用例数量较多时&#xff0c;unittest在执行用例 &#xff08;test_xxx&#xff09;时&#xff0c;并不是按从上到下的顺序执行&#xff0c;有特定的顺序。 unittest框架默认根据ACSII码的顺序加载测试用例&a…

从薛定谔的猫——量子理论基础

在介绍量子理论基础之前&#xff0c;先介绍一下薛定谔的猫的故事&#xff0c;这个故事可能大多数朋友并不陌生&#xff0c;下面首先回顾一下&#xff1a; 薛定谔的猫是一个在量子力学中用来说明量子叠加态和测量结果的思维实验。这个思维实验最早由物理学家Erwin Schrdinger在1…

【技术干货】宇视IPC音频问题解决步骤

近期技术人员从宇视官网下载sdk进行二次开发时&#xff0c;在启动实时直播&#xff0c;并通过回调函数拿到流数据&#xff0c;发现没有音频流数据。 通过下面的数据发现&#xff0c;codeType此字段一直是28&#xff0c;代表的是H.264数据&#xff0c;但未没发现有音频的数据包…

【Altera】Cyclone10 FPGA DDR3使用

目录 开发板 硬件 框图 原理图 测试工具 DDR IP核配置 调试及遇到的问题 读写仲裁时序 问题1.拉高read后&#xff0c;wait一直没反应 问题2.DDR校正不过的一个可能性 延伸学习 开发板 Intel官方提供c10的开发套件&#xff1a;Intel Cyclone 10 GX FPGA Development …

替代升级虚拟化 | ZStack Cloud云平台助力中节能镇江公司核心业务上云

数字经济正加速推动各行各业的高质量升级发展&#xff0c;云计算是数字经济的核心底层基础设施。作为云基础软件企业&#xff0c;云轴科技ZStack 坚持自主创新&#xff0c;自研架构&#xff0c;产品矩阵可全面覆盖数据中心云基础设施&#xff0c;针对虚拟化资源实现纳管、替代和…

Selenium——isDisplayed()、isEnabled()、isSelected()

判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法&#xff0c;可以使用findElements返回的数量判断&#xff1b;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…

mysql-日期和时间函数

1.获取日期、时间 SELECT CURDATE(),CURTIME(),NOW(),UTC_DATE(),UTC_TIME() FROM dual; 2.日期与时间戳的转换 SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW()),FROM_UNIXTIME(UNIX_TIMESTAMP()) FROM dual; 3.获取月份、星期、星期数、天数等函数 SELECT YEAR(CURDATE()),MON…

【带头学C++】----- 九、类和对象 ---- 9.1 类和对象的基本概念----(9.1.4---9.1.6)

目录 9.1.4 设计立方体类 ​编辑 9.1.5 成员函数在类的外部实现 9.1.6 类在其他源文件的实现步骤&#xff08;实现类在不同文件的实现&#xff0c;后续引出构造函数&#xff09; 注意:类定义在同文件testclass.h中&#xff0c;而testclass.cpp是用来实现&#xff08;声明&…

项目实战一-性能测试筑基

这里写目录标题 一、为什么程序会出现性能问题、性能问题是怎么出现的&#xff1f;二、功能测试和性能测试的区别是什么&#xff1f;三、核心性能指标1、用户角度核心a、响应时间&#xff1a;b、并发量 2、成本角度3、运维角度面试题、并发量和吞吐量得区别&#xff1f;a、吞吐…

Centos7安装GItLab(在线版)

基础环境准备 1.配置清华大学镜像仓库 新建仓库配置文件使用 vim /etc/yum.repos.d/gitlab-ce.repo 命令&#xff0c;输入以下内容,保存 [gitlab-ce] nameGitlab CE Repository baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck0 enabl…

【文献阅读笔记】基于自监督的异常检测和定位:SSM

2022 IEEE TRANSACTIONS ON MULTIMEDIA 领域&#xff1a;异常检测 目标&#xff1a;图像输入数据 文章目录 1、模型2、方法2.1、random masking2.2、restoration network2.3、损失函数2.4、推理时的渐进细化 3、实验4、引用5、想法 1、模型 训练&#xff1a; 每个图像实时生成随…