GDPU 竞赛技能实践 天码行空7

1. 区间合并

在这里插入图片描述
输入

5
5 6
1 4
10 10
6 9
8 10

输出

1 4
5 10

💖 Main.java

import java.util.Arrays;
import java.util.Scanner;public class Main
{static int N = 100010;static int n;//	区间类static class Node{int l;// 区间左端点int r;// 区间右端点public Node(int l, int r){this.l = l;this.r = r;}}public static void main(String[] args){
//		输入区间数据Scanner sc = new Scanner(System.in);n = sc.nextInt();Node[] range = new Node[n];for (int i = 0; i < n; i++){int l = sc.nextInt();int r = sc.nextInt();range[i] = new Node(l, r);}//		数组按 区间左端点进行排序  Arrays.sort(range, (o1, o2) -> o1.l - o2.l);//		连续被覆盖的大区间 [left,right]int left = range[0].l;int right = range[0].r;for (int i = 1; i < n; i++){
//			 当前区间的左边界 <= 前一个连续大区间:两区间能衔接起来if (range[i].l <= right){right = range[i].r;} else // 两区间衔接不上了{System.out.println(left + " " + right);// 输出前一个大区间
//				更新大区间的边界left = range[i].l;right = range[i].r;}}System.out.println(left + " " + right);// 输出最后一个大区间}}

2. 模拟退火(SA)

👨‍🏫 参考题解

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<cstdio>
#include<cmath>
using namespace std;
int tt,T=50;
double a,t0=100,t1,t2=1e-8,k=0.98;
double f(double x){return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-a*x; 
}
double rd(double x){return rand()*1.0/RAND_MAX*x;
}
int main()
{srand(time(NULL));double x,y,tx,ty,px,py;scanf("%d",&tt);while(tt--){scanf("%lf",&a);t1=t0;x=0;px=0;py=f(0);while(t1>t2){y=f(x);for(int i=1;i<=T;i++){tx=x+(rand()%2*2-1)*t1;if(tx<-0.01||tx>100.01) continue;ty=f(tx);if(ty<y){x=tx;y=ty;}else{if(rd(1)<exp((y-ty)/t1)){x=tx;y=ty;}}if(ty<py){px=tx;py=ty;}}t1=t1*k;}if(px<0.0) px=0.0;if(px>100.0) px=100.0;printf("%.4f\n",f(px));}return 0;
}

3. 谁在中间

在这里插入图片描述

💖 Main.java

import java.util.Arrays;
import java.util.Scanner;public class Main
{static int N = (int) 1e5 + 10;static int[] a = new int[N];public static void main(String[] args){Scanner sc = new Scanner(System.in);
//		输入int T = sc.nextInt();while (T-- > 0){int n = sc.nextInt();for (int i = 0; i < n; i++)a[i] = sc.nextInt();Arrays.sort(a, 0, n);// 排序System.out.println(a[n >> 1]);// 取中间值}}
}

输入

1
5 1 2 4 5 3

输出

3

4. 求逆序对

在这里插入图片描述

💖 Main.java

归并求逆序对

import java.util.Scanner;public class Main
{static int N = 100010;static int[] q = new int[N], tmp = new int[N];public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();for (int i = 0; i < n; i++)q[i] = sc.nextInt();long cnt = mergeSort(0, n - 1);System.out.println(Math.max(0, cnt - k));}/*** @param l 区间左边界* @param r 区间右边界* @return long 类型的区间内的逆序对*/private static long mergeSort(int l, int r){
//		递归出口if (l >= r)return 0;// 区间只有一个数了,没有逆序队//		分int mid = l + r >> 1;long res = mergeSort(l, mid) + mergeSort(mid + 1, r);//		治 (归并)int k = 0;// 临时数组指针int i = l;// 左区间指针int j = mid + 1;// 右区间指针while (i <= mid && j <= r){if (q[i] <= q[j])// 无逆序对tmp[k++] = q[i++];else{// 右边区间的数比左边区间的数小,有逆序对tmp[k++] = q[j++];res += mid - i + 1;}}
//		断后if (i <= mid)tmp[k++] = q[i++];if (j <= r)tmp[k++] = q[j++];//		物归原主for (i = l, j = 0; i <= r; i++, j++){q[i] = tmp[j];}return res;}
}

输入

3 1
2 2 1

输出

1

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

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

相关文章

QT:事件机制

作业&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include<QPushButton> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAME…

【通信原理笔记】【三】——3.8 载波同步

文章目录 前言一、正弦信号二、载波同步2.1、平方环法2.2、科斯塔斯环法&#xff08;castas&#xff09;2.3 相位模糊 总结 前言 不管是幅度调制还是角度调制&#xff0c;都离不开正弦信号&#xff0c;其中相干解调都要求恢复发送端使用的正弦载波信号&#xff0c;这一节就来深…

python的Flask实战

from flask import Flask appFlask(__name__)点击Flask同时点击键盘ctrl即可查看Flask的默认初始化函数 def __init__(self,import_name: str,static_url_path: str | None None,static_folder: str | os.PathLike[str] | None "static",static_host: str | None …

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分&#xff1a;10 分 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上 的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &…

大话设计模式之享元模式

享元模式是一种结构型设计模式&#xff0c;旨在有效地支持大量细粒度的对象共享&#xff0c;从而减少内存消耗和提高性能。 在享元模式中&#xff0c;对象分为两种&#xff1a;内部状态&#xff08;Intrinsic State&#xff09;和外部状态&#xff08;Extrinsic State&#xf…

录屏软件有哪些?分享4款好用的工具!

随着网络视频内容的日益丰富&#xff0c;录屏软件成为了许多用户必备的工具。无论你是需要制作教学视频、游戏直播、会议记录还是简单的视频剪辑&#xff0c;一款功能强大、操作简便的录屏软件都是不可或缺的。那么&#xff0c;市面上究竟有哪些录屏软件值得一试呢&#xff1f;…

代理模式:控制对象访问的智能方式

在面向对象的软件开发中&#xff0c;代理模式是一种结构型设计模式&#xff0c;它为其他对象提供一个代理或占位符以控制对这个对象的访问。代理模式在实现权限控制、延迟初始化和远程对象访问等方面非常有用。本文将详细介绍代理模式的定义、实现、应用场景以及优缺点&#xf…

Jackson 2.x 系列【23】注解内省 AnnotationIntrospector

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. AnnotationIntrospector3. JacksonAnnotationIntrospector4. Annotati…

基于springboot实现医疗病历互换系统项目【项目源码+论文说明】

基于springboot实现医疗病历交互系统演示 摘要 进入21世纪&#xff0c;计算机技术迅速向着网络化的、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台&#xff0c;取而代之的是支持网络、支持多种数据信息的新一代网络版应用软件&#xff0c;形成了信息化的社会。信息…

【canvas】canvas基础使用(七):绘制图像

简言 学习canvas如何绘制图片或视频。 绘制图像 给定一个图像&#xff0c;一般使用drawImage()方法绘制。 drawImage 绘制图像 Canvas 2D API 中的 CanvasRenderingContext2D.drawImage() 方法提供了多种在画布&#xff08;Canvas&#xff09;上绘制图像的方式。 语法&…

C语言单链表详解

链表和顺序表的区别 顺序表的底层存储空间是连续的&#xff0c;链表的底层存储空间是不连续的&#xff0c;链表的每个节点需要额外的指针来指向下一个节点&#xff0c;占用更多的存储空间。 顺序表的随机访问性能好&#xff0c;时间复杂度为O(1)&#xff0c;链表的随机访问性能…

【C++软件调试技术】C++软件开发维护过程中典型调试问题的解答与总结

目录 1、引发C软件异常的常见原因有哪些&#xff1f; 2、排查C软件异常的常用方法有哪些&#xff1f; 3、为什么要熟悉常见的异常内存地址&#xff1f; 4、调试时遇到调用IsBadReadPtr或者IsBadWritePtr引发的异常&#xff0c;该如何处理&#xff1f; 5、如何排查GDI对象泄…