5.22~5.23总结

刷题

1.B题:第五周任务 - Virtual Judge (vjudge.net)

这题要对数据进行排序,然后计算相邻的值的差值,然后从小到大依次寻找长度为k的区间,找出最小值,思路很简单,但是我交了发,然后这题我尝试开始使用c++来写题,之前全是使用c语言,导致写题速度很慢,然后现在慢慢的学习c++里面的数据结构;

代码:

#include
using namespace std;

typedef long long LL;
const int N = 500010;
int a[N];
int main()
{
    ios::sync_with_stdio(false);//它的作用是关闭与stdio库的同步_关闭同步可以提高程序的输入输出效率
    cin.tie(nullptr);//通过将std ::cin.tie(nullptr)设置为确保未缓冲,以改善性能。

    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    multisetb;
    sort(a+1,a+n+1);//对数据进行排序
    for(int i=2;i<=k-1;i++){
        b.insert(a[i]-a[i-1]);
    }
    LL t=0;
    LL ans=1e18;
    for(int i=k;i<=n;i++){
        b.insert(a[i]-a[i-1]);
        ans=min(ans,(LL)*b.begin()*(a[i]-a[i-k+1]));
        b.erase(b.lower_bound(a[i-k+2]-a[i-k+1]));
    }
    cout<

C题:第五周任务 - Virtual Judge (vjudge.net)

思路:我刚开始就是想将n转换成k进制的数,结果就是(k*位数-1+最高位的数),但是我没有想到一种情况,就是最高位的数替换其他位的数,比如9  换成  2进制,是1001,比1111小,所以要在上面的情况下减一就行了;

代码:

#include
using namespace std;

typedef long long LL;

int n,k;
int main()
{
    cin>>n>>k;
    int t=-1;
    int temp=0;
    int ans=0;
    int N=n;
    if(n<=k)
    {
        ans=n;
    }
    else
    {
        while(n)
        {
            temp=n%k;
            n/=k;
            t++;
        }
        ans=temp+k*t;
        int cnt=0;
        for(int i=t;i>=0;i--)
        {
            cnt+=temp*pow(k,i);
        }
        if(cnt>N){
            ans-=1;
        }
    }
    cout<

线性代数复习:

看了速成视频,感觉还是不够问,接下来准备花点时间将之前的线性代数作业重写一遍;

读书:

看了mysql必知必会第一章,后面要加快进度;

你可能感兴趣的:(c++,算法,开发语言)