max函数

线段树

笑着哭i 提交于 2020-02-07 22:40:48
线段树模板 struct SegmentTree { int l, r; int dat; } t[SIZE * 4]; // struct数组存储线段树 void build(int p, int l, int r) { t[p].l = l, t[p].r = r; // 节点p代表区间[l,r] if (l == r) { t[p].dat = a[l]; return; } // 叶节点 int mid = (l + r) / 2; // 折半 build(p*2, l, mid); // 左子节点[l,mid],编号p*2 build(p*2+1, mid+1, r); // 右子节点[mid+1,r],编号p*2+1 t[p].dat = max(t[p*2].dat, t[p*2+1].dat); // 从下往上传递信息 } build(1, 1, n); // 调用入口 void change(int p, int x, int v) { if (t[p].l == t[p].r) { t[p].dat = v; return; } // 找到叶节点 int mid = (t[p].l + t[p].r) / 2; if (x <= mid) change(p*2, x, v); // x属于左半区间 else change(p*2+1, x, v); //

SQL中不通过max函数求最大值

拈花ヽ惹草 提交于 2020-02-04 20:03:14
今天看了下《数据库系统概念》中的关系模型,里面一节的关系运算让我想到了SQL语句中不用max函数 便可以求得某列的最大值。现假设有表如下所示: 1 create table MY_MAX 2 ( 3 id int , 4 scores int 5 ) 6 insert into MY_MAX values ( 1 , 1 ); 7 insert into MY_MAX values ( 2 , 2 ); 8 insert into MY_MAX values ( 3 , 3 ); 9 insert into MY_MAX values ( 4 , 4 ); 10 insert into MY_MAX values ( 5 , 5 ); 我们准备在列scores上求最大值。 首先求出所有的非最大值,然后利用集合的差运算即可。 计算所有的非最大值,要利用表自身的笛卡尔积. SQL语句如下: 1 select scores from MY_MAX where scores not in 2 ( select A.scores from MY_MAX A,MY_MAX B where A.scores < B.scores) 来源: https://www.cnblogs.com/hdchild/archive/2009/12/27/1633407.html

第六周作业

回眸只為那壹抹淺笑 提交于 2020-01-27 07:45:31
前言 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪儿 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homework/2891 在这个课程的目标 指针 这个作业在哪些方面帮助我 如何定义指针变量,怎样使用指针变量 参考文献 教材 C语言程序设计 6-1 求两数平方根之和 (10 分) 函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: include<stdio.h> include <math.h> double fun (double a, double b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } /* 请在这里填写答案 */ 输入样例: 12 20 输出样例: y=7.94 1.编程代码 double fun (double *a, double

第六周编程总结

醉酒当歌 提交于 2020-01-24 09:56:45
函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: include<stdio.h> include <math.h> double fun (double a, double b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } /* 请在这里填写答案 */ 输入样例: 12 20 输出样例: y=7.94 1.实验代码 double fun(double a,double b) { double c,d,result; c=sqrt( a); d=sqrt( b); result=c+d; return result; } 2.设计思路 3.运行结果 读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。 输入格式: 输入有两行: 第一行是n值; 第二行是n个数。 输出格式: 输出最大值和最小值。 输入样例: 在这里给出一组输入。例如:

习题:V(线段树)

会有一股神秘感。 提交于 2020-01-23 11:09:03
题目 传送门 思路 涉及到区间操作并且是静态的区间,用线段树是再合适不过的 如果直接维护每个点的权值不麻烦 但是要维护历史最大值就十分麻烦 所以我们转化下思路 线段树上维护操作 接着我们思考如何将操作统一化,并且是可叠加的,这样才能方便用懒标记 我们设标记 \((a,b)\) 表示将x变为 \(max(x+a,b)\) 区间加: \((a,-INF)\) 区间赋值: \((-INT,a)\) 将每个值变为 \(max(x_i-a,0)\) 即为: \((-a,0)\) 接着我们考虑合并的问题 假设现在的标记为 \((a,b)\) ,从父亲节点传下来的标记为 \((c,d)\) 先将第一个标记表示出来 \(max(x+a,b)\) ,这就是现在的 \(x'\) , 再将 \(x'\) 代入 现在即为 \(max(c+max(x+a,b),d)\) 可以发现对于前一项的b,b与x无关 而我们定义标记的前一项是与x有关,而后一项与x无关 所以可以将其提取出来,即为 \(max(c+a+x,max(c+b,d))\) 所以合并之后的标记即为 \((a+c,max(b+c),d)\) 现在已经解决了标记合并的问题 现在我们来考虑最大值的维护 如果我们将标记看成一个函数, 那么这个函数的图像一定是这样的: 也就意味这合并之后的标记也是这样子的 同时注意到前面一段的平板是由标记的第二项决定的

计数排序

核能气质少年 提交于 2020-01-23 08:29:51
/*其主要是将1同样大小的数据放在一起,然后在分开 */ #include <iostream> using namespace std; int SUM(int a[],int n) {//此函数为找到该数组最大值,作用为,开辟这么大的空间以防浪费 int max; max=a[0]; for(int i=1;i<n;i++) { if(a[i]>max) max=a[i]; } return max; } void paixu(int a[],int n) { int m=SUM(a,n); int i,j,b[10]={0}; for(i=0;i<n;i++) b[a[i]]++;//数组a对应的数组大小位置的b++,用b计量a[i]值的个数 for(i=0,j=0;i<=m && j<n;i++) { if(b[i]==1) a[j++]=i;//从新规划a[]因为b下标大小为a值大小 if(b[i]>1)//若b值大于1则代表有多个相同数(数大小为下标)将改变后的a中连续几位数设置相同 { int len=j; for(;j<=b[i]+len;j++) a[j]=i;//用len+b[i]来表示相同数结束位置 } //为0时不予处理 } } void main(){ int a[10]={1,1,5,7,1,1,4,0,0,0}; paixu(a,10); for

2019第六周作业

眉间皱痕 提交于 2020-01-21 11:42:44
这次作业属于哪个课程 C语言程序设计 这次作业要求在哪里 第六周作业 我在这个课程的目标是 学习指针的运用及其计算 这个作业具体在那个方面帮助我实现目标 这次作业使我明白了指针定义及指针与数组变量之间的关系 参考文献 无 第六周基础作业 求两数平方根之和 函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double *a, double *b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: #include<stdio.h> #include <math.h> double fun (double *a, double *b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } /* 请在这里填写答案 */ 输入样例: 12 20 输出样例: y=7.94 实验代码 double fun (double *a,double *b) { double sum; sum=sqrt(*a)+sqrt(*b); return sum; }

支持向量机(SVM)中的对偶问题

时光总嘲笑我的痴心妄想 提交于 2020-01-18 17:29:49
前言 在SVM中有一个求极小值的问题转换过程,转换为一个对偶问题,但是我不太清楚这个问题为什么可以转换,而且还不太清楚为什么这么转换?不太明确转换后有什么优点,写个文章来了解这些内容。 原始问题转换 min ⁡ 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( x i + b ) > = 1 i=1,2...,n \min \quad \frac{1}{2} ||w||^2 \\ s.t. \quad y_i(x_i+b) >=1 \qquad \text{i=1,2...,n} min 2 1 ​ ∣ ∣ w ∣ ∣ 2 s . t . y i ​ ( x i ​ + b ) > = 1 i=1,2...,n 拉格朗日乘子之后的公式为: F ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n a i [ 1 − y i ( w x i + b ) ] s . t . a i > = 0 F(w,b,a)= \frac{1}{2} ||w||^2+\sum_{i=1}^{n}a_{i}[1-y_i(wx_i+b)] \\ s.t. \quad a_i>=0 F ( w , b , a ) = 2 1 ​ ∣ ∣ w ∣ ∣ 2 + i = 1 ∑ n ​ a i ​ [ 1 − y i ​ ( w x i ​ + b ) ] s . t

第六周编程总结

↘锁芯ラ 提交于 2020-01-18 14:02:34
6-1 求两数平方根之和 (10 分) 函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。 函数接口定义: double fun (double a, double b); 其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。 裁判测试程序样例: include<stdio.h> include <math.h> double fun (double a, double b); int main ( ) { double a, b, y; scanf ("%lf%lf", &a, &b ); y=fun(&a, &b); printf ("y=%.2f\n", y ); return 0; } (1)实验代码 double fun (double a, double b) { double sum; sum=sqrt( a)+sqrt( b); return sum; } (2)设计思路:首先定义浮点型 a, b,sum然后进入公式再运行,再然后结束sum。 (3)运行截图 7-1 利用指针返回多个函数值 (30 分) 读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。 输入格式: 输入有两行: 第一行是n值; 第二行是n个数。 输出格式: 输出最大值和最小值

Leetcode 198. House Robber I II III

谁说胖子不能爱 提交于 2020-01-18 08:00:37
You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night . Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police . Example 1: Input: [1,2,3,1] Output: 4 Explanation: Rob house 1 (money = 1) and then rob