begin

PA=LU

雨燕双飞 提交于 2020-01-30 22:49:39
P A = L U PA=LU P A = L U 对矩阵 A A A 做 L U LU L U 分解(考虑行交换) A = [ a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ] A = \begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \\ a_{41} & a_{42} & a_{43} & a_{44} \end{bmatrix} A = ⎣ ⎢ ⎢ ⎡ ​ a 1 1 ​ a 2 1 ​ a 3 1 ​ a 4 1 ​ ​ a 1 2 ​ a 2 2 ​ a 3 2 ​ a 4 2 ​ ​ a 1 3 ​ a 2 3 ​ a 3 3 ​ a 4 3 ​ ​ a 1 4 ​ a 2 4 ​ a 3 4 ​ a 4 4 ​ ​ ⎦ ⎥ ⎥ ⎤ ​ 第一步,将矩阵 A A A 的第一列元素 a 11 , a 21 , a 31 , a 41 a_{11},a_{21},a_{31},a_{41} a 1 1 ​ , a 2 1 ​ , a 3 1 ​ , a 4 1 ​

sort的使用

我只是一个虾纸丫 提交于 2020-01-30 18:21:30
sort主要是用来排序的,可以用自定义的函数进行比较,也可以用系统的4中函数进行比较,即less(),greater(),less_equal(),greater_equal().但是我试了一下,发现dev和codeblocks都不支持这四种函数,所以放弃了,还是自定义比较靠谱,下面是几种排序方法,仅供参考 代码: #include <bits/stdc++.h> using namespace std; bool my_less(int i,int j){ return i<j; //自定义从小到大排序 } bool my_greater(int i,int j){ return i>j; //自定义从大到小排序 } int main() { int b[8] = {3,7,2,5,6,8,5,4}; vector<int>a(b,b+8); sort(a.begin(),a.begin()+4); sort(a.begin(),a.end()); sort(a.begin(),a.end(),less<int>()); sort(a.begin(),a.end(),my_less); sort(a.begin(),a.end(),greater<int>()); sort(a.begin(),a.end(),my_greater); for(int i = 0;i < a

STM32H743I-EVAL2_WWDG

回眸只為那壹抹淺笑 提交于 2020-01-30 08:24:19
前言 在看STM32H743I-EVAL2官方板子的demo, 看完了WWDG demo. WWDG讲的是如何使用窗口看门狗(初始化狗,喂狗),并模拟了一个HardFault错误,使喂狗代码不可到达,使硬件狗重启MCU. 窗口狗的初始化window和counter有上下限(0x40~0x7f), 如果初始化狗参数不在这个范围内,会立即引起硬件狗复位。 ST官方给出了一个公式,可以算出不同初始化条件下,需要多少延时ms数能落在狗的喂狗窗口内。 试验 用CubeMx重建了一个工程,来重新实现WWDG. 重建工程的好处,如果对知识点没有理解清楚,重建demo后,会出现一些不科学的bug, 这时,就可以温习官方demo, 找出重建工程不对的地方,反复修正,直到重建的demo正常跑起来。 重建demo调试时,会发现一些官方原版demo上没说的东西。 e.g. 官方板子上留了JTAG/SWD接口,但是不好使。也没在官方文档上说如何设置(好像看到说要改焊桥, 这就算了)。所以只能使用板载的STLINK3 CubeMx配置 CubeMx默认始终源是使用HSI的,其他试验是可以的。但是看门狗试验,必须要使用HSE. 要不算出的delay值太大了。因为在喂狗之前,需要模拟干活的过程,用HAL_Delay(delay), 还没跑完,就会引起硬件狗复位。 HAL_Delay()参数是毫秒值。 这时

pat乙1024 科学计数法

泄露秘密 提交于 2020-01-30 08:06:37
# include <iostream> # include <cstring> using namespace std ; bool isnumber ( char c ) //判断是否为数字 { if ( c >= '0' && c <= '9' ) return true ; else return false ; } int main ( ) { string line ; getline ( cin , line ) ; int flag = 1 , flag1 , flag2 , e = 0 , n , i = 0 , now ; int len = line . length ( ) ; if ( line [ 0 ] == '+' ) flag1 = 1 ; //第一位为底数符号 else flag1 = 0 ; line . erase ( line . begin ( ) ) ; while ( i < len ) //处理字符串 { if ( flag && isnumber ( line [ i ] ) ) //保留数字 { i ++ ; } else if ( line [ i ] == '.' ) //去掉小数点 { line . erase ( line . begin ( ) + i ) ; } else if ( line [ i ] == 'E'

dtoi4375「BJOI2019」删数

假如想象 提交于 2020-01-30 00:18:15
题意: 对于任意一个数列,如果能在有限次进行下列删数操作后将其删为空数列,则称这个数列可以删空。一次删数操作定义如下: 记当前数列长度为 k ,则删掉数列中所有等于 k 的数。 现有一个长度为 n 的数列 a,有 m 次修改操作,第 i 次修改后你要回答:经过 i 次修改后的数列 a,至少还需要修改几个数才可删空? 每次修改操作为单点修改或数列整体加一或数列整体减一。 题解: 如果一个我要删去大小为a的数,那么序列长度会变成a-h[a](h[a]为数值a出线的次数)。那么我们意会一下这个情况,我们可以想象成有h[a]个箱子堆在了a上面,然后向左倾倒,一个一个地落在位置上。当然,大于序列长度的位置的箱子不能考虑进来。 那么答案是什么?答案就是没有箱子的位置数量。因为我可以把堆了多个箱子的位置上的箱子移到没有箱子的地方,移动次数也就是答案。 那么如果只有单点修改的话,我们用一个线段树维护一下就好了。 然而有数列整体加减1怎么办呢。没有关系,我们只需要当成数字没变,询问的区间位移了就可以了。当然,后加入的数字要跟着位移。 于是我们又可以使用线段树维护了! #include<cstdio> #include<algorithm> #include<cstdlib> using namespace std; const int INF=300000; int n,m,a[300002],h

47. Permutations II

社会主义新天地 提交于 2020-01-29 20:57:54
Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example, [1,1,2] have the following unique permutations: [ [1,1,2], [1,2,1], [2,1,1] ] 来源: https://leetcode.com/problems/permutations-ii/ 分析 因为可能出现重复的元素 1. 对数组进行排序,ascending的顺序 2. 对begin位置的元素交换的时候,保证交换的一定是不同的元素即可 使用 引用nums并且回溯之前再次swap的方法不能AC,很奇怪?不能AC的代码如下: 测试[1,1,2,2]数据,代码是ok的,但是测试[0,0,1,1,2,2]代码,虽然值相同,但是下面的代码并不是都能按照从小到大的顺序生成全排列。 下面的代码答案最后几个是:[..[2,2,1,0,0,1],[2,2,0,1,1,0],[2,2,0,1,0,1],[2,2,0,0,1,1]] 但是标准答案是: [..[2,2,0,1,1,0],[2,2,1,0,0,1],[2,2,1,0,1,0],[2,2,1,1,0,0]] 1 2 3 4 5 6 7 8 9 10

STM32H743I-EVAL2_IWDG

狂风中的少年 提交于 2020-01-29 20:06:23
前言 看完了STM32H743I-EVAL2的IWDG demo. 这个demo中演示了IWDG的初始化和喂狗。按下外部中断来改变喂狗延时,因为喂狗时间不在喂狗窗口内,MCU被硬件狗复位了。 发现, IWDG也是带喂狗窗口时间的,不能乱喂狗了。 在IWDG初始化时,只有256分频时(IWDG_PRESCALER_256), 对应的Window, Reload 延时值才接近ms数. 因为喂狗必须在窗口内,所以必须在一个单独的任务内,精确的喂狗。 试验 CubeMx配置 CubeMx配置没有特别的,只简单记录一下。 在RCC中,指定晶振为HSE, LSE. 在时钟配置中,选PLL源为HSE. 在CPU频率中填入400MHZ, 回车,让CubeMx自己去算其他时钟。 在IWDG1中激活狗设置,指定分频为256,窗口值为4000, reload值为4090(最大值为4095, 不要选边界值) GPIO中选PC13为外部中断, PF10为LED. 将外部中断函数选上。 用CubeMx重建工程的预览 /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main

实验四主存空间的分配和回收

落爺英雄遲暮 提交于 2020-01-29 09:08:10
实验四 主存空间的分配和回收 1. 目的和要求 1.1. 实验目的 用高级语言完成一个主存空间的分配和回收程序,以加深对动态分区分配方式及其算法的理解。 1.2. 实验要求 采用连续分配方式之动态分区分配存储管理,使用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法4种算法完成设计。 (1)**设计一个作业申请队列以及作业完成后的释放顺序,实现主存的分配和回收。采用分区说明表进行。 (2)或在程序运行过程,由用户指定申请与释放。 (3)设计一个空闲区说明表,以保存某时刻主存空间占用情况。 把空闲区说明表的变化情况以及各作业的申请、释放情况显示。 2. 实验内容 根据指定的实验课题,完成设计、编码和调试工作,完成 实验报告 。 3. 实验环境 可以选用Visual C++作为开发环境。也可以选用Windows下的VB,CB或其他可视化环境,利用各种控件较为方便。自主选择实验环境。 4. 参考数据结构: #include<stdio.h> #include<conio.h> #include<string.h> #define MAX 24 struct partition{ char pn[10]; int begin; int size; int end; //////// char status; ////////// }; typedef struct

C / C++ 随机数

我的梦境 提交于 2020-01-29 01:11:42
C 语言 整数 #include < stdlib.h > 通用公式:rand()%n+a; //a为起始值,n为整数范围 (rand()%(b-a))+a+1; //获得(a,b)的随机数 (rand()%(b-a))+a; //获得[a,b)的随机数 (rand()%(b-a+1))+a; //获得[a,b]的随机数 浮点数 (double)rand()/(RAND_MAX +0.0); // 获得[0,1]之间的浮点数 (double)rand()/(RAND_MAX +1.0); // 获得[0,1)之间的浮点数 rand()+(double)rand()/RAND_MAX; //获得随机小数 C++ # include <random> std : : vector < int > s_random_color_r ( 255 ) , s_random_color_g ( 255 ) , s_random_color_b ( 255 ) ; std : : iota ( s_random_color_r . begin ( ) , s_random_color_r . end ( ) , 1 ) ; std : : iota ( s_random_color_g . begin ( ) , s_random_color_g . end ( ) , 1 ) ; std :

dtoi1927 [ONTAK2010]Peaks加强版

谁说我不能喝 提交于 2020-01-28 23:53:01
题意: 给一个n个点的图,每个点有权值,每条边有权值。q次询问,每次询问从a出发不经过边权大于x的边能够到达的所有点中,点权第k大的值。 n<=100000,q<=500000 题解: 点权第k大的值,容易想到可持久化线段树,问题就在于如何把要查询的点转化为一段连续的区间。 考虑建立Kruskal重构树。这种树有一个性质,经过两个点的路径的边权最大值就是在重构树上的lca的点权。 因此可以倍增a的父亲到达最后一个点权小于等于x的节点,然后所有能到达的点就是其子树。 那么就在dfs序上建立可持久化线段树,每次查询第k大即可。 #include<cstdio> #include<vector> #include<algorithm> #include<cstdlib> using namespace std; const int INF=1e9; int n,m,q,fa[22][200002],f[200002],rt[200002],ct,cnt,dfn[200002],dfq[200002],df,zjds[200002],ans; vector<int>y[200002]; typedef struct{ int u,v,w; }Q; bool cmp(Q aa,Q bb){ return (aa.w<bb.w); } typedef struct{ bool u;int a;