Alex Li的学习笔记

A Yuki 的连通块

题目描述

Yuki 有一个无向图,这个无向图有 $n$ 个点和 $m$ 条边,Yuki 希望知道这个无向图有多少个不同的连通块?

两个连通块不同,当且仅当两连通块的点集不同。

输入

第一行包含两个正整数 $n$ 和 $m$($1 \le n, m \le 10^6$),分别表示无向图的点数和边数。
接下来 $m$ 行,每行包含两个整数 $u$ 和 $v$($1 \le u, v \le n$),表示编号为 $u$ 和 $v$ 的点之间有一条无向边。

输出

输出一行,表示该无向图的连通块数量。

输入样例

6 3
1 2
2 3
4 5

输出样例

3

阅读全文


猜猜是什么原因导致我现在刚准备睡()

实验要求:

使用logism自主搭建出一个支持所给指令集的32位CPU,并通过课下正确性测试。

  • 指令集:lw,sw,addu,subu,ori,j,beq。
  • 内存大小:32字。只需要一个RAM。
  • ROM大小:要求能执行32条指令。ROM不一定需要地址的全部位数。只需要一个ROM。
  • PC需要复位功能,起始地址为0x00003000。

我的CPU: https://github.com/lixu10/Logisim_SingleClock_CPU

搭建过程

一头雾水,根本不会搭啊。幸亏有学长的教程:一本书教你通关计组实验 - Kamonto's Little Planet ,简直是神!

然而搭完之后提交得到了WA的结果,经过一天多的Debug,终于解决了所有问题。

阅读全文


Question 1: Package

在每个文件里加上对应的配package和import语句即可。(代码修改可见附录)

// Main.java 前加入
import com.oo.cc.C;

// A.java 前加入
package com.oo.aa;

//B.java 前加入
package com.oo.bb;
import com.oo.aa.A;

//C.java 前加入
package com.oo.cc;
import com.oo.bb.B;

//BTest.java 前加入
package test;
import com.oo.bb.B;

阅读全文


上一节:https://lixu.cc/major/mips-pre.html

数组

在MIPS代码中,一般会分为两部分,.data部分.text部分,我们前面写的代码都属于.text部分,但是当我们需要使用数组时,则要使用.data段。

MIPS本身没有专门的“数组”类型,数组其实就是连续内存空间中的一组数据。通过给同一类型的变量分配连续的内存空间实现。在.data段定义数组,实际上是为多个相同类型的数据分配连续内存。

定义数组:

可以以定义数组初始值和定义空间大小两种方法来初始化数组:

.data
array: .word 10,20,30,40,50 # 定义一个大小为5的整型数组
array2: .space 20  # 20字节 = 5个int(4字节int)

其中arrayarray2为设置的数组名字。

阅读全文


做的跟shit一样,被虐爆了

F wiki数星星

题目背景

wiki正在一条直线上数星星,她想知道,哪里是离星星最近的地方呢?

题目描述

有一个函数 $ f(x) $,初始为常数函数 $ f(x) = 0 $。

接下来 $ Q $ 次操作:

  • 更新 1 a b:给定整数 $ a, b $,令 $ g(x) = f(x) + |x - a| + b $,然后把 $ f(x) $ 替换为 $ g(x) $。

    例如:若当前 $ f(x) = 0 $,执行操作更新操作 1 2 1(即 $ a=2, b=1 $),则新的函数为 $ f(x) = |x-2| + 1 $;接着再执行操作 1 3 2(即 $ a=3, b=2 $),新的函数为
    $ f(x) = |x-2| + 1 + |x-3| + 2 $。

  • 查询 2:输出使 $ f(x) $ 最小的整数 $ x $ 以及最小值 $ f(x) $。如果有多个使得最小的 $ x $,选择最小的那个整数。

例如:当 $ f(x) = |x - 2| + 1 $ 时,$ x = 2 $ 使得 $ f(x) $ 最小为 1。

已知询问时输出的值总是整数,请以整数格式输出。

阅读全文