2021/12/05学习总结

  • 9:00-11:50       做栈的题目(一直是错的 没做出来)还有看今天测试要考的知识点
  • 14:30-17:30       写总结和看CSDN上面的相关知识点的例题
  • 19:00-21:15        启航测试
  • 今天看了前缀和和差分,前缀和顾名思义就是前面i个数的总和数组a在经过这样的操作之后,对于每次的询问,我们只需要计算a[R]-a[L-1]就能得到我们想要的答案了我们如果使用前缀和的方法来做的话就能够将时间复杂度降到O(n+m),大大节省了运算时间。
  • dp问题:

    dp【i】【j】:代表从第i行第j列出发得到的最优值

    dp【i】【j】=max(dp【i+1】【j】,dp【i+1】【j+1】)+a【i】【j】

    表示从第i行第j列出发的最优值等于到i+1行的两种走法中最大的那一个加上出发点的权值

  • 今天晚上做了测试,其中   A - 拆箱子送小羊驼礼物 就不说了,还有  D - 羊驼的成双成对大法  这个跟上次栈做的那个括号配对的题目差不多,也不细说了,还有  I - 小羊驼的睡前故事  也不说了  。
  • 那个羊驼之间的棋局,其实就是要找到里面的规律,只要找到其中一种羊羊必胜的走法,那就可以找到规律了,所以你会发现当n,m中至少一个为偶数时,羊羊就必胜(对驼驼太不公平了!!)代码:
  • #include<stdio.h>
    int main()
    {
    	int m,n;
    	while(scanf("%d%d",&n,&m)!=EOF&&n!=0&&m!=0)
    	{
    		if(n%2==0||m%2==0)
    			printf("Wonderful!\n");
    		else
    			printf("What a pity!\n");
    	}
    }

    E - 羊驼❥单调递增:

  • 一个数列的最长上升子列,是指其所有递增的子列中最长的一个子列

    给定一个长度为 n 的数列 an,求这个数列的最长上升子列的长度

    例如对数列 1 7 2 8 3 4,这个数列的最长递增子数列是 1 2 3 4,长度为 4;次长的长度为 3, 包括 1 7 8、1 2 3 等。

    Input

    第一行一个正整数 n,表示数列元素个数,n<=1000 第二行 n 个正整数,从左到右给出数列的每一项

    Output

    一行一个正整数,表示最长上升子数列的长度

    Sample Input

    8
    5 1 6 8 2 4 5 10

    Sample Output

    5

这一题就是考dp问题:最长递增子序列个数。

我们定义sum[i]为以a[i]为结尾的最长上升子序列的长度。

以a[i]结尾的上升子序列得满足:

1、j < i(以a[j]为结尾的上升子序列)

2、a[j] < a[i] 

3、看哪个最大

#include<iostream>
#include<cstdio>
using namespace std;

int main(){
	int num[10000];
	int sum1[10000];
    int n;
    cin>>n; 
   for(int i=0;i<n;++i)
       cin>>num[i];
   sum1[0]=1;
   for(int i=1;i<n;++i)
   {
        int temp=0;
        for(int j=0;j<i;++j)
		{
          if(num[i]>num[j])
             if(temp<sum1[j])
                temp=sum1[j];
        }
       sum1[i]=temp+1;
     }
 

 goodbye

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿灵灵.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值