线性

线性查找&二分查找

霸气de小男生 提交于 2019-11-28 11:34:56
'''线性查找: 从头至尾依次匹配。时间复杂度为O(n)'''def linear_search(li, val): for index in range(len(li)): if val == li[index]: return index return None列表的index()方法使用的线性查找,因为列表是无序的'''二分查找:在排序的列表中查找某元素。时间复杂度为O(log2n)'''def binary_search(orderd_list, val): left = 0 right = len(orderd_list) - 1 while left <= right: mid = (left + right) // 2 if val == orderd_list[mid]: return mid elif val > orderd_list[mid]: # 要查找的值在mid右侧 left = mid + 1 else: # 要查找的值在mid左侧 right = mid - 1 return None 来源: https://www.cnblogs.com/staff/p/11406743.html

CodeForces - 1051D (线性DP)

与世无争的帅哥 提交于 2019-11-28 10:52:59
题目: https://codeforces.com/problemset/problem/1051/D 题意 :一个2行n列的矩形,上面有黑白块,然后问你怎么布置才能有k个连通块,问有多少种方案数 思路 :其实就是一个矩阵,我们一次放一列 四种状态 黑 | 白 | 白 | 黑 白  | 黑 | 白 | 黑 我们dp[n][m][k],第n列第m种状态k个连通块的方案数,现在我们算放每个状态时,计算一次增加了多少个连通块 因为数组太大了,所以我们用滚动数组 然后递推就行了 #include<bits/stdc++.h> #define maxn 2005 #define mod 998244353 using namespace std; typedef long long ll; ll dp[2][4][maxn]; ll n,k; int main(){ cin>>n>>k; dp[0][0][2]=1;// 0 1 dp[0][1][2]=1;// 1 0 dp[0][2][1]=1;// 1 1 dp[0][3][1]=1;// 0 0 for(int i=2;i<=n;i++){ for(int j=0;j<=k;j++){ dp[1][0][j]=dp[0][0][j]; dp[1][1][j]=dp[0][1][j]; dp[1][2][j]=((dp[0][0][j

线性基 学习笔记

心已入冬 提交于 2019-11-28 04:28:31
ps:做CF的时候碰到了一个线性基的概念,然后在网上学习了一下,发现相关的资料很少,所以打算来写一个我个人的理解。 线性代数中 有极大线性无关组和空间的基的概念。 线性基的性质与此类似。 首先来看一个问题: 给出N个数,要从中选出一个最大的子集,使得子集中的任意个元素异或值不为0. 这个和极大线性无关组有些类似。异或可以看出是模2域下的加法运算,如果把一个数转化为二进制,对应成一个由01构成的向量, 所有这些向量就构成了一个线性空间。 原问题就转化为求这个向量组的极大线性无关组,把这样一个极大线性无关组成为线性基。 可以用O(60*60*n)的高斯消元来解决。 但是还有更加快速的构造线性基的方法: 复杂度是O(60*n) 首先来证明一个性质: 取向量组中的两个向量a,b,把a,b中的某一个替换成a xor b, 替换前后向量组中的向量的线性组合得到的空间相同。 通俗的说就是 替换前后 能异或出来的值一样。 证明: 不妨把b替换成了c=a xor b. 对于一个值x,如果得到它 不需要用到b 那么替换没有影响,照样能得到x。 如果需要b b可以通过b=c xor a来得到, 因此替换后照样能组合出x。 也就是说 旧的向量组能组合出来的数 新的向量组也能组合出来。 反过来,对于新的向量组,如果把c替换成 c xor a 就得到了旧的向量组,根据上面的证明 新的向量组能组合出来的数

线性筛素数

五迷三道 提交于 2019-11-28 01:35:00
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 bool not_prime[10000003]; 7 int main() 8 { 9 int n , m , t; 10 scanf("%d%d" , &n , &m); 11 not_prime[0] = not_prime[1] = 1; 12 for(int i = 2; i <= n; i++) 13 { 14 if(not_prime[i]) 15 continue; 16 for(int j = i + i; j <= n; j += i) 17 not_prime[j] = 1; 18 } 19 for(int i = 1; i <= m; i++) 20 { 21 scanf("%d" , &t); 22 not_prime[t] ? printf("No\n") : printf("Yes\n"); 23 } 24 return 0; 25 } 线性筛素数 来源: https://www.cnblogs.com/leo-xy/p/11385984.html

线性逆元

一笑奈何 提交于 2019-11-28 01:32:09
1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 typedef long long ll; 5 ll inv[3000005]; 6 ll n , p; //p is prime 7 int main() 8 { 9 scanf("%lld%lld" , &n , &p); 10 printf("%lld\n" , inv[1] = 1); 11 for(int i = 2; i <= n; i++) 12 { 13 inv[i] = ( (ll)(p - p / i) * (inv[p % i]) ) % p; 14 printf("%lld\n" , inv[i]); 15 } 16 return 0; 17 } 来源: https://www.cnblogs.com/leo-xy/p/11385925.html

[数论] 线性求逆元

强颜欢笑 提交于 2019-11-28 01:03:29
线性求逆元 线性求从1到n的$mod \ p$ 的逆元 设$p=ki+r \ (r<i<p,i>1)$ ① 可以得到 $k=\lfloor \frac{p}{i} \rfloor$ ② $r=p \ mod \ i$ ③ $ki+r\equiv 0 (mod \ p)$ ④ 两边同乘$i^{-1}\cdot r^{-1}$得 $kr^{-1}\cdot i^{-1}\equiv 0 (mod \ p)$ 移项得$i^{-1}\equiv -kr^{-1} (mod \ p)$ ⑤ 将②③代入⑤ 得 $i^{-1}\equiv -\lfloor \frac{p}{i} \rfloor\cdot (p \ mod \ i)^{-1}(mod \ p)$ 由于$1^{-1}\equiv 1 (mod \ p)$ 所以1到n $mod \ p$逆元就可以线性递推出来了 1 inv[1]=1; 2 for(int i=2;i<=n;i++) 3 inv[i]=-(p/i)*inv[p%i]; View Code 来源: https://www.cnblogs.com/MMMinoz/p/11384877.html

知识总结20

被刻印的时光 ゝ 提交于 2019-11-28 00:03:14
英语: 背下100个单词,百词斩与配套资料,孰知其意,练习听力,并且做了1篇阅读,2篇翻译。 C语言: 复习包含结构的结构 复习链表 复习共用体 高数: 学习常系数非齐次线性微分方程: 掌握二阶常系数非齐次线性微分方程一般形式 掌握其方程的解法 掌握常系数非齐次线性微分方程结构与特解的形式 欧拉方程: 各项未知函数导数的阶数与乘数因子自变量的方次数相同的方程为欧拉方程 了解其3个特点 掌握其解法与步骤 学习常系数线性微分方程组 了解其定义 掌握其解法 通过例题进行对几种解法的灵活运用。 通过视频授课了解以上知识点以及练习。 线性代数: 复习向量组的秩 复习线性方程组的解的结构 复习向量的空间 来源: https://www.cnblogs.com/www-bokeyuan-com/p/11381671.html

机器学习——SVM

不打扰是莪最后的温柔 提交于 2019-11-27 22:03:05
文章目录 SVM介绍 SVM理论 线性可分性(linear separability) 损失函数(loss function) 经验风险(empirical risk)与结构风险(structural risk) 核方法 常见的核函数 核函数与松弛变量 问题描述 解答与分析 SVM算法步骤 问题 解答与分析 其他扩展问题 其他参考 SVM(Support Vector Machine, 支持向量机)是众多监督式学习方法中十分出色的一种,几乎所有的讲述经典机器学习方法的教材都会介绍。 SVM介绍 支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。 SVM使用铰链损失函数(hinge loss)计算经验风险(empirical risk)并在求解系统中加入了正则化项以优化结构风险(structural risk),是一个具有稀疏性和稳健性的分类器。SVM可以通过核方法(kernel method)进行非线性分类,是常见的核学习(kernel learning)方法之一

zrender的线性渐变

二次信任 提交于 2019-11-27 20:51:37
线性渐变 官方文档是这样写的 实际运用是酱紫的 在把颜色放背景中 小白一枚,路过大神,多多指教。欢迎留下宝贵意见 来源: https://www.cnblogs.com/snowbxb/p/11376158.html