树状数组求逆序对

第{{index + 2}}步,对于arr[{{index}}],即{{elenemt}},在cArr里进行标记。


如果有以{{elenemt}}为后件的逆序对,那么该逆序对的前件一定在cArr索引{{elenemt+1}}到9(左闭右闭)区间内(以下划线表示)。这一步非常重要,请务必多想一想!所以,求以4为后件的逆序对数,就是cArr.GetSum(startIndex:{{elenemt+1}},length:{{10-elenemt-1}})。GetSum是对指定范围内求和,返回值为{{returnValue}}。

逆序对问题的基础算法

在一个数组中,如[……]

继续阅读

Directory Opus编程

脚本插件运行外部程序的方式曲折,必须调用ActiveX对象WScript.Shell,使用Exec命令(不然会有黑色cmd窗口),并把输出重定向到硬盘文件。如果经常调用此脚本,会向硬盘写入大量临时文件。我倾向于不使用调用外部程序的脚本插件。

ACWING 651. 逛画展

原题链接:https://www.acwing.com/problem/content/description/653/

博览馆正在展出由世上最佳的 M 位画家所画的图画,你想到博览馆去看这些才华横溢的大师们的作品。
可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字,
l和r,代表他要看展览中的第 l 幅至第 r 幅画(包含 l 和 r)之间的所有图画,而门票的价钱就是一张图画一元。
为了看到更多名师的画,你希望入场后可以看到所有名师的图画(至少各一张)。
但是你想要花费最少,现在你需要编写计算机程序,来求出最小花费的的 l 值和 r 值。

输入输出格[……]

继续阅读

单调队列及应用

单调队列

单调队列是一种优先队列,要求元素是可排序的,或传入比较器。单调队列继承队列的以下性质:

  • 可从队尾插入元素。
  • 可从队头弹出元素。
  • 在队列中的所有元素里,队头元素一定是最早插入的。在队列中的所有元素里,队尾元素一定是最晚插入的。(FIFO)

单调队列有以下特殊性质:

  • 一个元素插入队列后,即使没有手动弹出,也不一定存在于该队列。
var queue=new MonotoneQueue();
queue.Enqueue(a);
queue.Enqueue(b);
Debug.Assert(queue.Contains(a)[......]

继续阅读

Git笔记

还原子模块工作树的修改

问题现象:TortoiseGit日志窗口的工作树变更显示子模块已修改。右击该子模块,还原,但修改仍然存在。

修复方法:

git submodule update --init

如何查看提交中是否包含重命名或复制?

$ git log --name-status -M -C -1  
commit c04ecb6edd602a8463b5239a5fde900b2b3 (HEAD -> 256818)
Author: gqqnbig <gqqnbig@gmail.com>
Date: Wed Nov 15 10:45:17[......]

继续阅读

WordPress屏蔽垃圾评论

屏蔽IP

屏蔽IP并在触发规则时写入日志

sudo ufw insert 1 deny log from 84.17.58.0/24
sudo ufw reload

ufw的大部分规则在/etc/ufw/user.rules。

126. Word Ladder II

LeetCode是用C# release模式运行的。

解法1:

使用队列进行广度优先搜索,统一在Dequeue后进行终止条件判断。

缺点是生成下一个状态,enqueue前,没有检查是不是解。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace LeetCode
{
	public class WordLadder2
	{
		public IList<IList<string>&g[......]

继续阅读

.NET测试框架测评

最近用了xUnit.net,结构简洁。用[Fact]标记无参测试方法,用[Theory]标记有参测试方法并用[InlineData]提供参数。而且,xUnit.net可以使用静态类作为测试类。这使得编写简洁的测试代码成为可能。

美中不足是xUnit的断言除了Assert.True()Assert.False()以外,都不接受自定义错误消息。当在持续集成服务器上出错,且本地无法重现时,根本无法知晓到底具体的出错情况。

xUnit.net团队坚持认为不应添加自定义消息。[ref]””. . . [].

继续阅读

C#与VB语言特性比较

C#VB备注

类型名与成员名相同[1]Dan Bryant. Why can't C# member names be the same as the enclosing type name?. . 2010-11-02 [2019-08-26].✕✓

多行注释✓✕使用多行注释符号可在版本控制系统中显示较少的修改。

多条件的for语句✓✕[……]

继续阅读

   [ + ]

1. Dan Bryant. Why can't C# member names be the same as the enclosing type name?. . 2010-11-02 [2019-08-26].