2020-12-21 00:11:41    4    0    0
/* P3366
 * Au: SJoshua
 */
#include <cstdio> 
#include <algorithm> 

#define MAXM 200000
#define MAXN 5000  

using namespace std; 

struct edge { 
    int u, v, w;  
} edges[MAXM]; 

int cmp (edge a, edge b) { 
    return a.w < b.w; 
} 

int set[MAXN]; 

int findSet(int k) { 
    return set[k] == k ? k : set[k] = findSet(set[k]); 
} 

int main(void) { 
    int n, m, nos, wt = 0; 
    scanf("%d %d", &n, &m); 
    for (int k = 1; k <= m; k++) { 
        scanf("%d %d %d", &edges[k].u, &edges[k].v, &edges[k].w); 
    } 
    sort(edges+1, edges+1+m, cmp); 
    for (int k = 1; k <= n; k++) { 
        set[k] = k; 
    } 
    nos = n; 
    for (int k = 1; k <= m && nos > 1; k++) { 
        int fu = findSet(edges[k].u); 
        int fv = findSet(edges[k].v); 
        if (fu != fv) { 
            set[fu] = fv; 
            wt += edges[k].w; 
            nos--; 
        } 
    }
    int fc = findSet(1);
    for (int k = 2; k <= n; k++) {
        if (findSet(k) != fc) {
            printf("orz")
2020-12-21 00:11:35    5    0    0

这个问题真没想到,没留意M最大只有3,也完全没有想到用公式啥的,当时没往这方面想,直接按递归公式写的算法,结果狠狠的巴掌:超时了。。。。


问题描述
众所周知,阿克曼函数中扮演一个重要的角色在理论计算机科学领域。然而,在另一方面,戏剧性的快速增长速度引起的功能很难calcuate阿克曼的价值功能。

阿克曼函数可以递归地定义如下:


现在艾迪给你两个数字:m和n,你的任务是计算的价值(m,n)。这是如此简单的问题,如果你解决这个问题,你将收到一个奖(艾迪将邀请你,6餐厅吃晚饭)。
 


输入
的每一行输入两个整数,即m,n,0 < m < = 3。
注意,当m < 3,n可以是任意整数不到1000000,而m = 3,n的值限制在24。
输入终止结束的文件。
 


输出
为每个值m,n,打印出的价值(m,n)。
 


样例输入
1 3
2 4
 


样例输出
5
11
 

下面是超时的代码:

 

 

[cpp] view plain copy
 
  1. int fun(int m, int n)  
    {  
        if(m==0)  
        return n+1;  
        if(m>0 && n == 0)  
        {  
            fun(m-1,1);  
        }  
        if (m>0 && n>0)  
        {  
            fun(m-1,fun(m,n-1));  
            if (m==3)  
            {  
                if(n>24)  
                n=24;  
            }  
        }  
    }  
    

 


 

M最大是3 所以可以直接把m=1,2,3
的公式推出来,推导m=1时要结合m=0时推
推导m=2时用m=1时 同理可得到
m=0    n+1;
m=1    n+2;
m=2   2*n+3
m=3   dp[3][i]=2*dp[3][i-1]+3;


 

 

[cpp] view plain copy
 

#include<stdio.h>  
long int A(long int,long int);  
main()  
{  
    long int n,m;  
    while(scanf("%ld%ld",&m,&n)!=EOF)  
        printf("%ld\n",A(m,n));  
}  
2020-12-21 00:11:33    2    0    0

算法具体不再过多赘述,可以证明每一种的蚯蚓长度都是单调的,开三个队列存一下,每次取出三个队头取最大。

其实这题用STL的queue是能A的。。。

注意一些地方的特判,不要RE。

'''cpp

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<bitset>
using namespace std;
typedef long long ll;
int a[100010],n,m,q,u,v,t;
queue<int> qu,qu1,qu2;
int nlen=0;
inline int front(queue<int> &q)
{
    if(q.empty()) return -0x3f3f3f3f;
    else return q.front()+nlen;
}
inline int get()
{
    int mx=max(front(qu),max(front(qu1),front(qu2)));////notice特判,不要RE
    if(mx==front(qu)) qu.pop();
    else if(mx==front(qu1)) qu1.pop();
    else if(mx==front(qu2)) qu2.pop();
    return mx;
}
inline bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);
    for(int i=1;i<=n;i++)   scanf("%d",&a[i]);
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=n;i++) qu.push(a[i]);
    for(int i=1;i<=m;i++)
    {
        int tt=get();
        int len1=(ll)t
2020-12-21 00:11:28    3    0    0
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
float Q_reqrt(float number)//四倍速算数平方根 卡马克快速平方根
{
long i;
float x2,y;
constfloat threehalfs =1.5f;

x2 = number*0.5f;
y = number;
i = * ( long * ) &y;
i = 0x5f3759df - ( i>>1 );
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) );//一次牛顿迭代
y=y*(threehalfs-(x2*y*y));// 二次牛顿迭代
y=y*(threehalfs-(x2*y*y));
return1/y;
}
int main()
{
float a;
cin>>a;
cout<<Q_reqrt(a);
return0;
}


2020-12-21 00:11:01    4    0    0
 昨天考的初赛……考完之后真是一脸懵逼= =
虽说题目难度真的不大,但是考得这么烂还真是菜啊……
大致说说考试过程和某些题目吧……

14:00
考试快开始了……很想复习点什么但又不知道复习点什么
好叭,那就看看小丽买笔复习(xiaolimaibi.icoc.me 


于是就看到了初赛培训提纲,实际上还是有点用的

14:30
考试开始……没有什么慌的感觉说实话,
因为自己觉得初赛只要不错读程(flag)随便考考就ok了。。
还嘚瑟地抖腿。。
试卷一发下来,结果第一题就大跌眼镜(2333)
Pascal哪一年开始隐退noi?
woc……还真不知道!
后来突然想着老师好像说过我们毕业刚好不能用?那就2020吧。。
华丽丽开门红。。
后面几题都挺蠢的,不过那道算星期几的我还真算了挺久,怕算错,
但是想来想去没细节就速度加快了……(还真没细节)

14:50
顺利进入多选题……第一题……送分
第二题……送分
第三题……希尔排序啥来着,,...反正不稳定,送分
第四题……fortran是第一个高级语言吧= =怎么会面向对象去
第五题。。吐槽一下,最后一题不是说好送分的么。。
王选奖不知道为什么我就是有印象,,
不过应该不是普遍知道的吧= =
又过了一遍确认无误就pass了。。

15:00
问题求解time。。
第一题沙伯题……随便凑凑就出来了,3次。
第二题……woc这tm不是最小割么??ccf预示今年复赛考网络流??
没多想……手动跑了个网络流……好像不难跑,最大流是4.
接着第二问我真是想锤死我自己= =
我知道这个平面图是可以转对偶图然后通过最短路来求最大流的。。
所以我不厌其烦又画了一个,
然后方案数。。按理来说就是最短路的方案数啊喂。。
一开始做出来4,马上发现了相同权值的边得加上,
于是算出来8……
去图上比划比划,发现没什么问题了吧。。就没多想pass了。。
结果翻车= =有一条相同权值的边没加。。谁叫我草稿纸太乱了啊= =
答案是9。。

15:15
读程本来觉得应该不会难,结果第一题就慌了一跳,,
并没有看出来它在干嘛= =
为了第一题不错掉,我来回算了好几遍才结束,15;
第二题本来以为要暴力模拟的,结果发现竟然是个幻方= =
马上过了;
第三题……是来搞笑的么,,逆序对个数,好像是8个。
第四题……诶不想说啥了。。
本来以为折2次之后的点就好了……结果竟然每次cnt清零!!
清零!!wocccccccccc!!!
做得太快而且自信了……结果没怎么检查,
于是这一
2020-12-21 00:10:16    10    0    0

    树莓派配置邮箱时需要用到ssmtp.conf文件,但是默认的权限为‘只读’,所以需要对权限修改才能进行文件的编辑。

进入该文件所在的文件夹,然后输入修改该文件的全部权限的命令:sudo chmod 777 ssmtp.conf  

S1:我的ssmtp.conf文件在/etc/ssmtp文件夹下

 

S2:右击ssmtp.conf选择Properties选项,然后点击permissions就可以看到权限了

 

S3:真正的步骤开始了

打开命令窗口,进入该文件所在文件夹,输入命令,这样就ok了

 

对上图的解释:

(1)ls -al命令用来查看权限

(2)列表含义

首先讲一下:

chgrp:改变档案所属群组;chown:改变档案拥有者;chmod:改变档案的权限

文件的3种权限:-w  write可写;-r   read可读; -x execute可执行;--无权限

文件的3种身份:-u   user文件所属主人;-g   group文件所属群组;-o   other其他拥有者;-a  all全部身份

 

第一列:‘drwxr-xr-x’,表示文件的类型和文件权限;

第二列:‘2’是纯数字,表示文件连接个数;

第三列:‘root’表示文件的所有者;

第三列:‘root’表示文件的所在群组;

第五列:‘4096’表示文件长度(大小)

最后一列:表示文件名
————————————————
版权声明:本文为CSDN博主「perfect_young」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiangsujiangjiang/java/article/details/80311018

2020-12-21 00:10:14    18    0    0

最近因为做大创项目,需要频繁在树莓派上进行代码的编写,但是因为本人眼神不太好,代码经常敲错,所以我就想试试在树莓派上安装VSCode,希望它提示我变量名敲错。我看网上很多教程都指向了国外大神编写的一个教程:https://code.headmelted.com/。但是,我对照着大神的教程安装却失败了。因此,在我研究了很久过后,找到了解决的办法。
执行以下的步骤,最好是使用root用户进行操作:sudo -i

1.下载脚本
wget https://code.headmelted.com/installers/apt.sh
1
2.修改配置脚本
vim apt.sh
1
然后注释掉这行:apt-get install -y ${CODE_EXECUTABLE_NAME}
使用这一行:apt-get install --allow-unauthenticated -y ${CODE_EXECUTABLE_NAME}

接着,给脚本修改操作权限:chmod +x apt.sh

3.安装
./apt.sh

 

ok,安装成功,打开的比较缓慢,于是,我放弃了使用它编写代码。
————————————————
版权声明:本文为CSDN博主「没文化的亏」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wang3375/java/article/details/93379885

2020-12-21 00:10:10    5    0    0

Linux环境下vi/vim编辑器常用命令

 

使用vi文本编辑器

配置文件是Linux系统中的显著特征之一,其作用有点类似于Windows系统中的注册表,只不过注册表是集中管理,而配置文件采用了分散的自由管理方式。那么如何使用Linux字符操作界面中的文本编辑器——vi,以便更好地管理和维护系统中的各种配置文件。

vi是一个功能强大的全屏幕文本编辑工具,一直以来都作为类UNIX操作系统的默认文本编辑器。vim是vi编辑器的增强版本,在vi编辑器的基础上扩展了很多实用的功能,但是习惯上也将vim称为vi。

 

1、vi/vim的使用

vi是工作在字符终端环境下的全屏幕编辑器,因此编辑界面相对比较简单,并没有为用户提供鼠标操作和菜单系统,而是通过按键命令实现相应的编辑和操作功能。在vi编辑界面中可以使用三种不同的工作模式。分别是命令模式(Command mode),输入模式(Insert mode)和末行模式(Last line mode)。当然,在不同的模式中能够对文件进行的操作也不相同。

 

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。

  • x 删除当前光标所在处的字符。

  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符

  • ENTER,回车键,换行

  • BACK SPACE,退格键,删除光标前一个字符

  • DEL,删除键,删除光标后一个字符

  • 方向键,在文本中移动光标

  • HOME/END,移动光标到行首/行尾

  • Page Up/Page Down,上/下翻页

  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

  • ESC,退出输入模式,切换到命令模式

  •  

末行模式

在命令模式下按下:(英文冒号)就进入了末行模式。

末行模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序

  • w 保存文件

按ESC键可随时退出末行模式。

简单的说,我们可以将这三个模式

2020-12-21 00:09:58    9    0    0

标签纸 记录一些部件的接线信息和状况

步进电机 二相四根 黑A+ 绿A- 红B+ 蓝B-

采用esp8266wifi2.4g控制版,可以在低功耗情况下远程链接更新控制程序,更易于安装和后续升级。

改装置采用多段独立按钮设计,水泵,风扇,以及毛刷电机都有独立按钮控制,便于人员操作。

自行车拖拽装置采用tb6600驱动步进电机,做到精确的相位与距离控制。

(无抬升装置,这个没考虑到)

总结下目前项目的问题

  1. 两列自行车应该共用一个毛刷
  2. 毛刷之间预留间距太小,会卡住自行车
  3. 前面的抬升或者说引导装置未做(非常重要 非常重要
  4. 皮带传动存在bug 
  5. 挂钩问题
  6. 喷头问题
2020-06-18 11:25:05    374    0    0

echarts