寒假学习记录D18

1.Linux操作系统虚拟机安装

2.算法基础练习


(1).Linux操作系统虚拟机安装即密钥:

(a).Ubuntu18.04安装教程

(108条消息) Ubuntu18.04安装教程_Sunshine的博客-CSDN博客_ubuntu安装教程

(108条消息) vmware workstation16_一个可爱的小朋友的博客-CSDN博客_vmware workstation16 密钥

 

​​​​​​(108条消息) 手把手教你linux系统安装和完美配置_全栈川川-CSDN博客_linux系统安装与简单配置

(b).CentOS7(Linux)详细安装教程

(一般都用CentOS7,建议安装下面的^_^)

(108条消息) CentOS7(Linux)详细安装教程(图文详解)_缄默.ńī給の傷的博客-CSDN博客_linuxcentos7安装步骤 

镜像文件官网地址:

CentOS Mirrors Listicon-default.png?t=M0H8http://isoredirect.centos.org/centos/7/isos/x86_64/ 


 

 (2).算法基础练习


 

题目描述

    现在有一个大小n*1的收纳盒,我们手里有无数个大小为1*1和2*1的小方块,我们需要用这些方块填满收纳盒,请问我们有多少种不同的方法填满这个收纳盒

输入描述:

第一行是样例数T
第2到2+T-1行每行有一个整数n(n<=80),描述每个样例中的n。

输出描述:

对于每个样例输出对应的方法数

示例1

输入

3
1
2
4

输出

1
2
5

说明

n=4,有五种方法
1:1 1 1 1
2:2 1 1
3:1 2 1
4:1 1 2
5:2 2

备注:

对于100%的数据,
0 < T < 80;
0 < n <= 80。
#include<iostream>
using namespace std;
int main()
{
    int i;
    long long int n,a[81],m;
    cin>>n;
    while (n--)
    {
        cin>>m;
         a[1]=1;
         a[2]=2;
    for(i=3;i<=m;i++)
    {
        a[i]=a[i-1]+a[i-2];
    }
   cout<<a[m]<<endl;
 }
 return 0;
}


 

题目描述

“当你看向她时,有细碎星辰落入你的眼睛,真好。”——小可爱

在一个繁星闪烁的夜晚,卿念和清宇一起躺在郊外的草地上,仰望星空。

星语心愿,他们,想把这片星空的星星,连成一棵漂亮的树,将这美好的景色记录下来。

现在,天上共有n颗星星,编号分别为1,2.....n,一开始任何两个点之间都没有边连接。

之后,他们两个想在在(u,v)之间连无向边,需要付出|u联通块大小-v联通块大小|的代价。

他们两个想用最少的代价来使这n个点联通,所以他们想知道最小代价是多少。

(多组数据

输入描述:

第一行一个正整数,表示数据组数T

接下来T行每行一个正整数,表示询问的n

输出描述:

T行,每行一个数表示答案

示例1

输入

1
5

输出

2

说明

1,2....5五个点,连边顺序为(1,2),(3,4),(1,5),(5,3),代价为0,0,1,1,总代价为2,是n=5的时候最优答案。

虽然(1,2),(2,3),(3,4),(4,5)也可以,但是代价为0,1,2,3,总代价为6,比2大。

备注:

对于20%的数据,T<=2,n<=10

对于40%的数据,T<=10,n<=1000

对于60%的数据,T<=100000,n<=100000

对于另外40%的数据,T=1,n<=1000000000000
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=100010,mod=1e9+7;
int f[N];
map<int,int>S;
void init()
{
    for(int i=2;i<N;i++)
    {
        f[i]=f[i/2]+f[i-i/2]+(i-i/2*2);
    }
}
int dfs(int u)
{
    if(u<N)return f[u];
    if(S.count(u))return S[u];
    return S[u]=dfs(u/2)+dfs(u-u/2)+u-u/2*2;
}
signed main()
{
    int T;
    cin>>T;
    init();
    while(T--)
    {
        int n;
        cin>>n;
        cout<<dfs(n)<<endl;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值