4.24-4.25学习总结

https://vjudge.net/contest/555003#problem/A

题解:这道题的题意就是找到最长的递增子序列,首先第一个循环要找到数值相同但是位置不同的数字后,第一次寻找到左起点,之后寻找右起点。

由于要满足最长的递增子序列,可以通过循环,不断往左推进左起点,条件是左起点的下标大于2并且满足递减条件:当前位置的数值>=前一个位置的数值

右起点则是不断往右推进:通过循环,条件是右起点的下标小于 n ,并且满足递增条件:当前位置的数值<=下一个位置的数值

#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int x,y;
        x=y=0;
        int n;
        cin>>n;
        vector<int> a(n+5),b(n+5);
        for(int i=1; i<=n; i++)
            cin>>a[i];
        for(int i=1; i<=n; i++)
            cin>>b[i];
        for(int i=1; i<=n; i++)
        {
            if(a[i]!=b[i])
            {
                if(x==0) x=i;
                else y=i;
            }
        }
        while(x>=2&&b[x]>=b[x-1])
            x--;
        while(y<=n-1&&b[y+1]>=b[y])
            y++;
        cout<<x<<" "<<y<<endl;
    }

}

https://vjudge.net/contest/555003#problem/F 

题解:这道题是一道很有意思的题目,最开始以为很难,但是想通了发现很简单。题意是给了两个点,设置障碍物,找到最小的不能让起点到达终点的障碍物的数目。障碍物最多的数目就是将其中一个点包围起来,但是如果任意一个点在四条边界上,就会少用一个障碍物。

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        cin>>n>>m;
        int sx,sy,ex,ey;
        cin>>sx>>sy>>ex>>ey;
        int ans1=4;
        int ans2=4;
        if(sx==1||sx==n) ans1--;
        if(sy==1||sy==m) ans1--;
        if(ex==1||ex==n) ans2--;
        if(ey==1||ey==m) ans2--;
        int minn=9999;
        minn=min(ans1,ans2);
        cout<<minn<<endl;
    }

}

 项目:

重写了数据库:

  • 用户表(users)
  • id(用户ID,主键)
  • email(邮箱)
  • password_hash (加密后的密码)
  • role(角色:学生或教师)

班级表(classes)

  • id(班级ID,主键)
  • name (班级名称)
  • teacher_id(教师ID,外键,关联到用户表的用户ID)
  • 用户-班级关系表(user_class_relations)
  • id(关系ID,主键)
  • user_id(用户ID,外键,关联到用户表的用户ID)
  • class_id(班级ID,外键,关联到班级表的班级ID)

作业表(assignments)

  • id(作业ID,主键)
  • class_id (班级ID,外键,关联到班级表的班级ID)
  • title (作业标题)
  • content(作业内容)
  • type (作业类型:主观题、选择题)
  • due_date(截止日期)

学生作业表(student_assignments)

  • id (学生作业ID,主键)
  • user_id(学生ID,外键,关联到用户表的用户ID)
  • assignment_id(作业ID,外键,关联到作业表的作业ID)
  • status (作业状态:未提交、已提交、已打回、已批改)
  • submission_type(提交类型:图片、文件、文字)
  • submission_content(提交内容)
  • 赋值_id(作业ID,外键,关联到作业表的作业ID)

资料表(materials)

  • id(资料ID,主键)
  • class_id(班级ID,外键,关联到班级表的班级ID)
  • teacher_id(教师ID,外键,关联到用户表的用户ID)
  • title (资料标题)
  • file_path(文件路径)

项目:可以发邮箱验证码,但是发现了几个Bug,只要我没限制,就可以在一分钟之内发送多次验证码,同时,如果多个用户同时发送验证码,就会混乱,这里还需要改进。

由于验证码太拖进度了,决定之后的学习现将验证码发下,先做好主要的功能点再回去添加邮箱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值