0%

Win10系统:

新增:

  1. 贴靠窗口:
    Win + 左/右 > Win + 上/下 > 窗口可以变为 1/4 大小放置在屏幕 4 个角落。
  2. 切换窗口:
    Alt + Tab(不是新的,但任务切换界面改进)。
  3. 任务视图:
    Win + Tab(松开键盘界面不会消失)。
  4. 创建新的虚拟桌面:
    Win + Ctrl + D。
  5. 关闭当前虚拟桌面:
    Win + Ctrl + F4。
  6. 切换虚拟桌面:
    Win + Ctrl + 左/右。

常用:

  1. Win键   桌面与开始菜单切换按键
  2. Win + R  打开运行对话框
  3. Win + Q  快速打开搜索
  4. Win + I  快速打开Win10设置栏
  5. Ctrl+Alt+Del  快速打开任务管理器
  6. Alt+F4  关机快捷键

Windows键组合快捷键

  1. Win + ←:最大化窗口到左侧的屏幕上(与开始屏幕应用无关)
  2. Win + →:最大化窗口到右侧的屏幕上(与开始屏幕应用无关)1. Win+ ↑:最大化窗口(与开始屏幕应用无关)
  3. Win+ ↓:最小化窗口(与开始屏幕应用无关)
  4. Win+ SHIFT +↑:垂直拉伸窗口,宽度不变(与开始屏幕应用无关)
  5. Win+ SHIFT +↓:垂直缩小窗口,宽度不变(与开始屏幕应用无关)
  6. Win+SHIFT+←:将活动窗口移至左侧显示器 (与开始屏幕应用无关)
  7. Win+SHIFT+→:将活动窗口移至右侧显示器(与开始屏幕应用无关)
  8. Win+ P:演示设置
  9. Win+ Home:最小化所有窗口,第二次键击恢复窗口(不恢复开始屏幕应用)
  10. Win+ 数字键:打开或切换位于任务栏指定位置的程序
  11. Win+Shift+数字键:打开位于任务栏指定位置程序的新实例
  12. Win+B:光标移至通知区域
  13. Win+Break:显示“系统属性”对话框
  14. Win+D:显示桌面,第二次键击恢复桌面 (不恢复开始屏幕应用)
  15. Win+E:打开我的电脑
  16. Win+Ctrl+F:搜索计算机(如果你在网络上)
  17. Win+G:循环切换侧边栏小工具
  18. Win+L:锁住电脑或切换用户
  19. Win+M:最小化所有窗口
  20. Win+Shift+M:在桌面恢复所有最小化窗口(不恢复开始屏幕应用)
  21. Win+R:打开“运行”对话框
  22. Win+T:切换任务栏上的程序
  23. Win+Alt+回车:打开Windows媒体中心
  24. Win+U:打开轻松访问中心
  25. Win+F1:打开Windows帮助和支持
  26. Win+N:插件新笔记(OneNote)
  27. Win+S:打开屏幕截图工具(OneNote)
  28. Win+Q:打开Lync,Windows 8搜索功能移除了该快捷键
  29. Win+A:接受所有来电 (在microsoft Lync中)
  30. Win+X:拒绝来电(在microsoft Lync中),如果Windows移动中心存在,该快捷键不起作用
  31. Win+减号:缩小(放大镜)
  32. Win+加号:放大(放大镜)
  33. Win+Esc:关闭放大镜
  34. Win+空格键:切换输入语言和键盘布局
  35. Win+O:禁用屏幕翻转
  36. Win+,:临时查看桌面
  37. Win+V:切换系统通知信息
  38. Win+Shift+V:反向切换系统通知信息
  39. Win+回车:打开“讲述人”
  40. Win+PgUp:将开始屏幕或开始屏幕应用移至左侧显示器
  41. Win+PgDown:将开始屏幕或开始屏幕应用移至右侧显示器
  42. Win+Shift+.:将应用移至左侧
  43. Win+.:将应用移至右侧
  44. Win+C:打开Charms栏(提供设置、设备、共享和搜索等选项)
  45. Win+I:打开设置栏
  46. Win+K:打开连接显示屏
  47. Win+H:打开共享栏
  48. Win+Q:打开应用搜索面板
  49. Win+W:打开“设置搜索”应用
  50. Win+F:打开“文件搜索”应用
  51. Win+Tab:循环切换应用
  52. Win+Shift+Tab:反向循环切换应用
  53. Win+Ctrl+Tab:循环切换应用,切换时手动选择应用
  54. Win+Z:打开“应用栏”
  55. Win+/:恢复默认输入法
  56. Win+J:显示之前操作的应用
  57. Win+X:快捷菜单

常规(通用)的键盘快捷方式:

  1. F1 显示帮助
  2. Ctrl+Shift+Esc 打开任务管理器
  3. Ctrl+A 全选
  4. Ctrl+C 复制选择的项目
  5. Ctrl+X 剪切选择的项目
  6. Ctrl+V(或 Shift+Insert) 粘贴选择的项目
  7. Ctrl+Z 撤消操作
  8. Ctrl+Y 重新执行某项操作
  9. Delete(或 Ctrl+D) 删除所选项目并将其移动到“回收站”
  10. Shift+Delete 不先将所选项目移动到“回收站”而直接将其删除
  11. F2 重命名选定项目
  12. Ctrl+向右键 将光标移动到下一个字词的起始处
  13. Ctrl+向左键 将光标移动到上一个字词的起始处
  14. Ctrl+向下键 将光标移动到下一个段落的起始处
  15. Ctrl+向上键 将光标移动到上一个段落的起始处
  16. Ctrl+Shift 加某个箭头键 选择一块文本
  17. Shift 加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本
  18. Ctrl 加任意箭头键+空格键 选择窗口中或桌面上的多个单个项目
  19. Ctrl+A 选择文档或窗口中的所有项目
  20. F3 搜索文件或文件夹
  21. Alt+Enter 显示所选项的属性
  22. Alt+F4 关闭活动项目或者退出活动程序
  23. Alt+空格键 为活动窗口打开快捷方式菜单
  24. Ctrl+F4 关闭活动文档(在允许同时打开多个文档的程序中)
  25. Ctrl+ Alt+Tab 使用箭头键在打开的项目之间切换
  26. Ctrl+鼠标滚轮 更改桌面上的图标大小
  27. Win键 + Tab 使用 Aero Flip 31. D 循环切换任务栏上的程序
  28. Ctrl + Win键 + Tab 通过 Aero Flip 31. D 使用箭头键循环切换任务栏上的程序
  29. Alt+Esc 以项目打开的顺序循环切换项目
  30. F6 在窗口中或桌面上循环切换屏幕元素
  31. F4 在 Win资源管理器中显示地址栏列表
  32. Shift+F10 显示选定项目的快捷菜单
  33. Ctrl+Esc 打开“开始”菜单
  34. Alt+加下划线的字母 显示相应的菜单
  35. Alt+加下划线的字母 执行菜单命令(或其他有下划线的命令)
  36. F10 激活活动程序中的菜单栏
  37. 向右键 打开右侧的下一个菜单或者打开子菜单
  38. 向左键 打开左侧的下一个菜单或者关闭子菜单
  39. F5(或 Ctrl+R) 刷新活动窗口
  40. Alt+向上键 在 Win资源管理器中查看上一级文件夹
  41. Esc 取消当前任务
  42. 插入 CD 时按住 Shift 阻止 CD 自动播放
  43. 左 Alt+Shift 在启用多种输入语言时切换输入语言
  44. Ctrl+Shift 在启用多个键盘布局时切换键盘布局
  45. 右或左 Ctrl+Shift 更改从右到左阅读语言的文本阅读方向
  46. Win资源管理器中的快捷键
  47. Ctrl+N 打开新窗口
  48. Ctrl+W 关闭当前窗口
  49. Ctrl+Shift+N 新建文件夹
  50. End 显示活动窗口的底端
  51. Home 显示活动窗口的顶端
  52. F11 最大化或最小化活动窗口
  53. Ctrl+句点 顺时针旋转图片
  54. Ctrl+逗号 逆时针旋转图片
  55. Num Lock+数字键盘上的星号 (*) 显示所选文件夹下的所有子文件夹
  56. Num Lock+数字键盘上的加号 (+) 显示所选文件夹的内容
  57. Num Lock+数字键盘上的减号 (1. ) 折叠选定的文件夹
  58. 向左键折叠当前选项(如果它处于展开状态),或者选择其父文件夹
  59. Alt+Enter 打开所选项目的“属性”对话框
  60. Alt+P 显示预览窗格
  61. Alt+向左键   查看上一个文件夹
  62. Backspace(退格键)向上 返回父文件夹
  63. 向右键显示当前选项(如果它处于折叠状态),或者选择第一个子文件夹
  64. Alt+向右键 查看下一个文件夹
  65. Alt+向上键 查看父文件夹
  66. Ctrl+Shift+E 显示所选文件夹上面的所有文件夹
  67. Ctrl+鼠标滚轮 更改文件和文件夹图标的大小和外观
  68. Alt+D 选择地址栏
  69. Ctrl+E 选择搜索框
  70. Ctrl+F 选择搜索框

在对话框中使用的快捷键

  1. Ctrl+Tab 在选项卡上向前移动
  2. Ctrl+Shift+Tab 在选项卡上向后移动
  3. Tab 在选项上向前移动
  4. Shift+Tab 在选项上向后移动
  5. Alt+加下划线的字母 执行与该字母匹配的命令(或选择选项)
  6. Enter 对于许多选定命令代替单击鼠标
  7. 空格键 如果活动选项是复选框,则选中或清除该复选框
  8. 箭头键 如果活动选项是一组选项按钮,则选择某个按钮
  9. F1 显示帮助
  10. F4 显示活动列表中的项目
  11. Backspace 如果在“另存为”或“打开”对话框中选中了某个文件夹,则打开上一级文件夹

Word

Excel

PPT

题目

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例:

1
2
输入: [2,2,3,2]
输出: 3

方法一:

代码:

1
2
3
4
5
6
7
8
9
10
11
12
int singleNum(vector<int>& nums)
{
int res = 0;
for(int i = 0; i < 32; i++) {
int count = 0;
for(int j = 0; j < nums.size(); j++) {
count += (nums[j] >> i) & 1;
}
res += (count % 3) << i;
}
return res;
}

解析:

  1. 首先:为什么i < 32?
    int型占4个字节,即32位,所以int的大小为 int$\in$ [$-2^{31}$, $2 ^ {31} -1$]
  2. 时间复杂度为:O(32n) <===> O(n);
  3. 虽然是二进制,但是运算法则和十进制并无差异,变的只是进制而已;
  4. 因为要确定一个数字,所以$\%3$会让那个数字显示出来在二进制形式下,那个位置有1。

方法二:

代码:

1
2
3
4
5
6
7
8
int singleNum(vector<int>& nums) {
int ones = 0, twos = 0;
for(auto x : nums) {
ones = (ones ^ x) & ~twos;
twos = (twos ^ x) & ~ones;
}
return ones;

解析:

  1. 自动机 的角度出发;

  2. 状态机:(举例:)

    状态量 ones twos
    初始状态 0 0
    一个1 1 0
    两个1 0 1
    三个1 0 0
  3. 三个状态一循环,比如有6个1, 则进行两轮循环,状态量为0   0

质数

1——20:2、3、5、7、9、11、13、17、19

1 : 1

2 : 3

3 : 7

4 : 15

5 : 31

6 : 63

7 : 127

8 : 255

9 : 511

10 : 1023

11 : 2047

12 : 4095

13 : 8191

14 : 16383

15 : 32767

16 : 65535

17 : 131071

18 : 262143

19 : 524287

20 : 1048575

21 : 2097151

22 : 4194303

23 : 8388607

24 : 16777215

25 : 33554431

26 : 67108863

27 : 134217727

28 : 268435455

29 : 536870911

30 : 1073741823

31 : 2147483647

32 : 4294967295

33 : 8589934591

34 : 17179869183

35 : 34359738367

36 : 68719476735

37 : 137438953471

38 : 274877906943

39 : 549755813887

40 : 1099511627775

41 : 2199023255551

42 : 4398046511103

43 : 8796093022207

44 : 17592186044415

45 : 35184372088831

46 : 70368744177663

47 : 140737488355327

48 : 281474976710655

49 : 562949953421311

50 : 1125899906842623

51 : 2251799813685247

52 : 4503599627370495

53 : 9007199254740991

54 : 18014398509481983

55 : 36028797018963967

56 : 72057594037927935

57 : 144115188075855871

58 : 288230376151711743

59 : 576460752303423487

60 : 1152921504606846975

61 : 2305843009213693951

62 : 4611686018427387903

63 : 9223372036854775807

64 : 18446744073709551615

65 : 36893488147419103231

66 : 73786976294838206463

67 : 147573952589676412927

68 : 295147905179352825855

69 : 590295810358705651711

70 : 1180591620717411303423

71 : 2361183241434822606847

72 : 4722366482869645213695

73 : 9444732965739290427391

74 : 18889465931478580854783

75 : 37778931862957161709567

76 : 75557863725914323419135

77 : 151115727451828646838271

78 : 302231454903657293676543

79 : 604462909807314587353087

80 : 1208925819614629174706175

81 : 2417851639229258349412351

82 : 4835703278458516698824703

83 : 9671406556917033397649407

84 : 19342813113834066795298815

85 : 38685626227668133590597631

86 : 77371252455336267181195263

87 : 154742504910672534362390527

88 : 309485009821345068724781055

89 : 618970019642690137449562111

90 : 1237940039285380274899124223

91 : 2475880078570760549798248447

92 : 4951760157141521099596496895

93 : 9903520314283042199192993791

94 : 19807040628566084398385987583

95 : 39614081257132168796771975167

96 : 79228162514264337593543950335

97 : 158456325028528675187087900671

98 : 316912650057057350374175801343

99 : 633825300114114700748351602687

100 : 1267650600228229401496703205375

可以看出:

个位数字为4 7 10分别差了一个数量级

  1. 无穷大表示:0x3f3f3f3f

  2. freopen()

    1. 头文件: stdio.h 或者 cstdio (如果是C11,iostream似乎已经包含了,若是C98需要加上 #include <cstdio>)

    2. 声明

      1
      FILE *freopen(const char *filename, const char *mode, FILE *stream)
    3. 参数

      • filename – 文件名,用于存储输入输出的自定义文件名。
      • mode – 文件打开的模式。和fopen中的模式(如: r – “只读访问”、w – “只写访问”、a – “追加写入”)相同。
      • stream – 一个文件,通常使用标准流文件。如:stdin – 标准输入、stdout – 标准输出、stderr(一般不用) – 标准错误
    4. 模式

    5. 功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。

    6. 实例

      1. stdout 到一个文本文件的重定向,即:把输出到屏幕的文本输出到一个文本文件中

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        #include <iostream>
        #include <cstdio>
        using namespace std;

        int main()
        {
        if(freopen("./output.txt","r",stdout)==NULL)
        fprintf(stderr,"error redirecting stdout\n");

        for(int i=0;i<10;i++)
        printf("%3d",i);

        printf("\n");
        fclose(stdout);

        return 0;
        }
      2. 从文件 in.txt 中读入数据,打印到屏幕上

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        #include <iostream>
        #include <cstdio>
        using namespace std;

        int main()
        {
        int a, b;
        freopen("./in.txt", "r", stdin);
        // freopen("out.txt", "a", stdout);
        while (cin >> a >> b)
        cout << a + b << endl;
        fclose(stdin);
        fclose(stdout);

        return 0;
        }
      3. 从文件 in.txt 中读入数据,计算加和输出到 out.txt

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        #include <iostream>
        #include <cstdio>
        using namespace std;

        int main()
        {
        int a, b;
        freopen("./in.txt", "r", stdin);
        freopen("out.txt", "a", stdout);
        while (cin >> a >> b)
        cout << a + b << endl;
        fclose(stdin);
        fclose(stdout);

        return 0;
        }

        Note: 一般常用的是 6.2,因为有些比赛的命令行不能粘贴,一个个的打又太麻烦了,这样就会方便很多

  3. 导入全部头文件

    1
    #include <bits/stdc++.h>

  • 题目

  • 解析

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    0   0000
    1 0001
    2 0010
    3 0011
    4 0100
    5 0101
    6 0110
    7 0111
    8 1000
    9 1001
    10 1010
    11 1011
    12 1100
    13 1101
    14 1110
    15 1111
  1. 假设求r[i]
  2. r[i - 1] + 1 ,如果进位,那么r[i]就和r[i - 1] 没有关系了,如果没有进位,那么,r[i] = r[i - 1] + 1
  3. 接着,看进位的情况:如果 i & (i - 1) ,那么就会把i和 i - 1 的最低位去掉,即变为0;

    Ps: 最低位是指,从左面第0位开始,一直往右数,直到遇到两个数不一样的位置,那么后面的数(包括不一样的数)不管相不相同,都为最低位(例:9 和 10:从左面第0位开始,到第2位不同,那么第2、3位即为最低位)

  4. 显而易见,i & (i - 1)得到的数就是去掉最低位之后的数,那么,由于进位了,所以,r[i] = r[i & (i - 1)] + 1
  • 代码

1
2
3
4
5
6
7
8
vector<int> countBits(int num) {
vector<int> r(num + 1);
r[0] = 0;
for(int i = 1; i <= num; i++) {
r[i] = r[i & (i - 1)] + 1;
}
return r;
}

  • n&(n-1)的妙用

1. 判断一个数是否是2的方幂

  1. 方法:n > 0 && ((n & (n - 1)) == 0 )

  2. 解释:
    ((n & (n-1)) == 0):

    如果A&B==0,表示A与B的二进制形式没有在同一个位置都为1的时候。

    不妨先看下n-1是什么意思。

    令:n=1101011000(二进制,十进制也一样),则

    n-1=1101010111。

    n&(n-1)=1101010000

    由此可以得出,n和n-1的低位不一样,直到有个转折点,就是借位的那个点,从这个点开始的高位,n和n-1都一样,如果高位一样这就造成一个问题,就是n和n-1在相同的位上可能会有同一个1,从而使((n & (n-1)) != 0),如果想要((n & (n-1)) == 0),则高位必须全为0,这样就没有相同的1。

    所以n是2的幂或0

2. 求某一个数的二进制表示中1的个数

1
2
3
4
while (n >0 ) {
count ++;
n &= (n-1);
}

3. 计算N!的质因数2的个数

  1. N!质因数2的个数 = [N / 2] + [N / 4] + [N / 8] + ….

  2. 过程:
    下面通过一个简单的例子来推导一下过程:N = 10101(二进制表示)

    现在我们跟踪最高位的1,不考虑其他位假定为0,

    则在

    [N / 2]    01000

    [N / 4]    00100

    [N / 8]    00010

    [N / 8]    00001

    则所有相加等于01111 = 10000 - 1

    由此推及其他位可得:(10101)!的质因数2的个数为10000 - 1 + 00100 - 1 + 00001 - 1 = 10101 - 3(二进制表示中1的个数)

    推及一般N!的质因数2的个数为N - (N二进制表示中1的个数)

    n&(-n)在树状数组中lowbit出现   用来求 t 中的因子中形如2^k的数为多少     用来取得n最右边的1,可以知道其因子中有几个2

    10:  0000 1010

    -10: 1111 0110

    10&(-10)为 0010  =  2  所以10的因子中为2的有一个,2^k的形式的为2^1

    8&(-8) = [1000] = 8   所以8的因子中为2的有3个,2^k的形式为2^3

  1. 下载ruby,请点击这里
  2. 下载 rubyinstaller 之后,解压到新创建的目录下;
  3. 点击 Next,继续向导,记得勾选 Add Ruby executables to your PATH,直到 Ruby 安装程序完成 Ruby 安装为止。如果您的安装没有适当地配置环境变量,接下来您可能需要进行环境变量的配置
  4. 安装后,通过在命令行中输入以下命令来确保一切工作正常:
    1
    2
    > $ ruby -v
    ruby 2.6.0
  5. 输入一下代码:(可以直接到第六步,如果出现错误,再来做第5步)
    1
    2
    gem install pygments.rb
    gem install redcarpet
  6. _config.yml,将gems:的这一行注释掉。
【释】:详情请见这里

如果你想创建格式美美的,且包含文字,表格,图片,公式,甚至是不同型号标题的笔记,那么推荐你使用Markdown,用简单的语法就可以写出赏心悦目的笔记。

简单介绍几种常用语法

标题

在行首插入 1 到 6个#,分别表示标题 1 到标题 6

1
2
##### 这是标题5
###### 这是标题6
这是标题5
这是标题6
列表
有序列表

有序列表则使用数字加一个英文句点,并加空格,再输入文字

1
2
1. 你好
1. 加油!
  1. 你好
  2. 加油!
无序序列表

无序列表使用星号、加号或是减号作为列表标记,并加一个空格,再输入文字

1
2
3
+ Android
+ iPhone
+ iPad
  • Android
  • iPhone
  • iPad
链接

[描述](链接地址)

1
2
[QeuroIzo](https://QeuroIzo.top)

QeuroIzo

表格
1
2
3
4
| 表格|如此  | 创建 |
|-|-|-|
| this | is | so easy |


表格 如此 创建
this is so easy
图片
1
![](/source/imagess/posts/github/markdown.jpg)

添加 Mathjax 公式
1
2
3
4
行内公式:
两个 $ 之间输入公式,即,$ mathjax公式 $
独占一行公式:
两两 $$ 间输入公式,即,$$ mathjax公式 $$

$$ x^{y^z}=(1+{\rm e}^x)^{-2xy^w} $$

以上就是 Markdown 中一般用到的基本语法,非常简单,但可以创建出非常易读的笔记哦。此篇笔记就是一篇 Markdown 笔记!另外,直接新建普通的笔记,在标题加 .md 后缀也是可以直接渲染的。