算法课作业1
https://vjudge.net/contest/581138
A - Humidex
模拟题
题目大意
给三个类型数字通过公式来回转化
思路
求e的对数有log函数,不懂为什么不会出精度错误,很迷,给的三个数字也没有顺序,需要多判断。
#include<cstdio>
#include<iostream>
#include<cmath>
//Sometimes weather reports give the temperature and dewpoint,
// or the temperature and humidex
/*
D 15.0 H 34.0
D 25.0 H 42.3
E
*/
using namespace std;
int main()
{char a,b;double a1,b1;while(1){cin>>a;if(a=='E')break;cin>>a1>>b>>b1;if(a=='T'&&b=='D'||a=='D'&&b=='T'){ if(a=='D'&&b=='T')swap(a1,b1);double e=6.11*(pow(2.718281828,5417.7530*((1/273.16)-(1/(b1+273.16)))));double h=0.5555*(e-10.0);double humidex = a1+h;printf("T %.1lf D %.1lf H %.1lf\n",a1,b1,humidex);}else if(a=='T'&&b=='H'||a=='H'&&b=='T'){if(a=='H'&&b=='T')swap(a1,b1);double dewpoint;double h=b1-a1;double e=h/0.5555+10.0;double x=log(e/6.11)/5417.753;dewpoint=1/(1/273.16-x)-273.16;printf("T %.1lf D %.1lf H %.1lf\n",a1,dewpoint,b1);}else // d h{if(a=='H'&&b=='D')swap(a1,b1);double e=6.11*pow(2.718281828,5417.7530*((1/273.16)-(1/(a1+273.16))));double h=(0.5555)*(e - 10.0);double temperature=b1-h;printf("T %.1lf D %.1lf H %.1lf\n",temperature,a1,b1);}}}
B - Moving Tables
题目大意
两排都是房间,一排两百个房间,上面按奇数,下面按偶数编号,之后房间两两之间要搬桌子,搬桌子期间中间通道全部占用,可同步进行,搬一次10分钟,求最小时间
思路
就把中间通道编号,奇数和偶数的编号调成1-200,之后对区间进行累加,重合次数最多的就是最小时间。注意坑就是,区间不一样从小到大,l,r要判断一下大小。
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int box[205];
/*
3
4
10 20
30 40
50 60
70 80
2
1 3
2 200
3
10 100
20 80
30 50
*/
int main()
{int T;cin>>T;while(T--){int n;cin>>n;memset(box,0,sizeof(box));int maxx=0;for(int i=1; i<=n; i++){int l,r;cin>>l>>r;if(l%2==1)l=l+1;if(r%2==1)r=r+1;l=l/2;r=r/2;if(l>r)swap(l,r);for(int j=l; j<=r; j++){box[j]++;maxx=max(box[j],maxx);}}printf("%d\n",maxx*10);}}
C - Counterfeit Dollar
题意
有12个硬币,现在知道其中有一个假的,已知称三次天平可以找出来假硬币,假硬币有可能轻或重,每次给三组称量结果,求出哪个是硬币,是轻是重。
思路
好丑陋的代码,不懂为啥我写的这么长,思路不太好吧,我的思路就是去暴力枚举每一个假硬币,并且枚举它是轻的假还是重的假,用box数组记录每次天平上各个位置的重量,真硬币就算重量1,假轻硬币就重量0,假重硬币就重量10,最后判断,找出来就行,模拟题,写的是真费劲,OJ还不支持string 用的char还查了一堆函数,费劲,代码能力现在下降严重。
#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
/*
1
ABCDEF GHIJKL up
ABC DEF even
I J down
*/
int box[20];
int main()
{int n;cin>>n;while(n--){char a[3][15],b[3][15],c[3][15];memset(box,0,sizeof(box));for(int i=0; i<3; i++){scanf("%s %s %s",a[i],b[i],c[i]);strcat(a[i],b[i]);}for(int i=1; i<=12; i++) // 枚举每个都是假币{char x='A'+i-1;// 假币轻int flagt=0;int pos,lenn;char t[20];for(int j=0; j<3; j++){memset(box,0,sizeof(box));int len=strlen(a[j]);for(int k=0; k<len; k++){if(a[j][k]!=x)box[k]++;if(a[j][k]==x){pos=k;lenn=len;
// t=c[j];strcpy(t,c[j]);}}int box1=0,box2=0;for(int k=0; k<len/2; k++)box1+=box[k];for(int k=len/2; k<len; k++)box2+=box[k];if(strcmp(c[j],"even")==0&&box1==box2) flagt++;if(strcmp(c[j],"up")==0&&box1>box2) flagt++;if(strcmp(c[j],"down")==0&&box1<box2) flagt++;
// printf("%d %d %c %d len=%d\n",box1,box2,x,flagt,len);}//假币重if(flagt!=3){flagt=0;for(int j=0; j<3; j++){memset(box,0,sizeof(box));int len=strlen(a[j]);for(int k=0; k<len; k++){if(a[j][k]!=x)box[k]++;if(a[j][k]==x){box[k]+=10;pos=k;lenn=len;
// t=c[j];strcpy(t,c[j]);}}int box1=0,box2=0;for(int k=0; k<len/2; k++)box1+=box[k];for(int k=len/2; k<len; k++)box2+=box[k];if(strcmp(c[j],"even")==0&&box1==box2) flagt++;if(strcmp(c[j],"up")==0&&box1>box2) flagt++;if(strcmp(c[j],"down")==0&&box1<box2) flagt++;}}if(flagt==3){if(pos<lenn/2){if(strcmp(t,"up")==0)printf("%c is the counterfeit coin and it is heavy.\n",x);elseprintf("%c is the counterfeit coin and it is light.\n",x);}else{if(strcmp(t,"up")==0)printf("%c is the counterfeit coin and it is light.\n",x);elseprintf("%c is the counterfeit coin and it is heavy.\n",x);}break;}}}}
D - Radar Installation
题目大意
雷达部署在x轴,给出半径,陆地在任意位置,现在已知所有陆地位置,要求使用最少雷达覆盖所有陆地。
思路
以每个陆地为圆心画圆,交x轴出现线段,线段长度即为这个陆地所需要的雷达区间,对每个陆地转化为一个线段,将线段按右端点排序,之后从左往右遍历线段,每次呢取端点的最右端作为雷达,下一个线段出现左端点在雷达左右两边的情况,在左边呢就不用管,在右边呢就更新右端点为新的雷达。
这个题,输入格式好奇怪,我觉得是个错题。思路对了,照着别的代码硬改出来。为什么n=0能过?不应该n0&&d0吗?
#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;struct node
{double l,r;
} a[1005];
int cmp(node a,node b)
{return a.r<b.r;
}
int main()
{int cnt=0;int n;double d;while(scanf("%d%lf",&n,&d)){cnt++;if(n==0) break;int flag=0;for(int i=1; i<=n; i++){double x,y;scanf("%lf%lf",&x,&y);
// if(d<y||d<=0)if(d<y||d<=0){flag=1;continue;}double c=sqrt(1.0*d*d-1.0*y*y);a[i].l=(double)x-c;a[i].r=(double)x+c;
// printf("%lf %lf\n",a[i].l,a[i].r);}if(flag==1){printf("Case %d: -1\n",cnt);continue;}sort(a+1,a+1+n,cmp);int ans=0;double pos=-100000000;for(int i=1; i<=n; i++){if(pos<a[i].l){pos=a[i].r;ans++;}}printf("Case %d: %d\n",cnt,ans);}
}
H - Cow Bowling
题目大意
从顶点往下向左或向右,走到最下面,找到一条累加和最大的值。
思路
数字三角形经典题
#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;int dp[355][355];
int m[355][355];
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=i;j++)scanf("%d",&m[i][j]);}for(int i=1;i<=n;i++)dp[n][i]=m[n][i];for(int i=n-1;i>=1;i--)for(int j=1;j<=i;j++){dp[i][j]=m[i][j]+max(dp[i+1][j],dp[i+1][j+1]);}printf("%d",dp[1][1]);
}相关文章:
算法课作业1
https://vjudge.net/contest/581138 A - Humidex 模拟题 题目大意 给三个类型数字通过公式来回转化 思路 求e的对数有log函数,不懂为什么不会出精度错误,很迷,给的三个数字也没有顺序,需要多判断。 #include<cstdio>…...
linux文本处理 两行变一行
linux简单文本处理 [rootkvm ~]# cat test 1.1.1.1 test1 2.2.2.2 test2 3.3.3.3 test3 192.168.1.2 test4 10.23.9.19 test5 cat test | awk /^[0-9]/{T$1;next;}{print T,$1}1.1.1.1 test1 2.2.2.2 test2 3.3.3.3 test3 192.168.1.2 test4 10.23.9.19 test5 cat test | …...
第二次面试 9.15
首先就是自我介绍 项目拷打 总体介绍一下项目 谈一下对socket的理解 在数据接收阶段,如何实现一个异步的数据处理 谈一谈对qt信号槽的理解 有想过如何去编写一个信号槽吗 你是如何使用CMAKE编译文件的 C11特性了解些啥 shared_ptr 和 unique_ptr 的运用场景 …...
基于matlab实现的平面波展开法二维声子晶体能带计算程序
Matlab 平面波展开法计算二维声子晶体二维声子晶体带结构计算,材料是铅柱在橡胶基体中周期排列,格子为正方形。采用PWE方法计算 完整程序: %%%%%%%%%%%%%%%%%%%%%%%%% clear;clc;tic;epssys1.0e-6; %设定一个最小量,避免系统截断误差或除零错…...
Minio入门系列【2】纠删码
1 纠删码 Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据 1.1 什么叫纠删码 纠删码是一种用于重建丢失或损坏数据的数学算法。 纠删码(e…...
基于永磁同步发电机的风力发电系统研究(Simulink实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
5.后端·新建子模块与开发(自动模式)
文章目录 学习资料自动生成模式创建后端三层 学习资料 https://www.bilibili.com/video/BV13g411Y7GS?p11&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e 自动生成模式创建后端三层 首先,运行起来若依的前后端整个项目,…...
vue的data为什么要写成data(return{})这样而不是data:{}这样?
在Vue.js中,为什么要将data写成一个返回对象的函数data()而不是一个普通的对象data: {} 为什么? 因为Vue.js的组件实例是可复用的,而且它们可以在应用中多次实例化。通过将data定义为一个返回对象的函数,可以确保每个组件实例都…...
MySQL基础运维知识点大全
一. MySQL基本知识 1. 目录的功能 通用 Unix/Linux 二进制包的 MySQL 安装下目录的相关功能 目录目录目录binMySQLd服务器,客户端和实用程序docs信息格式的 MySQL 手册manUnix 手册页include包括(头)文件lib图书馆share用于数据库安装的错…...
javascript获取样式表的规则及读取与写入
CSSStyleSheet是继承了StyleSheet的接口属性,它是用于找当前文档中的<link rel“” href“”…>这样文件的,有以下属性:lenght,cssRules,title,href,type,deleteRule,insertRule等 CSSStyleRule是继承于CSSRule,它是用于找<link re…...
什么是promise?
是JavaScript中用于处理异步操作的一种机制。 异步操作,例如从服务器获取数据、读取文件、执行数据库查询等等。 经典使用:Axios 是一个基于Promise的HTTP客户端 Promise具有三个状态: Pending(待定):Pr…...
从零开始学习软件测试-第45天笔记
monkey事件 事件:对app进行的操作,比如触摸事件,滑动事件...动作:构成一个事件所需要的步骤。 调整事件的百分比 adb shell monkey -p 包名 -v -v --pct-xxx 百分比 次数>输出文件的路径 分析日志有没有报错 到日志中去找…...
visual studio常用快捷键
CtrlM、CtrlO 折叠到定义 CtrlM、CtrlM 折叠当前定义 CtrlM、CtrlA 折叠全部 CtrlK、CtrlD 自动编排代码格式 F12 转到定义 ShiftF12 查看所有定义 ctrl] 转到定义首部或尾部 ctrlX 未选中文本时,剪切/删除光标所在行。ctrlV 未选中文本时,粘贴到…...
数据变换:数据挖掘的准备工作之一
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...
Go语言实践案例之简单字典
一、程序要实现效果: 在命令行调用程序的时候,可以在命令行的后面查询一个单词,然后会输出单词的音标和注释。 二、思路分析: 定义一个结构体 DictRequest,用于表示翻译请求的数据结构。其中包含了 TransType&#…...
笔试面试相关记录(3)
(1)String String和String.append()的底层实现 C中string append函数的使用与字符串拼接「建议收藏」-腾讯云开发者社区-腾讯云 (tencent.com) String String 在 第二个String中遇到\0就截止,append()的方法则是所有字符都会加在后面。 &…...
第6章_瑞萨MCU零基础入门系列教程之串行通信接口(SCI)
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
开源免费的流程图软件draw.io
2023年9月16日,周六上午 想买微软的visio,但发现不是很值得,因为我平时也不是经常需要画图。 所以我最后还是决定使用开源免费的draw.io来画图 draw.io网页版的网址: Flowchart Maker & Online Diagram Software draw.io的…...
Python绘图系统19:添加时间轴以实现动态绘图
文章目录 时间轴单帧跳转源代码 Python绘图系统: 📈从0开始的3D绘图系统📉一套3D坐标,多个函数📊散点图、极坐标和子图自定义控件:绘图风格📉风格控件📊定制绘图风格坐标设置进阶&a…...
深度解析shell脚本的命令的原理之rm
rm 是 Unix/Linux 系统中的一个基本命令,用于删除文件或目录。以下是对这个命令的深度分析: 基本操作:rm 命令删除一个或多个文件或目录。这是通过从文件系统中移除链接来完成的。在 Unix/Linux 中,文件是通过链接(可以…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...
MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...
职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...
Linux中INADDR_ANY详解
在Linux网络编程中,INADDR_ANY 是一个特殊的IPv4地址常量(定义在 <netinet/in.h> 头文件中),用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法,允许套接字监听所有本地IP地址上的连接请求。 关…...
