牛顿不等式的证明
参考:
牛顿不等式-维基百科;
== 证明 ==
一个简洁的证明是利用[[数学分析]]中的[[罗尔定理]]。设有’‘n’’ 个实数: $a_1 \le a_2 \le \cdots \le a_n$ 。构造以 $-a_1, -a_2, \cdots, -a_n$ 为[[根 (数学)|根]]的多项式:
\[P = \prod_{k=1}^n (x+a_k)\]
这个多项式可以写成:
\[P = \prod_{k=1}^n (x+a_k) = \sum_{i=0}^n \sigma_i x^{n-i}= x^n + \sum_{i=1}^{n} \binom{n}{i} S_i x^{n-i}\]
首先证明:存在另一组’‘n’‘-1 个实数: $b_1, b_2, \cdot...
力扣螺旋矩阵系列总结(c++)
写在前面
螺旋矩阵系列, 严格来说不算双指针, 但是其中蕴含的思想很像双指针. (应该叫四指针)
54. 螺旋矩阵 - 力扣(LeetCode);(需要四个指针分别在需要转弯的时候移动)
59. 螺旋矩阵 II - 力扣(LeetCode);(跟上面的题异曲同工)
885. 螺旋矩阵 III - 力扣(LeetCode);(不需要考虑边界直接模拟, 注意这个题是从内往外转, 需要定义方向数组)
2326. 螺旋矩阵 IV - 力扣(LeetCode);(同基本的螺旋矩阵, 加上链表向后遍历的基本操作即可)
螺旋矩阵I
54. 螺旋矩阵 - 力扣(LeetCode);
只能说, 用Python不讲武德:
def spiralOrder(sel...
C++类内初始化vector的一个小坑与分析解决
问题
先来看这样一份代码:
vector<vector<int>> v(10, vector<int>(10));
没有任何问题, 初始化一个10*10的全零二维数组, 但是, 如果在类内:
class P {
private:
vector<vector<int>> v(10, vector<int>());
public:
P() {}
void print() {
for (auto i : v) {
for (auto j : i) cout << j << " ";
cout <...
牛客c++acm模式输入输出11道题分析与总结
写在前面
感觉好久没写博客了, 最近看的书多, 但是真正沉淀下来的东西却很少…
这次总结一下C++刷题中常用的一些IO操作, 也就是ACM模式中的一些基本操作.
看到知识星球里面推荐了牛客的一个比赛, 其中有11道题都是关于C++刷算法题完整程序的输入输出部分, 值得新手学习训练一下, 下面是我的解答, 均通过测试, 可以放心食用.
地址:
牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com);
1: 开胃菜
链接:https://ac.nowcoder.com/acm/contest/5657/A
来源:牛客网
输入包括两个正整数a,b(1 <= a, b <=...
Ubuntu22.04下编译安装lammps+voronoi的完整方案
写在前面
上次在Windows+cygwin下没有成功安装LAMMPS, 所以这次来试试通过Ubuntu双系统安装LAMMPS以及一些额外的包的安装的方法.
要说安装, 其实是安装成功了的, 但是并不是并行计算版本, 而且最新版也不能运行.
参考:
8.6.4. Using LAMMPS on Windows 10 with WSL — LAMMPS documentation
安装必须的包
sudo apt install -y cmake build-essential ccache gfortran openmpi-bin libopenmpi-dev \
libfftw3-dev libjp...
利用windows+cygwin安装lammps+voro的完整安装方法
写在前面
最近有朋友问我如何安装一个叫做voro++的工科分析软件, 由于这个软件年代过于久远(2013), 并且是C++写的, 在win下需要编译安装, 就折腾了一下, 后来发现在Windows下直接安装的LAMMPS不能编译voro, 那么还得先手动编译安装一个LAMMPS, 折腾了好久, 终于完成了..
主要困难的地方还是在cygwin的包管理上, 由于没办法直接通过包管理器来安装(事实上有一个包管理器, 但是还需要一些特殊工具才能安装, 实在是麻烦), 那就只能每次需要什么包, 就从setup程序中选中那些包来安装了…
其次就是编译工具链方面, cmake/Make/gcc/g++/这些工具都是必备的, 甚至检测依赖时候显示FFmpeg和clang-format也是需要的...
Linux进程的创建结束类系统调用总结
写在前面
总结一下Linux系统的进程创建/终止/等待等系统调用, 参考:
Linux/Unix系统编程手册.
下面主要给出例子, 关于函数原型可以参考书中或者man 2 syscall(例如man 2 fork).
测试环境: Ubuntu 20.04 x86_64
gcc-9
进程创建: fork()
用于创建新的进程, 创建出来的新进程称为子进程, 拥有和父进程一样的代码段/数据段/栈段/堆段.
所以创建新进程的资源消耗较大, 后续采用多线程方式可以解决这个问题.
由于这个函数的设计比较奇怪, 有两个返回值, 在父进程中返回子进程的进程ID, 在子进程中返回0, 错误返回-1, 所以可以用下面的语句制定创建子进程之后的进一步操作:
pi...
Linux线程的创建结束类系统调用总结
写在前面
总结一下Linux系统的线程创建/终止/等待等系统调用, 参考:
Linux/Unix系统编程手册.
下面主要给出例子, 关于函数原型可以参考书中或者man 7 pthreads.
测试环境: Ubuntu 20.04 x86_64
gcc-9
为什么需要线程?
进程的限制
多进程往往存在如下限制:
进程间资源难以共享. 因为除去只读代码段, 父子进程并不共享内存, 所以必须采用进程间通信(IPC)的方式交换进程间信息.
调用fork()创建进程的代价很高. 虽然采用写时复制技术(Copy-on-write), 还是免不了造成资源的浪费.
线程的优势
线程之间可以方便/快速地共享信息. 只需将数据复制到共享...
共计 465 篇文章,59 页。
您是Zorch的第 个小伙伴
Hits