当前位置: 首页 > news >正文

算法课作业2 OJ for Divide and Conquer

https://vjudge.net/contest/581947

A - Ultra-QuickSort

题意

每次给n个无序的数,互不重复,问最少需要多少次必要的交换操作使n个数有序。

思路

看一眼想到逆序数,然后验证了逆序数的个数符合样例,但想了一个3 2 1的话实际上只需要交换一次,但题意说的是必要交换次数也不一样是最优的交换次数,那样就太难了。
于是就简化问题求一个序列逆序数的个数,就用归并了上课讲过,可以在归并拆分返回的时候进行求逆序对,求逆序对两种,一种求每个数的右边比它小的数的个数,一种求每个数左边比它大的个数,我用第二种做的,归并返回的时候,两个数组都是有序的可以求右边的数组中每个元素,对于左边一共有几个比他大的,代码能力还行,wa了一次因为数组开的int 归并一次就写对了,我感觉我又行了哈哈哈。

#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;const int maxn=500005;
long long a[maxn],box[maxn];
long long ans;
void mergesort(int left,int right)
{if(left>=right) return;int mid=(left+right)/2;mergesort(left,mid);mergesort(mid+1,right);int j=left;for(int i=mid+1;i<=right;i++){while(a[j]<a[i]&&j<=mid){j++;}	ans=ans+mid-j+1;}	int i=left;j=mid+1;int t=1;while(i<=mid&&j<=right){if(a[i]<=a[j])box[t++]=a[i++];elsebox[t++]=a[j++];}while(i<=mid)box[t++]=a[i++];while(j<=right)box[t++]=a[j++];t=1;for(int i=left;i<=right;i++)a[i]=box[t++];
}
int main()
{int n;while(scanf("%d",&n)&&n!=0){memset(a,0,sizeof(a));for(int i=1;i<=n;i++)scanf("%lld",&a[i]);ans=0;mergesort(1,n);
//		for(int i=1;i<=n;i++)
//			printf("%d ",a[i]);
//		printf("\n");		printf("%lld\n",ans);}	return 0;
}

B - Hanoi Tower Troubles Again!

题意

给n个柱子,这个人要从第一根柱子到第n个柱子挨个往上面放球,球编号从1开始递增,要求两个相邻球编号和为完全平方数。

思路

简单模拟题

#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;int box[55];
int main()
{int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);memset(box,0,sizeof(box));int i=1;while(1){int flag=0;for(int j=1; j<=n; j++){if(box[j]==0){box[j]=i++;flag=1;break;}else{int k=(int)sqrt(box[j]+i);if(k*k==(box[j]+i)){box[j]=i++;flag=1;break;}}}if(flag==0) break;}printf("%d\n",i-1);}
}

C - Fibonacci Again

思路:模拟题

#include<bits/stdc++.h> 
using namespace std;const int MAXN=1000005;
int f[MAXN]; 
int main()
{f[0]=7;f[1]=11;for(int i=2;i<=1000000;i++)	f[i]=f[i-1]%3+f[i-2]%3;int t;while(scanf("%d",&t)!=EOF){if(f[t]%3==0)printf("yes\n");		elseprintf("no\n");}return 0;
}

E - Fire Net

题意

给n*n(n<=4)的格子,格子上可能有墙,或者为空地,空地可以建设碉堡,碉堡可以上下左右射击,射不穿墙,问最多可以建设多少碉堡?

思路

DFS模拟简单题
一共最多16个格子嘛,我就是从上往下,从左往右,挨个尝试每个位置,然后对于每个位置能不能安装,只需要扫描它的上方和左方是否有碉堡就可以啦,注意一下边界就好。

#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;int m[10][10];
int n;
int ans;
void dfs(int start,int cnt)
{if(start>n*n){ans=max(ans,cnt);
//		if(cnt>=4)
//		{
//			for(int i=1; i<=n; i++,printf("\n"))
//				for(int j=1; j<=n; j++)
//					printf("%d ",m[i][j]);
//			printf("\n");
//		}return;}int row=(start-1)/n+1;int col=(start-1)%n+1;for(int i=start; i<=n*n; i++){
//		取if(m[row][col]!=1){int flag=1;for(int j=col-1; j>=1&&m[row][j]!=1; j--)if(m[row][j]==2){flag=0;break;}for(int j=row-1; j>=1&&m[j][col]!=1; j--)if(m[j][col]==2){flag=0;break;}if(flag){m[row][col]=2;dfs(i+1,cnt+1);m[row][col]=0;}}
//		不取dfs(i+1,cnt);}return;
}
int main()
{while(scanf("%d",&n)&&n!=0){ans=0;getchar();for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){char c;scanf("%c",&c);if(c=='.') m[i][j]=0;else m[i][j]=1;}getchar();}for(int i=1; i<=n*n; i++){dfs(i,0);}printf("%d\n",ans);}
}
/*
4
.X..
....
XX..
....
*/

G - Maximum Subarray Sum

题意

最大连续子序列和

思路

简单题,注意开long long和可能超int

#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=2e5+5;
int a[MAXN];
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);long long maxx=0;long long ans=a[1];for(int i=1;i<=n;i++){maxx=maxx+a[i];ans=max(maxx,ans);if(maxx<0) maxx=0;}printf("%lld",ans);
}

J - Beat the Spread!

#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>int main()
{int T;scanf("%d",&T);while(T--){int a,b;scanf("%d%d",&a,&b);if((a+b)%2){printf("impossible\n");continue;}int maxx=(a+b)/2;int minn=a-maxx;if(maxx<0||minn<0){printf("impossible\n");continue;}printf("%d %d\n",maxx,minn);}
}

相关文章:

算法课作业2 OJ for Divide and Conquer

https://vjudge.net/contest/581947 A - Ultra-QuickSort 题意 每次给n个无序的数&#xff0c;互不重复&#xff0c;问最少需要多少次必要的交换操作使n个数有序。 思路 看一眼想到逆序数&#xff0c;然后验证了逆序数的个数符合样例&#xff0c;但想了一个3 2 1的话实际上…...

申请全国400电话的步骤及注意事项

导语&#xff1a;随着企业的发展&#xff0c;越来越多的公司开始意识到全国400电话的重要性。本文将介绍申请全国400电话的步骤及注意事项&#xff0c;帮助企业顺利办理相关手续。 一、了解全国400电话的概念和优势 全国400电话是一种统一的客服热线号码&#xff0c;以“400”…...

C++ 的设计模式之 工厂方法加单例

在下面的示例中&#xff0c;我将演示如何创建一个工厂类&#xff0c;该工厂类能够生成四个不同类型的单例对象&#xff0c;每个单例对象都通过单独的工厂方法进行创建。 #include <iostream> #include <mutex>// Singleton base class class Singleton { protecte…...

Deploy、Service与Ingress

Deployment 自愈 介绍:控制Pod&#xff0c;使Pod拥有多副本&#xff0c;自愈&#xff0c;扩缩容等能力 # 清除所有Pod&#xff0c;比较下面两个命令有何不同效果&#xff1f; kubectl run mynginx --imagenginxkubectl create deployment mytomcat --imagetomcat:8.5.68 # 自…...

定制化推送+精细化运营,Mobpush助力《迷你世界》用户留存率提升23%

随着智能设备的市场下沉&#xff0c;手游市场迎来了爆发式增长&#xff0c;《迷你世界》作为一款于2015年推出的手游&#xff0c;一经问世就饱受欢迎。上线短短三年&#xff0c;迷你世界在应用商店下载量已经高达2亿次&#xff0c;周下载量两千万&#xff0c;稳居第一名&#x…...

深度学习零基础教程

代码运行软件安装&#xff1a; anaconda:一个管理环境的软件–>https://blog.csdn.net/scorn_/article/details/106591160&#xff08;可选装&#xff09; pycharm&#xff1a;一个深度学习运行环境–>https://blog.csdn.net/scorn_/article/details/106591160&#xf…...

简单测试一下 展锐的 UDX710 性能

最近在接触 联通5G CPE VN007 &#xff0c;发现使用的是 展锐的Unisoc UDX710 CPU&#xff0c;正好简单的测试一下这颗CPU CPU信息 UDX710 是一颗 双核 ARM Cortex-A55 处理器&#xff0c;主频高达 1.35GHz processor : 0 BogoMIPS : 52.00 Features : fp…...

一百九十、Hive——Hive刷新分区MSCK REPAIR TABLE

一、目的 在用Flume采集Kafka中的数据直接写入Hive的ODS层静态分区表后&#xff0c;需要刷新表&#xff0c;才能导入分区和数据。原因很简单&#xff0c;就是Hive表缺乏分区的元数据 二、实施步骤 &#xff08;一&#xff09;问题——在Flume采集Kafka中的数据写入HDFS后&am…...

智慧公厕:探索未来城市环境卫生设施建设新标杆

智慧公厕是当代城市建设的一项重要举措&#xff0c;它集先进技术、人性化设计和智能管理于一体&#xff0c;为人们提供更为舒适、便捷和卫生的厕所环境。现代智慧公厕的功能异常丰富&#xff0c;从厕位监测到多媒体信息交互&#xff0c;从自动化清洁到环境调控&#xff0c;每一…...

高压放大器在无线电能中应用有哪些

高压放大器是一种用于放大电信号的放大器&#xff0c;可以将输入的低电压信号放大到更高的输出电压水平。在无线电通信和其他相关领域中&#xff0c;高压放大器具有广泛的应用。本文将详细介绍高压放大器在无线电能中的应用。 无线电发射&#xff1a;高压放大器在无线电发射中起…...

若依集成MybatisPlus

目录 一、依赖变更 1. MybatisPlus依赖 2. pagehelper依赖修改 二、相关配置 1. yml配置 1.1 注释掉原Mybatis配置 1.2 加入MybatisPlus的配置 1.3 注释掉原MybatisConfig.class 三、其他配置及功能实现 1. 自动补全create_time等信息 2. 实现MP分页 3. 实现Mybati…...

List小练习,实现添加图书,并且有序遍历

SuppressWarnings({"all"})public static void main(String[] args) {List list new LinkedList(); // List list new Vector(); // List list new ArrayList();list.add(new Book1("红楼小梦",35.5,"曹雪芹"));list.add(new B…...

代码随想录二刷 Day42

62.不同路径 简单题目自己就可以写出来&#xff0c;注意下创建二维vector的方法就可以&#xff0c; dp table如下 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,0));for (int i 0; i < n; i ) {dp[…...

【Android】Drawable 和src 的区别和理解

详细讲解 在 Android 中&#xff0c;ImageView 的 src 属性和 background 属性用于设置不同类型的图像内容。下面是它们的详细解释&#xff1a; src 属性&#xff1a;该属性用于设置 ImageView 中显示的图像内容。它可以接受一个图像资源的引用&#xff0c;可以是一个图片文件…...

Linux网络-UDP/TCP协议详解

Linux网络-UDP/TCP协议详解 2023/10/17 14:32:49 Linux网络-UDP/TCP协议详解 零、前言一、UDP协议二、TCP协议 1、应答机制2、序号机制3、超时重传机制4、连接管理机制 三次握手四次挥手5、理解CLOSE_WAIT状态6、理解TIME_WAIT状态7、流量控制8、滑动窗口 丢包问题9、拥塞控制…...

C语言从入门到高级

C语言是“编程语言之首”&#xff08;很多人学习的第一门编程语言&#xff09;&#xff0c;学好一门编程语言需要明确其学习路径&#xff0c;下面分享下我的学习路径&#xff0c;希望对您有所帮助。 一、C语言入门 &#xff08;1&#xff09;C语言概述 &#xff08;2&#x…...

【MultiOTP】在Linux上使用MultiOTP进行SSH登录

在前面的文章中【FreeRADIUS】使用FreeRADIUS进行SSH身份验证已经了解过如何通过Radius去来实现SSH和SUDO的登录&#xff0c;在接下来的文章中只是将密码从【LDAP PASSWORD Googlt OTP】改成了【MultiOTP】生成的passcode&#xff0c;不在需要密码&#xff0c;只需要OTP去登录…...

性能超越 Clickhouse | 物联网场景中的毫秒级查询案例

1 物联网应用场景简介 物联网&#xff08;Internet of Things&#xff0c;简称 IoT&#xff09;是指通过各种信息传感、通信和 IT 技术来实时连接、采集、监管海量的传感设备&#xff0c;从而实现对现实世界的精确感知和快速响应&#xff0c;继而实现自动化、智能化管理。在查…...

05、SpringBoot 集成 RocketMQ

目录 SpringBoot集成RocketMQ消息发送三种方式1、同步消息producer-springboot创建项目添加依赖配置文件同步消息发送代码启动类Test类 comsumer-springboot创建项目添加依赖配置文件同步消息消费代码 2、异步消息生产者消费者 3、一次性消息生产者消费者 消息消费两种方式1、集…...

PR2023中如何导入字幕

PR中如何导入字幕 方法一&#xff1a; 点开文本&#xff0c;字幕&#xff0c;新建字幕分段&#xff08;点击右上角…三个点&#xff09; 键入调整内容 方法二 点开基本图形&#xff0c;编辑&#xff0c;调整&#xff0c;拖动位置。...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...