简单博弈论(Nim游戏)

2023-11-04

891. Nim游戏

给定 n

堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。

问如果两人都采用最优策略,先手是否必胜。

输入格式

第一行包含整数 n

第二行包含 n

个数字,其中第 i 个数字表示第 i

堆石子的数量。

输出格式

如果先手方必胜,则输出 Yes

否则,输出 No

数据范围

1≤n≤105

,
1≤每堆石子数≤109

输入样例:

2
2 3

输出样例:

Yes

 * 假定石堆的数量是:S1,S2,...,Si,Sj,...,Sn;
 * 1)如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么必然存在先手必败;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 * 必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;
 *      用反证法证明:假设存在 S1^S2^...^(Si-x)^Sj^...^Sn == 0,
 *      因为 S1^S2^...^Si^Sj^...^Sn == 0 ,所以  S1^S2^...^Sj^...^Sn == Si;
 *      所以S1^S2^...^(Si-x)^Sj^...^Sn == 0 => Si^(Si-x)==0 => Si=Si-x => x=0(与条
 *      件矛盾),不成立;
 *      即:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 *      必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;得证。
 *
 * 2)如果S1^S2^...^Si^Sj^...^Sn != 0 ,那么必然存在先手必胜;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn !=0 ==m,假设m用二进制表示的1的最高位是第k位,
 * 那么至少存在一个数字Si,使得Si用二进制表示的数的第k位是1,取出一个数 Si-(Si^m)
 * 能使得 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  证明:取出一个数 Si-(Si^m),那么 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  所以:S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0
 *  =>  S1^S2^...^(Si^m)^Sj^...^Sn == 0
 *  =>  将m提在后面: S1^S2^...^Si^Sj^...^Sn^m == 0
 *  因为 S1^S2^...^Si^Sj^...^Sn == m, m^m ==0
 *  所以得到 S1^S2^...^Si^Sj^...^Sn^m = m^m = 0;
 *   现在来证明 Si-(Si^m) > 0;
 *    证明:因为m的最高位1是在第k位,而Si的第k位一定存在1,所以Si^m之后,第k位的结果
 *          一定是0;
 *          所以在最极端的情况下, Si 与 Si^m 的比较:
 *                          Si      Si^m
 *      第k位               1       0
 *      第k位前面的位置     1/0     与Si相同
 *      第k位后面的位置     1/0     不确定(但即便是 Si 取全0,Si^m取全1,两个数相
 *                                          减也一定满足大于0);
 *    得证!
 *  得证!

/**
 * 假定石堆的数量是:S1,S2,...,Si,Sj,...,Sn;
 * 1)如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么必然存在先手必败;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 * 必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;
 *      用反证法证明:假设存在 S1^S2^...^(Si-x)^Sj^...^Sn == 0,
 *      因为 S1^S2^...^Si^Sj^...^Sn == 0 ,所以  S1^S2^...^Sj^...^Sn == Si;
 *      所以S1^S2^...^(Si-x)^Sj^...^Sn == 0 => Si^(Si-x)==0 => Si=Si-x => x=0(与条
 *      件矛盾),不成立;
 *      即:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 *      必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;得证。
 * 
 * 2)如果S1^S2^...^Si^Sj^...^Sn != 0 ,那么必然存在先手必胜;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn !=0 ==m,假设m用二进制表示的1的最高位是第k位,
 * 那么至少存在一个数字Si,使得Si用二进制表示的数的第k位是1,取出一个数 Si-(Si^m)
 * 能使得 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  证明:取出一个数 Si-(Si^m),那么 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  所以:S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0
 *  =>  S1^S2^...^(Si^m)^Sj^...^Sn == 0 
 *  =>  将m提在后面: S1^S2^...^Si^Sj^...^Sn^m == 0 
 *  因为 S1^S2^...^Si^Sj^...^Sn == m, m^m ==0
 *  所以得到 S1^S2^...^Si^Sj^...^Sn^m = m^m = 0;
 *   现在来证明 Si-(Si^m) > 0;
 *    证明:因为m的最高位1是在第k位,而Si的第k位一定存在1,所以Si^m之后,第k位的结果
 *          一定是0;
 *          所以在最极端的情况下, Si 与 Si^m 的比较:
 *                          Si      Si^m
 *      第k位               1       0
 *      第k位前面的位置     1/0     与Si相同
 *      第k位后面的位置     1/0     不确定(但即便是 Si 取全0,Si^m取全1,两个数相
 *                                          减也一定满足大于0);
 *    得证!
 *  得证!
*/

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int res=0;
    
    while (n -- )
    {
        int val;
        cin >> val;
        res^=val;
    }
    
    if(res)
        puts("Yes");
    else
        puts("No");
        
    return 0;
}

893. 集合-Nim游戏

给定 n

堆石子以及一个由 k 个不同正整数构成的数字集合 S

现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合 S

,最后无法进行操作的人视为失败。

问如果两人都采用最优策略,先手是否必胜。

输入格式

第一行包含整数 k

,表示数字集合 S

中数字的个数。

第二行包含 k

个整数,其中第 i 个整数表示数字集合 S 中的第 i 个数 si

第三行包含整数 n

第四行包含 n

个整数,其中第 i 个整数表示第 i 堆石子的数量 hi

输出格式

如果先手方必胜,则输出 Yes

否则,输出 No

数据范围

1≤n,k≤100

,
1≤si,hi≤10000

输入样例:

2
2 5
3
2 4 7

输出样例:

Yes

/**
1.Mex运算:

设S表示一个非负整数集合.定义mex(S)为求出不属于集合S的最小非负整数运算,即:
mes(S)=min{x};
例如:S={0,1,2,4},那么mes(S)=3;

2.SG函数

在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1,y2,····yk,
定义SG(x)的后记节点y1,y2,····yk的SG函数值构成的集合在执行mex运算的结果,即:
SG(x)=mex({SG(y1),SG(y2)····SG(yk)})
特别地,整个有向图游戏G的SG函数值被定义为有向图游戏起点s的SG函数值,即 SG(G)=SG(s).

3.有向图游戏的和

设G1,G2,····,Gm是m个有向图游戏.定义有向图游戏G,他的行动规则是任选某个有向图游戏Gi,并在Gi上行动一步.G被称为有向图游戏G1,G2,·····,Gm的和.
有向图游戏的和的SG函数值等于它包含的各个子游戏SG函数的异或和,即:
SG(G)=SG(G1)xorSG(G2)xor···xor SG(Gm)

以上定义是转载了一个dl的:
作者:E.lena
链接:https://www.acwing.com/solution/content/23435/
来源:AcWing

只要得到所有石堆的SG值,那么就和 Nim 游戏操作一样,将每堆石子的SG值当作 Nim游戏的
每堆石堆的数量,那么每次都可以取连接该集合的任一个方向,单是要得到最优策略,还是要
根据所有石堆的异或和来选择特定石堆的数量;

给出Nim游戏的证明后再探讨Nim集合的正确性:

 * 假定石堆的数量是:S1,S2,...,Si,Sj,...,Sn;
 * 1)如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么必然存在先手必败;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 * 必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;
 *      用反证法证明:假设存在 S1^S2^...^(Si-x)^Sj^...^Sn == 0,
 *      因为 S1^S2^...^Si^Sj^...^Sn == 0 ,所以  S1^S2^...^Sj^...^Sn == Si;
 *      所以S1^S2^...^(Si-x)^Sj^...^Sn == 0 => Si^(Si-x)==0 => Si=Si-x => x=0(与条
 *      件矛盾),不成立;
 *      即:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 *      必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;得证。
 *
 * 2)如果S1^S2^...^Si^Sj^...^Sn != 0 ,那么必然存在先手必胜;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn !=0 ==m,假设m用二进制表示的1的最高位是第k位,
 * 那么至少存在一个数字Si,使得Si用二进制表示的数的第k位是1,取出一个数 Si-(Si^m)
 * 能使得 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  证明:取出一个数 Si-(Si^m),那么 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  所以:S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0
 *  =>  S1^S2^...^(Si^m)^Sj^...^Sn == 0
 *  =>  将m提在后面: S1^S2^...^Si^Sj^...^Sn^m == 0
 *  因为 S1^S2^...^Si^Sj^...^Sn == m, m^m ==0
 *  所以得到 S1^S2^...^Si^Sj^...^Sn^m = m^m = 0;
 *   现在来证明 Si-(Si^m) > 0;
 *    证明:因为m的最高位1是在第k位,而Si的第k位一定存在1,所以Si^m之后,第k位的结果
 *          一定是0;
 *          所以在最极端的情况下, Si 与 Si^m 的比较:
 *                          Si      Si^m
 *      第k位               1       0
 *      第k位前面的位置     1/0     与Si相同
 *      第k位后面的位置     1/0     不确定(但即便是 Si 取全0,Si^m取全1,两个数相
 *                                          减也一定满足大于0);
 *    得证!
 *  得证!

因为我们在Nim游戏的证明中证明出了:
如果S1^S2^...^Si^Sj^...^Sn !=0 ==m,假设m用二进制表示的1的最高位是第k位,
那么至少存在一个数字Si,使得Si用二进制表示的数的第k位是1,取出一个数 Si-(Si^m)
能使得 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;且Si-(Si^m) > 0,所以在Nim集合中,
我们能得出,SG1^SG2^...^SGi^...^SGn !=0 ==m 的时候,我们可以选择第i个集合里选择第
SGi-(SGi^m) 条路线,(此路线一定存在,因为SGi-(SGi^m)<SGi,而[0,SGi)的路线都存在,
所以必定存在 SGi-(SGi^m) 属于 [0,SGi);

SG1^SG2^...^SGi^...^SGn == 0,就不消证明,先手必输;
*/

/**
1.Mex运算:

设S表示一个非负整数集合.定义mex(S)为求出不属于集合S的最小非负整数运算,即:
mes(S)=min{x};
例如:S={0,1,2,4},那么mes(S)=3;

2.SG函数

在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1,y2,····yk,
定义SG(x)的后记节点y1,y2,····yk的SG函数值构成的集合在执行mex运算的结果,即:
SG(x)=mex({SG(y1),SG(y2)····SG(yk)})
特别地,整个有向图游戏G的SG函数值被定义为有向图游戏起点s的SG函数值,即 SG(G)=SG(s).

3.有向图游戏的和

设G1,G2,····,Gm是m个有向图游戏.定义有向图游戏G,他的行动规则是任选某个有向图游戏Gi,并在Gi上行动一步.G被称为有向图游戏G1,G2,·····,Gm的和.
有向图游戏的和的SG函数值等于它包含的各个子游戏SG函数的异或和,即:
SG(G)=SG(G1)xorSG(G2)xor···xor SG(Gm)

以上定义是转载了一个dl的:
作者:E.lena
链接:https://www.acwing.com/solution/content/23435/
来源:AcWing

只要得到所有石堆的SG值,那么就和 Nim 游戏操作一样,将每堆石子的SG值当作 Nim游戏的
每堆石堆的数量,那么每次都可以取连接该集合的任一个方向,单是要得到最优策略,还是要
根据所有石堆的异或和来选择特定石堆的数量;

给出Nim游戏的证明后再探讨Nim集合的正确性:

 * 假定石堆的数量是:S1,S2,...,Si,Sj,...,Sn;
 * 1)如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么必然存在先手必败;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 * 必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;
 *      用反证法证明:假设存在 S1^S2^...^(Si-x)^Sj^...^Sn == 0,
 *      因为 S1^S2^...^Si^Sj^...^Sn == 0 ,所以  S1^S2^...^Sj^...^Sn == Si;
 *      所以S1^S2^...^(Si-x)^Sj^...^Sn == 0 => Si^(Si-x)==0 => Si=Si-x => x=0(与条
 *      件矛盾),不成立;
 *      即:如果S1^S2^...^Si^Sj^...^Sn == 0 ,那么在Si中取出一个数 x(>0) 后,
 *      必然满足 S1^S2^...^(Si-x)^Sj^...^Sn != 0 ;得证。
 * 
 * 2)如果S1^S2^...^Si^Sj^...^Sn != 0 ,那么必然存在先手必胜;
 * 证明:如果S1^S2^...^Si^Sj^...^Sn !=0 ==m,假设m用二进制表示的1的最高位是第k位,
 * 那么至少存在一个数字Si,使得Si用二进制表示的数的第k位是1,取出一个数 Si-(Si^m)
 * 能使得 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  证明:取出一个数 Si-(Si^m),那么 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;
 *  所以:S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0
 *  =>  S1^S2^...^(Si^m)^Sj^...^Sn == 0 
 *  =>  将m提在后面: S1^S2^...^Si^Sj^...^Sn^m == 0 
 *  因为 S1^S2^...^Si^Sj^...^Sn == m, m^m ==0
 *  所以得到 S1^S2^...^Si^Sj^...^Sn^m = m^m = 0;
 *   现在来证明 Si-(Si^m) > 0;
 *    证明:因为m的最高位1是在第k位,而Si的第k位一定存在1,所以Si^m之后,第k位的结果
 *          一定是0;
 *          所以在最极端的情况下, Si 与 Si^m 的比较:
 *                          Si      Si^m
 *      第k位               1       0
 *      第k位前面的位置     1/0     与Si相同
 *      第k位后面的位置     1/0     不确定(但即便是 Si 取全0,Si^m取全1,两个数相
 *                                          减也一定满足大于0);
 *    得证!
 *  得证!

因为我们在Nim游戏的证明中证明出了:
如果S1^S2^...^Si^Sj^...^Sn !=0 ==m,假设m用二进制表示的1的最高位是第k位,
那么至少存在一个数字Si,使得Si用二进制表示的数的第k位是1,取出一个数 Si-(Si^m)
能使得 S1^S2^...^(Si-(Si-(Si^m))^Sj^...^Sn == 0;且Si-(Si^m) > 0,所以在Nim集合中,
我们能得出,SG1^SG2^...^SGi^...^SGn !=0 ==m 的时候,我们可以选择第i个集合里选择第
SGi-(SGi^m) 条路线,(此路线一定存在,因为SGi-(SGi^m)<SGi,而[0,SGi)的路线都存在,
所以必定存在 SGi-(SGi^m) 属于 [0,SGi);

SG1^SG2^...^SGi^...^SGn == 0,就不消证明,先手必输;
*/


#include <iostream>
#include <set>
#include <cstring>

using namespace std;

const int maxn = 10010;
int hs[maxn],f[maxn];
int m;

int SG(int val)
{
    if(hs[val]!=-1) //如果val块石子的石堆处理过,直接返回
        return hs[val];
        
    set<int> st;
    for(int i=0;i<m;++i)
    {
        int sum=f[i];
        if(val>=sum)
            st.insert(SG(val-sum));
    }
    
    for(int i=0; ;++i)
        if(!st.count(i))  //只要有最小不等于该集合的非负整数,就赋给hs[val];
            return hs[val]=i;
}

int main()
{
    cin >> m;
    for(int i=0;i<m;++i)
        cin >> f[i];
    
    memset(hs,-1,sizeof(hs)); //将所有集合都初始化为-1,表示未被处理
    
    int n;
    cin >> n;
    
    int res=0;
    for(int i=0;i<n;++i)
    {
        int val;
        cin >> val;
        res^=SG(val);
    }
    
    if(res)  //如果异或和不为0
        puts("Yes");
    else  
        puts("No");
    
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单博弈论(Nim游戏) 的相关文章

  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我

随机推荐

  • .NET Upgrade Assistant 升级 .NET MAUI

    NET Upgrade Assistant 是一种可帮助您将应用程序升级到最新的 NET版本 的工具 并且您可以使用这个工具将您的应用程序从旧平台 例如 Xamarin Forms 和 UWP 迁移到新的平台 此外 这个新版本的工具 可以让
  • OBS-VirtualCam OBS的虚拟摄像头插件

    OBS VirtualCam 是OBS的一个虚拟摄像头插件 可以将OBS中的内容提供给一个虚拟摄像头 这样其它软件就可以使用这个内容了 这里试试这个插件功能 1 下载obs并安装 登录OBS Studio网站 下载windows版 下载完成
  • 一些nginx有关基本命令

    位置 usr local nginx conf cd var www kayu sc web ht git pull gt usr local nginx sbin nginx 启动 gt usr local nginx sbin ngin
  • Pytorch文档解读

    官方文档链接 MultiheadAttention PyTorch 1 12 documentation 目录 多注意头原理 pytorch的多注意头 解读 官方给的参数解释 多注意头的pytorch使用 完整的使用代码 多注意头原理 Mu
  • 微信小程序发布新版本提示用户更新代码封装

    代码已上传至github github代码地址 https github com Miofly mio git App vue onLaunch this autoUpdate method autoUpdate function 自动更新
  • 2020-07-09

    标题Flink windowOperator源码解析
  • 两个LinearLayout或者ConstraintLayout平分布局

    两个LinearLayout平分布局如图所示 代码如下 有需要的可以直接复制粘贴到activity main xml 之后可以在布局上增加自己想要的控件
  • python 省略号 三个点“...”的含义

    最近在学习pytorch里对于resnet的实现 注意到里面有这段代码 def init self inplanes int planes int stride int 1 downsample Optional nn Module Non
  • 几张图片生成3D模型?距离真正的AI建模还有多远?

    时间溯回 早在2017年 美图秀秀就曾引入人工智能美化人像而被谷歌誉为 最佳娱乐App 智能技术奔腾发展 今年的AIGC技术可谓在各行各业大放异彩 从AI绘画 AI写作到AI配音 人工智能技术自动生成内容已经成为继UGC PGC之后的一种新
  • excel合并所有sheet

    Sub 合并当前工作簿下的所有工作表 Application ScreenUpdating False For j 1 To Sheets Count If Sheets j Name lt gt ActiveSheet Name Then
  • 软件逆向练习--Reverse

    如有错误或理解不到位的地方劳烦各位大佬指出 感谢 一 Reverse000 exe 1 使用OD打开Reverse000 exe 2 右键选择中文搜索引擎 gt 智能搜索 3 双击please input password 跟进去 4 此处
  • Android versions (Android 版本)

    Android versions Android 版本 All Android releases https developer android com about versions Android 1 0 G1 Android 1 5 C
  • vue怎么在一个页面里写两个表格_vue项目中将element-ui table表格写成组件

    表格中我们经常需要动态加载数据 如果有多个页面都需要用到表格 那我希望可以有个组件 只传数据过去显示 不用每个页面都去写这么一段内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 查看 16 编辑 17 18 19
  • 《百面机器学习》学习笔试之模型评估(第2章)

    01 评估指标的局限性 准确率 Accuracy 的局限性 A c c u r a c y
  • 服务器输入nvidia-smi报错:

    发现服务器好像有挖矿程序再跑 我重启了一下 结果重启后nvidia smi报错了 NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver Ma
  • 运维36讲第10课:基于 Python+Ansible+Django 搭建 CMDB 平台

    本课时我们主要讲解如何基于 Python Django Ansible 开发一套具备 Devops 理念的自动化任务执行和资产管理 CMDB 系统 工程简介 这个可以实现自动化任务执行和资产管理的系统取名为 Imoocc 它是基于 Pyth
  • element ui 对话框设置固定宽度

    宽度设置width属性 默认是百分比 如 width 30 表示宽度为 其父元素宽的 30 想给固定宽度 使用v bind指令 加上px单位即可 width 300px 注意引号
  • 如何查看公众号文章的排版格式字体大小

    Q1 如何查看公众号文章的排版格式 字体 大小 颜色 行间距 页边距等 注意 如果是长图形式 图片中的文字 无法使用这个方法 总共三步 1 电脑端打开微信文章 复制链接地址 点击下方红框 2 在浏览器中粘贴 跳转显示该文章 3 鼠标选中字体
  • 对傅里叶变换的一些思考

    1 时域中的周期对应傅里叶变换的离散 2 时域的非周期对应傅里叶变换后的连续 3 将一个非周期信号傅里叶变换后 得到频谱图 其中横坐标是频率 纵坐标是幅值密度 而不是幅值 量纲是幅值的单位 Hz 所以这个频谱图里面各个频率对应的波的幅值应该
  • 简单博弈论(Nim游戏)

    891 Nim游戏 题目 提交记录 讨论 题解 视频讲解 给定 n 堆石子 两位玩家轮流操作 每次操作可以从任意一堆石子中拿走任意数量的石子 可以拿完 但不能不拿 最后无法进行操作的人视为失败 问如果两人都采用最优策略 先手是否必胜 输入格