容斥原理基础-编程思维

目录容斥原理的引入从集合的角度考虑推广例子不被2、3、5整除的数错排问题求不定方程的解Devu和鲜花 容斥原理的引入 从一个小学奥数问题引入: 一个班级有50人 喜欢语文的人有20人 喜欢数学的人有30人 同时喜欢语文数学的人有10人。 问题: 两门都不喜欢的有多少人 至少喜欢一个的有多少人 至少喜欢一门 20+30-10=40 都不喜欢 50-40=10 再将上面的课程门数进一步扩

c++生成随机数-编程思维

产生随机数的叫随机数生发器 生成随机数 const unsigned zseed=time(0); void solve() { //随机数生发器 mt19937_64 m{zseed}; //种子 rep(i,1,5) cout<<m()<<endl; return; } 重排序列 const unsigned zseed=time(0); m

使用分形思想,通过图灵完备的机器赛跑关卡,并获得小机快跑成就-编程思维

本文作者:Wyu-Cnk 今年我们定制了六款红包封面,欢迎领取 使用微信扫码领取 前言 最近在玩 图灵完备(Turing Complete) 一路过关斩将, 来到 机器赛跑(Robot Racing) 这一关的时候, 一看地图 对于选修过分形几何的我来说, 这不就是熟悉的希尔伯特曲线嘛! 老朋友了! 于是我复活已经死去的和分形几何有关的记忆, 用分形的思想初步实现了对应的汇编代码并通过了

string-编程思维

目录stringsize/lengtherasesubstrpush_backpop_backclearfinddata\c_str string size/length 返回string中Char T元素个数 size_type size() const noexcept; size_type length() const noexcept; erase 用于删除指定位置的数据 ite

lambda表达式(匿名函数)-编程思维

C++11中引入了lambda表达式,定义匿名的内联函数。 我们可以直接原地定义函数而不用再跑到外面去定义函数跳来跳去。 同时在stl的排序上也有作用。 [capture] (parameters) mutable ->return-type {statement} 下面逐一介绍各个参数的含义. [capture] : 捕获:作用是让匿名函数能够访问或者修改函数外部的变量 有两种一种是

avx512加速矩阵乘法-编程思维

最近打PKU的HPCGAME用的代码,这里只用上了20个zmm寄存器,改变block的大小应该还能优化一下速度。 代码只考虑了方阵,其他非2^n次方阵要自己改代码。具体原理很简单,看看代码就差不多知道。 const int BLOCK_SIZE = 1024; const int BLOCK_SIZE2 = 256; inline static void block_avx512_32x4

p1830 轰炸iii-编程思维

轰炸III 题目背景 一个大小为 \(n\times m\) 的城市遭到了 \(x\) 次轰炸,每次都炸了一个每条边都与边界平行的矩形。 题目描述 在轰炸后,有 \(y\) 个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮。 输入格式 第一行共四个整数,分别为 \(n,m,x,y\)。 接下来 \(x\) 行,每行四个整数 \(x_1,y_1,x_2,y_2\)

p2006 赵神牛的游戏-编程思维

赵神牛的游戏 题目描述 在 DNF 中,赵神牛有一个缔造者,他一共有 \(k\) 点法力值,一共有 \(m\) 个技能,每个技能耗费的法力值为 \(a_i\),可以造成的伤害为 \(b_i\),而 boss 的体力值为 \(n\),请你求出它放哪个技能,才可以打死 boss。 当然,赵神牛技术很菜,他一局只放一个技能,不过每个技能都可以放无数次。 输入格式 第一行有三个整数,分别表示 \(k,m

p3717 [ahoi2017初中组] cover-编程思维

[AHOI2017初中组] cover 题目背景 以下为不影响题意的简化版题目。 题目描述 一个 \(n\times n\) 的网格图(标号由 \(1\) 开始)上有 \(m\) 个探测器,每个探测器有个探测半径 \(r\) ,问这 \(n\times n\) 个点中有多少个点能被探测到。 输入格式 第一行 \(3\) 个整数 \(n,m,r\)。 接下来 \(m\) 行,每行两个整数 \(x,

15道使用频率极高的基础算法题-编程思维

转自:http://blogread.cn/it/article/6882?f=wb 1、合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素 合并排序一般的思路都是创建一个更大数组C,刚好容纳两个数组的元素,先是一个while循环比较,将其中一个数组A比较完成,将另一个数组B中所有的小于前一个数组A的数及A中所有的数按顺序存入C中,再将A中剩下的数存入C中,但这里

前缀集合相等-编程思维

题目描述 给定两个序列A=(a_1,a_2,...,a_N)和B=(b_1,b_2,...,b_n)。 对于i=1,2,...,Q,回答下面的问题: 如果序列A的前x_i个元素A_1,A_2,...,A_{x_i}构成的集合和序列B的前y_i个元素B_1,B_2,...,B_{y_i}构成的集合相等,输出Yes,否则输出No。 题目分析和解题思路 对于A的任一前缀集合,B要么没有前缀集合与之相等

【赛码网】求数列的和-编程思维

【赛码网】求数列的和 输入 输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。 输出 对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。 样例输入 81 4 2 2 样例输出 94.73 3.41 import math while 1: x = raw_input() x = lis

【赛码网】简单计算-编程思维

【赛码网】简单计算 题目描述 小赛所在的小组主要负责WEB应用的开发工作,这次他所在的小组正在开发一个WEB版的财务软件。为方便用户使用,他们打算为用户提供一个简单计算功能,用户输入数学算式,就可以得到计算结果。其中涉及的计算包括:”+”、”-”、””、”/”、”^”、”(”、”)”,分别表示加减乘除和指数,其中括号用于调整计算的顺序。合法的表达式如下: x+y+z x+(y+z) x(y

【赛码网】翻转数组-编程思维

【赛码网】翻转数组 题目描述 给定一个长度为n的整数数组a,元素均不相同,问数组是否存在这样一个片段,只将该片段翻转就可以使整个数组升序排列。其中数组片段[l,r]表示序列a[l], a[l+1], ..., a[r]。原始数组为 a[1], a[2], ..., a[l-2], a[l-1], a[l], a[l+1], ..., a[r-1], a[r], a[r+1], a[r+2], .

python数据结构之直接插入排序-编程思维

python数据结构之直接插入排序 #-*-encoding:utf-8-*- ''' 直接插入排序: 从序列的第二个元素开始,依次与前一个元素比较,如果该元素比前一个元素大, 那么交换这两个元素。该算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方法。 ''' def InsertSort(L): for i in range(1,len(L)): ke