七月份信息课总结

news2024/9/21 4:39:21

总结

  • 七月份信息课总结
    • 算法记录
      • 线性代数:
      • 数论(这是信竞生和数竞生都最难跨出的一步):
      • 动态规划(~~DP万岁!!!~~)
      • 组合数学(恶心,但我很喜欢)
      • 贪心
    • 好题记录
      • [P1962 斐波那契数列](https://www.luogu.com.cn/problem/P1962)
      • [P6064 [USACO05JAN] Naptime G](https://www.luogu.com.cn/problem/P6064)
      • [P1223 排队接水](https://www.luogu.com.cn/problem/P1223)
    • 总结

七月份信息课总结

算法记录

线性代数:

线性代数是一种用线性思维解决代数问题的方法,常见的有向量、矩阵等。学习过程中,老师讲解了点乘、叉乘以及向量用矩阵的表示方法,还有矩阵快速幂在加速斐波那契的实现。这个知识点与数学的关系很强,需要良好的数学基础和活跃的数学思维。现在的题目可能局限于二维向量,将来可能会用到三位向量,所以还需熟练掌握三维向量的计算与运用。

数论(这是信竞生和数竞生都最难跨出的一步):

其实,我对数论的理解也只是云里雾里。目前只是背下几个板子,然后对一些简单的少有一点点理解。我的数学老师说他数论没学好,所以不能跟我讲(dog) 所以说,目前对数论的学习还是停留在背诵板子

动态规划(DP万岁!!!

以前认为DP很难,但是后面随着数学基础的加深,发现其实DP并不难。我甚至发现了一条万能的DP转移方程(当然是在不考虑优化的情况下)即:有多少个未知量就定义多少维度(数组开不下的话可以考虑vector,因为vector可以根据每次输入的值进行开数组的大小,可以多骗一点分),其值就是要求的值。这样一来,至少DP题目的50%分数是可以得到的。并且,对后期的优化也很有帮助。实际上,还可以用记搜,MLE别找我(dog)

组合数学(恶心,但我很喜欢)

记得OI上有一句经典的名言“组合数学瞎暴力”,但其实组合数学并不恐惧。组合数学无非4种:加法原理,乘法原理,组合,排列。当有多个物体进行排列(组合)时,每个物品的排列(组合)数相乘,是乘法原理;当求不同阶段的排列(组合)数之和时,排列(组合)数相加,是加法原理。在乎顺序是排列,否则是组合。我们只需根据题目进行分析,问题就可以迎刃而解了

贪心

记得刚刚学OI时,第一次接触贪心,就将其与DP混淆,其实贪心的决策是一个阶段性的决策,而DP是一个全局性的决策。DP强调的是两个字“全局”,所以说DP的题目也满足一个前置要求:无后效性(以后的决策不能影响当前的状态);而贪心强调当前,所以他不在乎以后如何。(例如:左边地上有100元,但是100元后只有1分钱,右边地上有1块钱,但是之后有1000元;贪心会选择左边,而DP会选择右边)所以说,只有那种全局要最优值一定要当前最优值的才能用贪心算法

好题记录

P1962 斐波那契数列

这一题是运用了矩阵快速幂优化斐波那契。我们知道: F i − 1 + F i − 2 = F i F_{i-1}+F_{i-2}=F_i Fi1+Fi2=Fi
然后可以推出
[ F n − 1 F n − 2 ] ∗ [ 1 1 1 0 ] = [ F n F n − 1 ] \begin{equation*}\begin{bmatrix}F_{n-1}&F_{n-2}\end{bmatrix}\end{equation*}*\begin{equation*}\begin{bmatrix} 1& 1\\1 & 0\end{bmatrix}\end{equation*}= \left[\begin{array}{c}F_n & F_{n-1}\end{array}\right] [Fn1Fn2][1110]=[FnFn1]
所以:
在这里插入图片描述
标算:

#include<iostream>
#include<string.h>
using namespace std;
#define ll long long
const ll MOD=1e9+7;
ll n;
struct mat{
	ll a[3][3];
	mat(){memset(a,0,sizeof(a));}
	mat operator*(const mat &b){
		mat res;
		for(ll i=1;i<=2;i++){
			for(ll j=1;j<=2;j++){
				for(ll k=1;k<=2;k++){
					res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]) % MOD;
				}
			}
		}
		return res;
	}
}ans,base;
void init(){
	base.a[1][1]=base.a[1][2]=base.a[2][1]=1;
	ans.a[1][1]=ans.a[1][2]=1;
}
void q(ll b){
	while(b){
		if(b&1)ans=ans*base;
		base=base*base;
		b>>=1;
	}
}
int main(){
	cin>>n;
	if(n<=2){
		cout<<1<<"\n";
		return 0;
	}	
	init();
	q(n-2);
	cout<<ans.a[1][1]%MOD<<"\n";
	return 0;
} 

P6064 [USACO05JAN] Naptime G

这是一道DP的题目,看到题目首先发现有三个未知量:当前时间已睡觉时长当前是否睡,要求的是效用值之和,所以就可以推出状态转移方程: d p [ i ] [ j ] [ 0 ] = m a x ( d p [ i − 1 ] [ j ] [ 0 ] , d p [ i − 1 ] [ j ] [ 1 ] ) d p [ i ] [ j ] [ 1 ] = m a x ( d p [ i − 1 ] [ j − 1 ] [ 0 ] , d p [ i − 1 ] [ j − 1 ] [ 1 ] + u i ) dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][1])\\dp[i][j][1]=max(dp[i-1][j-1][0],dp[i-1][j-1][1]+u_i) dp[i][j][0]=max(dp[i1][j][0],dp[i1][j][1])dp[i][j][1]=max(dp[i1][j1][0],dp[i1][j1][1]+ui) i i i表示当前是第 i i i个小时, j j j表示已睡 j j j小时, 0 0 0表示当前没睡, 1 1 1表示当前这个小时在睡,所以这个问题就解决啦
【注意】:由于不知道最后一小时是不是在睡,所以第一个小时睡觉的情况需要分类讨论
标算:

#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std;
const int MAXN=3835;
int n,b;
int u[MAXN];
int f[MAXN][MAXN][2];
int ans;
int main(){
    cin>>n>>b;
    for(int i=1;i<=n;i++)cin>>u[i];
    // for(int i=1;i<=n;i++)cout<<u[i]<<" ";
    memset(f,-0x3f,sizeof(f));
    f[1][1][1]=f[1][0][0]=0;
    for(int i=2;i<=n;i++){
        f[i][0][0]=f[i-1][0][0];
        for(int j=1;j<=b;j++){
            f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1]);
            f[i][j][1]=max(f[i-1][j-1][1]+u[i],f[i-1][j-1][0]);
        }
    }
    ans=max(f[n][b][0],f[n][b][1]);
    memset(f,-0x3f,sizeof(f));
    f[1][1][1]=u[1];
    f[1][0][0]=0;
    for(int i=2;i<=n;i++){
        f[i][0][0]=f[i-1][0][0];
        for(int j=1;j<=b;j++){
            f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1]);
            f[i][j][1]=max(f[i-1][j-1][1]+u[i],f[i-1][j-1][0]);
        }
    }
    cout<<max(ans,f[n][b][1])<<"\n";//即判断最后一小时睡和不睡的最优值
    return 0;
    // cout<<ans<<"\n";
    return 0;
}

P1223 排队接水

这是一道经典的贪心题,因为每个人的排队时间之和想要最少,就得让他们从小到大排序
直接上代码:

#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 1005;
struct node{
    int date,num;
};
int n;
node ti[MAXN];
bool cmp(node x,node y){
    return x.date<y.date;
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> ti[i].date;
        ti[i].num=i;
    }
    sort(ti + 1, ti + 1 + n,cmp);
    long long ans = 0;
    for (int i = 1; i <= n; i++)
        cout << ti[i].num << " ";
    cout << "\n";
    for (int j = n ; j >= 1; j--)
    {
        int i = n - j;
        ans += ti[i].date * j;
    }
    printf("%.2lf", ans*1.0 / n);
    return 0;
}

这就是近几周的好题记录

总结

近两周刷体面较广,但存在不够精细化的问题。平时老师布置的问题要落到实处,才能刚进一步。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫-淘宝搜索热词数据

前言 本文是该专栏的第70篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细针对“亚马逊Amazon搜索热词”数据采集的详细介绍,对此感兴趣的同学,可以往前翻阅《Python爬虫-某跨境电商(AM)搜索热词》进行查看。 而在本文,笔者将以淘宝为例,获取…

Linux----Mplayer音视频库的移植

想要播放视频音乐就得移植相关库到板子上 Mplayer移植需要依赖以下源文件&#xff1a;(从官网获取或者网上) 1、zlib-1.2.3.tar.gz &#xff1a;通用的内存空间的压缩库。 2、libpng-1.2.57.tar.gz :png格式图片的压缩或解压库 3、Jpegsrc.v9b.tar.gz : jpeg格式图片的压…

linux配置podman阿里云容器镜像加速器

1.下载podman yum install -y podman systemctl status podman systemctl start podman 2.获取阿里云个人容器镜像加速器地址 访问阿里云官网&#xff1a;首先&#xff0c;您需要访问阿里云&#xff08;Alibaba Cloud&#xff09;的官方网站。阿里云官网的URL是&#xff1a;…

医疗器械维修人员培训的重要性及其操作策略

医疗器械维修人员培训的重要性及其操作策略是确保医疗器械持续、安全、有效运行的关键。以下是对其重要性的解释以及相应的操作策略&#xff1a; 医疗器械维修人员培训的重要性 确保患者安全 经过培训的维修人员能够更准确地诊断问题&#xff0c;及时修复设备&#xff0c;避…

【IntelliJ IDEA】一篇文章集合所有IDEA的所有设置

IntelliJ IDEA 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;其设置涵盖了多个方面&#xff0c;以满足不同开发者的需求和偏好。由于 IDEA 的设置相当复杂和详尽&#xff0c;这里无法在一篇简短的文章中详细介绍所有设置。然而&#xff0c;我可以提供一…

轻松掌握:两个方法合并ZIP分卷压缩包

在文件传输和存储过程中&#xff0c;为了绕过文件大小限制或优化下载速度&#xff0c;我们常常会将大型文件分割成多个较小的ZIP分卷压缩包。然而&#xff0c;在接收这些分卷后&#xff0c;如何正确地将它们合并回原始的ZIP文件&#xff0c;可能是许多用户面临的一个问题。本文…

LeetCode两数相加

给你两个非空的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的&#xff0c;并且每个节点只能存储一位数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 开头。…

JAVA JUC学习笔记

基础知识 1、进程和线程的对比 进程基本上相互独立的&#xff0c;而线程存在于进程内&#xff0c;是进程的一个子集进程拥有共享的资源&#xff0c;如内存空间等&#xff0c;供其内部的线程共享进程间通信较为复杂 同一台计算机的进程通信称为 IPC&#xff08;Inter-process …

前端面试 vue 按钮级的权限控制

方案一 按钮权限也可以用v-if判断 但是如果页面过多&#xff0c;每个页面页面都要获取用户权限role和路由表里的meta.btnPermissions&#xff0c;然后再做判断 这种方式就不展开举例了 方案二 使用自定义指令实现 按钮级的权限控制 思维导图 心就是自定义指令的书写 首先…

exo 大模型算力共享;Llama3-70B是什么

目录 exo 大模型算力共享 exo框架的特点 如何使用exo框架 注意事项 结论 Llama3-70B是什么 一、基本信息 二、技术特点 三、性能与应用 四、未来发展 exo 大模型算力共享 exo框架的特点 异构支持:支持多种不同类型的设备,包括智能手机、平板电脑、笔记本电脑以及高…

Java 集合框架:Java 中的双端队列 ArrayDeque 的实现

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 019 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

AI多模态实战教程:面壁智能MiniCPM-V多模态大模型问答交互、llama.cpp模型量化和推理

一、项目简介 MiniCPM-V 系列是专为视觉-语⾔理解设计的多模态⼤型语⾔模型&#xff08;MLLMs&#xff09;&#xff0c;提供⾼质量的⽂本输出&#xff0c;已发布4个版本。 1.1 主要模型及特性 &#xff08;1&#xff09;MiniCPM-Llama3-V 2.5&#xff1a; 参数规模: 8B性能…

初学Linux之常见指令(下)

初学Linux之常见指令&#xff08;下&#xff09; 文章目录 初学Linux之常见指令&#xff08;下&#xff09;1. echo 指令2. cat 指令3. more 指令4. less 指令5. head 和 tail 指令6. date 指令7. cal 指令8. which 指令9. alias 指令10. find 指令11. grep 指令12. zip 和 unz…

C++中如何高效拼接两个vector

在C编程中&#xff0c;vector是一种常用的数据结构&#xff0c;它代表了一个可以动态改变大小的数组。在实际开发中&#xff0c;经常需要将两个vector拼接在一起&#xff0c;形成一个新的vector。本文将详细介绍如何在C中拼接两个vector&#xff0c;并探讨不同方法的性能差异。…

初学51单片机之指针基础与串口通信应用

开始之前推荐一个电路学习软件&#xff0c;这个软件笔者也刚接触。名字是Circuit有在线版本和不在线版本&#xff0c;这是笔者在B站看视频翻到的。 Paul Falstadhttps://www.falstad.com/这是地址。 离线版本在网站内点这个进去 根据你的系统下载你需要的版本红线的是windows…

PMP--知识卡片--敏捷方法

文章目录 敏捷方法&#xff0c;是一种新型软件开发方法。不要求遵循传统的软件开发流程&#xff0c;强调快速开发和有效适应需求变化&#xff0c;典型代表如看板、Scrumban、极限编程、测试驱动开发等。 区别于传统项目场景&#xff0c;敏捷项目场景强调交互协作、尊重个体、面…

Linux系统快速搭建轻量化网站Halo并实现无公网IP远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

无价之美:大麗和和品牌美学概念宣传片发布

高级珠宝品牌大麗和和筹备6个月&#xff0c;隆重发布《无价之美》品牌美学概念宣传片。品牌创始人牟童女士携珍贵藏品&#xff0c;亲诉美与传承的故事。 “尊尚正美” 珍稀宝石的颜色&#xff0c;是以色正为美。“正”就是事物极致的样子。最受人追慕的翡翠被称为“帝王绿”&a…

drawio更改默认字体大小(暂时有问题,修改中)

PS&#xff1a;其他的也可以在这里修改对应的值

Docker无法拉取镜像!如何解决?

问题现象 继去年Docker Hub被xxx后&#xff0c;各大NAS的注册表均出现问题&#xff0c;例如群晖的Docker套件注册表无法连接&#xff08;更新至DSM7.2版本后恢复&#xff09;。而在今年2024年6月初&#xff08;约2024.06.06&#xff09;&#xff0c;NAS中最重要的工具Docker又…