![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
理论
bug_killer@
须知参差多态,乃是幸福的本源。
展开
-
2021-07-11(浙大可视化暑期网上学校)--可视化设计、编码、变换
大纲可视化设计好的可视化(准则):最少的墨水、最小的空间、传递最多的信息1、真实度:图形实体(眼见不一定为实)(1)谎言因子:在实际效果中表达的变化量 / 在真实数据中表达的变化量(2)内容的展示(3)展示数据的变化2、表达都:信息表达的充分性(1)数据墨水占比越高,可视化程度越大但是不是所有的数据墨水都是没用的,某些情况下可以提高数据可读性(2)感知加工包括三个步骤,需要减少三个步骤的耗时①减少感知原始可视化信号②减少感知过程(模式识别)③合理的可视化映原创 2021-07-11 12:10:51 · 537 阅读 · 1 评论 -
2021-07-10(浙大可视化暑期网上学校)可视化的感知与认知
大纲:我们在专注做某件事时,无法感知到某些事物的变化。可视化可以作为一种辅助工具标注容易忽视的事物我们感知时要集中精力,可视化可以加强认知,使我们放松。感知过程中的特征:1、恒常性–亮度恒常性、图形恒常性(频闪效应、飞现象)亮度恒常性–感知是相对判断而并非绝对判断。图形感知–感知不是基于绝对判断,而是判断相对差异小结:这节课主要讲授可视化中认知与感知的内容,首先通过几个小游戏告诉我们人们在观察事物时会集中精力,我们在观察一个事物的变化时可能会忽视其他变化的事物。但是我们原创 2021-07-10 10:29:51 · 398 阅读 · 1 评论 -
2021-07-09(浙大可视化暑期网上学校)
大纲:一、基础知识1、可视化目的:分析数据得到有用的信息2、可视化基本思路:(1).帮助我们思考(2).利用感知来减轻认知(3).作为增强工作记忆的外部辅助手段(4).提高我们的认知能力二、可视化现状(讲解可视化应用很广泛)微软的BI、Adobe Analytics(面向企业)、阿里云DataV数据可视化可视化是大数据分析的核心图形学-图形、渲染、复刻可视化-数据分析与理解可视化 need 数据 + 交互可视化和数据挖掘的目标一致关系密切,数据挖掘一般用自动的原创 2021-07-09 14:21:05 · 259 阅读 · 0 评论 -
康托展开 & 逆康托展开(计算一个序列的对应的值)
1、康拓展开:一个序列长度为n,是1~n的数字的全排列中的一种,求出这个序列对应的全排列中序列的编号就是康拓展开,即将一个全拍列的序列转化为一个数字编号。代码:int cantor(int a[],int n) //序列a的下标从0~n-1{ int ans = 0; for(int i=0;i<n;i++) { int x ...原创 2020-01-24 14:25:37 · 267 阅读 · 0 评论 -
C(n,m)预处理
void Init(){ c[0][0] = c[1][0] = c[1][1] = 1; for(int i=2;i<maxn;i++) { c[i][0] = 1; for(int j=1;j<=i;j++) c[i][j] = (c[i-1][j-1]+c[i-1][j])%mod; }}原创 2019-08-02 15:59:39 · 266 阅读 · 0 评论 -
树状数组求逆序数
模板#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;int tree[maxn],a[maxn],n;vector <int> vc;int getid(int x){ return lower_bound(vc.begin(),vc.end(),x)-vc.b...原创 2019-08-01 09:57:34 · 67 阅读 · 0 评论 -
hdu 6621(主席树模板)
hdu 6621思路:每次查询第k小,只有p在改变,所以我们可以枚举p的左右范围,因为题目中保证每个值都不同,所以省略离散化,直接建立主席树,二分寻找p的左右范围,就是最终的答案。#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+10;int a[maxn],n,m,cn...原创 2019-08-01 09:51:21 · 367 阅读 · 2 评论 -
数字华容道有解的条件
问题:有n*n的矩阵,分别填入1~n*m-1,和0,给出一个矩阵的局势,问是否可以将这个局势变为有序的最初矩阵。解法:(eg:图1的数字顺序 1 2 3 4 5 6 7 8 9 10 12 13 14 11 15)1、m为奇数时,逆序数为偶数,必然有解。2、列数为偶数,(逆序数)与(当前空格所在的行数和初始空格所在的行数之差)的和为偶数时必然有解。详解...原创 2019-08-01 09:39:34 · 5962 阅读 · 0 评论 -
快乘模板
模板:(使用范围:当乘法会越界时使用)LL fast_mul(LL a,LL b,LL c){ LL ans=0; a%=c; while(b) { if(b&1) ans=(a+ans)%c; a=(a+a)%c; b>>=1; } retur...原创 2019-07-29 20:58:11 · 140 阅读 · 0 评论 -
RMQ模板
void Init(){ for(int i=1;i<=n;i++) dp[i][0]=a[i]; for(int i=1;(1<<i)<=n;i++){ for(int j=1;j+(1<<i)<=n;j++){ dp[j][i] = max(dp[j][i-1],dp[j+(1...原创 2019-07-28 20:41:15 · 89 阅读 · 0 评论 -
POJ 3177(无向图缩点模板)
POJ 3177#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <cmath>#include <utility>using namesp...原创 2019-07-28 20:01:13 · 134 阅读 · 0 评论 -
线性基模板
一、基本概念1、线性基:在平面中有x向量,y向量两个方向的向量,这两个向量是线性无关组,就是可以用着两个向量组成其他任意向量。线性基就是类似于这个东西,将一组数的集合按照二进制分解为一些基底,然后用这些数字去组成其他任何的数字。2、线性基的性质:(1)线性基的任意一个数都可以由其他的数异或和得到;(2)线性基里的任意一些数字的异或和不为0;(3)线性基里的个数唯一,并且...原创 2019-07-23 10:58:29 · 279 阅读 · 0 评论 -
C(n,m)模板
模板:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int maxn = 1e5+10;typedef long long LL;con...原创 2019-07-15 17:01:47 · 97 阅读 · 0 评论 -
全排列打表模板
全排列详解模板:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 1e5+10;int a[maxn],n;void dfs(int b[],int k){...原创 2019-07-15 16:50:50 · 167 阅读 · 0 评论 -
矩阵快速幂+矩阵幂的前n项和模板
模板:相关题目#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const ll mod = 1e9+7;;int n;class Matr...原创 2019-07-13 21:48:00 · 176 阅读 · 0 评论 -
矩阵快速幂模板(POJ-3070)
模板:const int MOD = 10000;struct Node{ int a[2][2];};Node mul(Node x,Node y){ //矩阵乘法 Node res; for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ res.a[i][j] = 0; for(int k=0;k<2;k+...原创 2019-07-13 14:48:37 · 101 阅读 · 0 评论 -
离散化模板
模板:vector <int> vc;void lisan(){ sort(vc.begin(),vc.end());//排序 vc.erase(unique(vc.begin(),vc.end()),vc.end());//去重 sz = vc.size();}int getid(int x){ //返回这个值排序后的位置k,k在区间[1,sz] retur...原创 2019-07-13 11:03:47 · 116 阅读 · 0 评论 -
bzoj 1407(扩展欧几德里)
题目链接思路:枚举最少的山洞数量m,判断这些野人会不会相遇,即(ci + k*pi)%m==(cj+k*pj)%mk*(pj-pi) + t*m = ci-cj => a*x + b*y = c;求解同余方程,如果无解c%gcd(a,b)!=0,或者求出的x不在它们的最小寿命内。代码:#include <bits/stdc++.h>using ...原创 2019-08-06 16:48:39 · 175 阅读 · 0 评论 -
快速幂模板
int Pow(int a,int b,int mod){ int ans = 1; while(b){ if(b&1){ ans = a*ans%mod; } a = a*a%mod; b>>=1; } return ans;}原创 2019-06-08 11:02:29 · 101 阅读 · 0 评论 -
筛素数法
const int maxn = 1e5+10;int vis[maxn]={0},prim[maxn]={0};void Era(){ vis[1] = 1; prim[0] = 0; for(int i=2;i<maxn;i++){ if(vis[i]==0){ prim[++prim[0]] = i; } for(long long j=(long lon...原创 2019-06-08 10:29:49 · 183 阅读 · 0 评论 -
二叉树(堆)
1、定义:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。 2、分类:(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,...原创 2018-08-06 14:50:17 · 350 阅读 · 0 评论 -
图的遍历
一、Ford算法在i到j的路上找到中介节点k#include<bits/stdc++.h>using namespace std;const int INF=99999999;int a[101][101];int main(void){ int n,m; int i,j,k; int u,v,w; scanf("%d%d",&n,&m);...原创 2018-08-06 11:43:54 · 452 阅读 · 0 评论 -
图的遍历(深搜和广搜的思想)
一、深度优先搜索遍历图1、图的存储:二维数组,i,j表示点,a[i][j]表示边长。//图的dfs遍历#include<bits/stdc++.h>using namespace std;const int INF=0x3ffffff;int n,m,sum;int a[101][101],vis[101];void dfs(int st){ int ...原创 2018-08-05 13:49:42 · 1612 阅读 · 0 评论 -
搜索篇
一、深度优先搜索思想:dfs//全排列#include<bits/stdc++.h>using namespace std;int n,a[10],vis[10]; //n要设置为全局变量 void dfs(int step){ int i; if(step==n+1) //满足条件,返回 { for(i=1;i<n;i++) printf...原创 2018-08-05 11:16:47 · 110 阅读 · 0 评论 -
链表篇
链表的构建及输出(带头节点)#include<bits/stdc++.h>using namespace std;struct Node{ int data; struct Node* next;}; int main(void){ int i,tp,n; struct Node *Head,*p,*t,*q; Head=NULL; scanf("%d",&...原创 2018-08-02 20:54:26 · 125 阅读 · 0 评论 -
排序篇
一、桶排序桶排序:就是将相同元素放入一个数组,之后输出 #include<bits/stdc++.h>using namespace std;int main(void){ int a[10]={0},t,i; for(i=0;i<5;i++) { scanf("%d",&t); a[t]++; } for(i=0;i<10;i...原创 2018-08-02 20:09:20 · 123 阅读 · 0 评论 -
UVA - 1589(模拟题)
UVA - 1589题意:给出象棋棋盘是10*9的矩阵,每个棋子在交点上,模拟红色棋子是否对黑色棋子将军了。先输入n,表示将要输入红色棋子的数量,再输入x,y分别比表示黑色将棋子的横纵坐标。然后n行,ch表示红色棋子的种类,x,y表示这个棋子的坐标。如果将军:就是黑色棋子的将无论怎么移动都会被红色棋子吃掉。输入保证棋子的当前状态是合法的且有黑色棋子恰好能够被红色棋子吃...原创 2019-03-13 14:50:51 · 254 阅读 · 0 评论 -
UVA 512(操作模拟)
UVA-512题意:输入n,m表示表格的行数和列数,然后输入len个操作数。操作分为5种:(1)DR,表示删除一整行(2)DC,删除一整列(3)IR,插入一整行(4)IC,插入一整列(5)EX,交换(x1,y1)与点(x2,y2)操作1-4都是先输入cnt表示所需要删除的行数或列数cnt,然后再输入cnt个数,表示要删除的编号。然后,输入整数k,每...原创 2019-03-06 14:06:03 · 373 阅读 · 0 评论 -
UVA 213(字符输入+编码)
题目链接题意:给出一段字符串,给字符编码,0,00,01,10, 000,001,010,011,100,101,110,0000,……编码的长度不能超过8.现在输入一段字符串,然后给出一段编码串,求出字符串的内容。编码串的格式如下:001(前三位是字符串的长度),然后是若干个字符串,每个字符串以1111全1结束,不算结果;一段字符串以000结尾,表示输入结束。注...原创 2019-03-06 10:17:22 · 222 阅读 · 0 评论 -
UVA - 11809(打表)
题意:计算机采用阶码-尾数方法存储浮点数,如果阶码(E)有6位,尾数(M)有8位,最大可以表示的浮点数是0.111 111 111(2)* 2^111 111(2),小数点后第一位必须为,保证m在0.5-1的范围内,所以一共有9位小数。现在给出10进制的数字AeB,表示A*10^B,输出对应的M,E。思路:一开始不知道怎么做,参考了网上的文章,发现可以打表...原创 2019-03-03 22:13:39 · 226 阅读 · 0 评论 -
JAVA知识复习
1、JAVA中一个变量在使用之前必须被声明和初始化;2、命名常量标识符final3、int num = 10 * i++;等价于int num = 10*i; i = i+1;(Note:i++语句的优先级大于a+b语句的优先级)4、ceil向上取整,eg:ceil(2.1) = 3.0;floor向下取整,如floor(2.1) = 2.0;5、String类是引用类型,使用引用类型声明的变量为引用变量;eg: String message = “Hello”;message是一个引用变原创 2021-04-06 16:04:02 · 298 阅读 · 1 评论 -
B树与散列
M阶的B树满足的特征:(1)树的根是一片树叶,或者是儿子数在2到M之间,即[2,M)(2)除根外,所有非树叶节点的儿子数在⌈M/2⌉ \lceil {M/2} \rceil ⌈M/2⌉到M之间,即[⌈M/2⌉ \lceil {M/2} \rceil ⌈M/2⌉,M)。(3)所有树叶都在相同的深度。(4)一个节点最多容纳M-1个数。散列1、冲突:当两个关键字到同一个值时称为冲突。2、解决冲突:分离链接法和开放定址法3、填装因子:散列表中的元素个数与散列表的大小之比。4、分离链接法:将散列到原创 2021-02-19 12:04:44 · 83 阅读 · 0 评论 -
数据结构知识总结(一)--算法分析
递归:当一个函数用它自己来定义的时候,这个函数就是递归。int f(int x){ if(x == 1) return 1; //基准情况 return x*f(x-1); //调用递归函数}递归的四条基本法则:1、基准情况:确定某种情况,无需递就能解出。2、不断递推:每一次递归调用都必须使求解情况朝着基准情况推进。3、设计法则:假设所有递归调用都能运行。4、合成效益法则:求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作。算法:求解一个问题所要遵循的、清楚指定的简单原创 2021-02-18 08:46:44 · 149 阅读 · 0 评论 -
kmp算法(hdu-2087)
剪花布条Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 29986 Accepted Submission(s): 18414Problem Description一块花布条,里面有些图案,另有一块直接可用的小饰条,里面...原创 2018-09-22 12:13:12 · 186 阅读 · 0 评论 -
栈与队列
1、栈栈底:表头端;栈顶:表尾端;后进先出主要操作:插入、删除栈的结构与基本操作(1)顺序存储与操作#define MAXSIZE 100//栈的结构 typedef struct{ int *Base; int *top; int stacksize;}Stack;//初始化Stack init_S(Stack S){ S.Base = new int[MAXSIZE];...原创 2018-07-14 14:59:58 · 105 阅读 · 0 评论 -
二分图的相关概念(一)
1、二分图:设G=(V,E)是一个图,图的顶点集合可以分为两个集合V1,V2,E中的每个边都有一个点要么属于点集V1,另一个属于点集V2。2、二分图的最大匹配:(1)匹配:一条边就是一个匹配,就是两个点通过一条边来匹配,并且匹配的边的集合中任意两条边都不相连。(2)最大匹配:一个图能够包含的包含边最多的边的集合。(3)二分图的最大匹配:二分图中能够包含的最大匹配。...原创 2019-06-15 21:14:14 · 1858 阅读 · 0 评论 -
背包问题三
一、求最优方案总数//二维数组的最优方案 #include<bits/stdc++.h>int f[105][105],g[105][105];int w[105],v[105];int main(void){ int n,i,m,j; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) scanf("%d%d"...原创 2018-08-03 12:52:17 · 107 阅读 · 0 评论 -
最小生成树(kruskal+Prim算法)
一、kruskal算法1、原理:在剩下的所有未选取的边中,找最小边,如果和已选取的边构成回路,则放弃,选取次小边(加边法)。 #include<bits/stdc++.h>using namespace std;struct Edge{ int u,v,w;};struct Edge e[50];int a[50];int n,m;void qui...原创 2018-08-07 20:38:36 · 223 阅读 · 0 评论 -
并查集(hdu-1232)
1、定义:并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。2、实现:#include<bits/stdc++.h>using namespace std;int a[101],n,m;void Init(){ for(int i=1;i&...原创 2018-08-07 11:16:41 · 200 阅读 · 0 评论 -
平衡二叉树
1、定义平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。(平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 ...原创 2018-08-11 11:37:05 · 157 阅读 · 0 评论