12.21考试总结

news/2024/12/28 22:00:06/文章来源:https://www.cnblogs.com/OIer-QAQ/p/18638034

分数

题号 T1 T2 T3 T4 T5 T6 T7 总分
分数 100 100 100 20 100 100 64 584

分析

T1

模板,讲烂了

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e6+5,mod=1e9+7,inf=1e18;
int n,a[maxn],dp[maxn];
signed main(){ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int maxi=-inf;for(int i=1;i<=n;i++){dp[i]=1;for(int j=1;j<i;j++){if(a[j]<a[i]){dp[i]=max(dp[i],dp[j]+1);}}maxi=max(maxi,dp[i]);}cout<<maxi<<endl;return 0;
}

T2

二维DP模板,也讲烂了

Tip:注意行列为偶数时不能走

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e3+5,mod=1e9+7,inf=1e18;
int n,m,dp[maxn][maxn];
signed main(){ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;dp[1][1]=1;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(i==1&&j==1)continue;if(i%2==0&&j%2==0)continue;dp[i][j]=dp[i-1][j]+dp[i][j-1];} } cout<<dp[n][m]<<endl;return 0;
}

T3

\(10^{-9}\)点意思。

  1. 定义状态:\(dp_i\)表示恰好得到\(i\)个字的最少操作次数
  2. 答案:\(dp_n\)
  3. 状态转移方程:
    ①:从\(i-1\)转移过来:\(dp_{i-1}+1\)
    ②:当\(i\)为偶数时,从\(\frac{i}{2}\)转移过来:\(dp_{\frac{i}{2}}+1\)
    答案即:
    (1)\(i\mod 2=1\)\(dp_i=dp_{i-1}+1\)
    (2)\(i\mod 2=0\)\(dp_i=\min(dp_{i-1}+1,dp_{\frac{i}{2}}+1)\)
  4. 边界:\(dp_1=1\)
点击查看代码
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e6+5,mod=1e9+7,inf=1e18;
int n,dp[maxn]; 
signed main(){ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;memset(dp,0x3f,sizeof(dp));dp[1]=0;for(int i=2;i<=n;i++){dp[i]=min(dp[i],dp[i-1]+1);if(i%2==0){dp[i]=min(dp[i],dp[i/2]+1); } } cout<<dp[n]<<endl;return 0;
}

T4

典例题,只不过将01背包的模板\(c\)数组改为打赢一个值,打输一个值而已
注意:这里由于前面的与后面的有关,所以不能改成一个一维数组的优化(喜提20分……)

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e3+5,mod=1e9+7,inf=1e18;
int n,m,win[maxn],lose[maxn],use[maxn],dp[maxn][maxn];
signed main(){ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){cin>>lose[i]>>win[i]>>use[i];}for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){if(j>=use[i]){dp[i][j]=max(dp[i-1][j]+lose[i],dp[i-1][j-use[i]]+win[i]);}else{dp[i][j]=dp[i-1][j]+lose[i];}}}cout<<dp[n][m]*5<<endl;return 0;
}

T5

这里我用记搜写的
定义\(dfs(pos,x)\)表示第\(x\)此传球在第\(pos\)个人手上
那么只要判断x=1时pos是否也等于1即可
注意,环形,所以1号左边是\(n\)号,\(n\)号右边是一号

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e3+5,mod=1e9+7,inf=1e18;
int n,m,dp[maxn][maxn],ans[maxn];
int gl(int x){if(x==1){return n;}return x-1;
}
int gr(int x){if(x==n){return 1;}return x+1;
}
int dfs(int pos,int x){if(x==1){if(pos==1){return 1;}return 0; }if(dp[pos][x]!=-1){return dp[pos][x];} int anss=dfs(gl(pos),x-1)+dfs(gr(pos),x-1);dp[pos][x]=anss;return anss;
}
signed main(){ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;memset(dp,-1,sizeof(dp));cout<<dfs(1,m+1)<<endl;return 0;
}

T6

最大正方形的改版,只不过加一个维度表示右下角的数是1还是0
如果数是0,则答案需要:
左边的以1为右下角的满足条件的正方形边长与
上方的以1为右下角的满足条件的正方形边长与
左上角的以0为右下角的满足条件的正方形边长
作比较,取最小值

同理,如果数是1,则答案需要:
左边的以0为右下角的满足条件的正方形边长与
上方的以0为右下角的满足条件的正方形边长与
左上角的以1为右下角的满足条件的正方形边长
作比较,取最小值

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=2e3+5,mod=1e9+7,inf=1e18;
int n,m,a[maxn][maxn],dp[maxn][maxn][2];
signed main(){
//	freopen("test.in","r",stdin);
//	freopen("test.out","w",stdout);ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){char c;cin>>c;a[i][j]=c-'0';}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){dp[i][j][a[i][j]]=1;}}int maxi=-inf;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]==1){dp[i][j][1]=min(dp[i-1][j][0],min(dp[i][j-1][0],dp[i-1][j-1][1]))+1;maxi=max(maxi,dp[i][j][1]);}else{dp[i][j][0]=min(dp[i-1][j][1],min(dp[i][j-1][1],dp[i-1][j-1][0]))+1;maxi=max(maxi,dp[i][j][0]);}}}cout<<maxi<<endl;return 0;
}

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

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

相关文章

2024-2025-1 20241307《计算机基础与程序设计》第十四周学习总结

作业信息这个作业属于哪个课程 (2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 ([2024-2025-1计算机基础与程序设计第十四周作业]这个作业的目标作业正文 (2024-2025-1 学号20241307《计算机基础与程序设计》第十四周学习总结)教材学习内容总结 C语言程序设计第十三…

Blog-3 题目集7~8的总结

22207203-陈思思 一、前言 (一)第7次题目集(家居强电电路模拟程序-3)知识点:串联电路:电流相同,电压分配。 并联电路:电压相同,电流分配。 类的设计:电路设备类、受控设备类、控制设备类、串联电路类、并联电路类。 数据结构:使用列表或字典存储电路信息、设备状态。…

已有docker镜像构建过程分析

转载请注明出处: 1.使用docker history进行分析  docker history 命令用于查看指定镜像的历史层信息,它显示了镜像创建过程中的每一层,包括创建时间、创建者、大小和注释等信息。 查看镜像历史docker history myimage:latest使用示例:root@controller1:~# docker images …

Linux操作文件IO

Linux操作文件IO参考自:【北京迅为】嵌入式linux开发指南_v1.1(i.MX6ULL)文件 IO 是 Linux 系统提供的接口,针对文件和磁盘进行操作,不带缓存机制; 标准 IO 是 C 语言函数库里的标准 I/O 模型,在 stdio.h 中定义,通过缓冲区操作文件,带缓存机制。Linux 系统中一切皆文…

K230学习记录

K230学习记录 参考自: # 立创庐山派-K230-CanMV开发板资料与相关扩展板软硬件资料官网全部开源 # 开发板官网:www.lckfb.com # 技术支持常驻论坛,任何技术问题欢迎随时交流学习 # 立创论坛:www.jlc-bbs.com/lckfb串口0(115200),连接进入打印U-Boot信息ctrl+R可以快速重装…

windows与虚拟机linux通过ssh进行连接并上传文件

windows与虚拟机linux通过ssh进行连接并上传文件 windows配置 以管理员打开powershell下载和启动安装ssh客服端 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Start-Service sshd Set-Servi…

[Java/网络/HTTP(S)] 基于`Http(s)URLConnection`的网络请求工具(HttpRequestUtils)

1 序轻量级HTTP网络请求工具,接续:[Java SE/JDK/网络] 核心源码精讲:java.net.HttpURLConnection - 博客园/千千寰宇 [身份认证/JWT] 身份认证方案与HTTP请求中Authorization Header - 博客园/千千寰宇 【推荐】 [网络/HTTPS/Java] PKI公钥基础设施体系:数字证书(X.509)、C…

2024/12/17 【字符串】LeetCode 459.重复的子字符串 【❌】

https://programmercarl.com/0459.%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.html#%E6%80%9D%E8%B7%AF https://leetcode.cn/problems/repeated-substring-pattern/ 子串结束位置大于中间位置的话,一定不能重复组成字符串。 如果 next[len - 1] != -1…

一起鸿蒙吧,现在到了「绝佳时刻」

摘要:它已经不止于可用和好用,而是迈向“必用”的新阶段了。 10月22日,原生鸿蒙操作系统如约而至。 作为一个全新的操作系统,原生鸿蒙拥有流畅、安全、智能、互联、精致五大原生特性,为无数用户开启了一个全新的数字生活方式。 如果你正在犹豫是否要升级原生鸿蒙系统,那么…

题目集7~8总结性博客

前言 在本学期的学习过程中,我们共完成了三次题目集的练习,其中第七题和第八题集在知识点、题量和难度上具有一定的代表性。总体而言,这两次题目集涵盖了面向对象编程(OOP)、设计模式、数据结构与算法、软件工程等多个核心知识点。 知识点总结: 面向对象编程(OOP): 类…

Python 中使用 Matplotlib 进行多图绘制

Python 中使用 Matplotlib 进行多图绘制 Matplotlib 是 Python 中非常强大的数据可视化工具,它可以用来生成简单到复杂的各种图形。无论是处理单张图表还是多图并列展示,Matplotlib 都能提供高效的支持。在本篇文章中,我们将介绍如何使用 Matplotlib 绘制多图,以便在同一画…