begin

线段树区间离散化——牛客多校E

心已入冬 提交于 2019-11-26 14:57:48
这个区间离散化把我调死了。。 总之用vector来离散化,然后叶子节点维护的是一段区间,记录下每个叶子结点的起点+长度 千万要注意下标不能弄错! #include<bits/stdc++.h> #define MAXN 400005 #define INF 1000000000 #define MOD 1000000007 #define F first #define S second using namespace std; typedef long long ll; typedef pair<int,int> P; int N; int X[MAXN],Y[MAXN],L[MAXN],R[MAXN]; vector<int> v; int X1,X2,Y1,Y2,A1,A2,B1,B2,C1,C2,M1,M2; struct segtree { ll sum[8*MAXN]; int lazy[8*MAXN],len[8*MAXN]; void pushup(int k) { sum[k]=sum[k*2]+sum[k*2+1]; } void pushdown(int k) { if(!lazy[k]) return; for(int i=k*2;i<=k*2+1;i++) { lazy[i]+=lazy[k]; sum[i]+=lazy[k]*len[i]; } lazy

sql存储过程

烂漫一生 提交于 2019-11-26 14:54:12
1.在数据库中保存的存储过程都是编译过的,执行速度快。 2.允许模块化编程,类型方法的复用。 3.提高了性能的安全性,防止sql注入。 4.调用时减少网络流通量,只传输存储过程名称。 系统存储过程一般以sp_或xp_开头,用户存储过程一般以usp_开头。 调用存储过程用关键字exec 1.创建一个名为usp_helloworld存储过程 create proc usp_helloworld as begin print ' hello world!!! ' ; end exec usp_helloworld 2.创建一个带参数存储过程,并输出两个的和。 -- 带参数存储过程 create proc usp_add @i1 int , @i2 int as begin print @i1 + @i2 end 调用的时候要传递两个参数 exec usp_add 100 , 200 3.如果已经存在的存储过程名称,要通过alter修改。 设置变量@i2的默认值,有默认值的参数可以传递参数值。 alter proc usp_add @i1 int , @i2 int = 100 as begin print @i1 + @i2 end exec usp_add 500 --输出结果为600 4.如果第一个无默认,第二个有默认值,只给第一个传值,可以采用显示传值。 exec usp_add

快排(QuickSort)

雨燕双飞 提交于 2019-11-26 14:14:14
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void swap(int* left, int* right) { int temp = left; left = right; right = temp; } int Partion(int array, int left, int right) { int begin = left; int end = right - 1; int key = array[right - 1]; while (begin<end) { while (begin < end && array[begin] <= key) begin++; while (begin < end && array[end] >= key) end–; if (begin != end) swap(&array[begin], &array[end]); } if (begin != right - 1) swap(&array[begin], &array[right - 1]); return begin; } void QuickSort(int array, int left, int right) { if (right - left > 1) { int div

[动态规划] leetcode 1024 Video Stitching

让人想犯罪 __ 提交于 2019-11-26 13:01:42
problem: https://leetcode.com/problems/video-stitching/ 背包类型问题。可将长度视为背包容量,物体视为长条状的物体。 class Solution { public: int videoStitching(vector<vector<int>>& clips, int T) { sort(clips.begin(), clips.end(), cmp); vector<int> dp(T + 1, -1); dp[0] = 0; for (int i = 0; i < clips.size(); i++) { int begin = clips[i][0]; if (begin > T) break; int end = min(clips[i][1], T); if (dp[begin] == -1) continue; for (int t = begin + 1; t <= end; t++) { if (dp[t] == -1) dp[t] = dp[begin] + 1; else dp[t] = min(dp[t], dp[begin] + 1); } } return dp[T]; } }; 来源: https://www.cnblogs.com/fish1996/p/11321406.html

适用于Firemonkey的Json解析对象XsuperObject使用方法介绍

耗尽温柔 提交于 2019-11-26 11:50:29
Sample JSON { "name":"Onur YILDIZ", "vip":true, "telephones":["000000000","111111111111"], "age":24, "size":1.72, "adresses":[ { "adress":"blabla", "city":"Antalya", "pc":7160 }, { "adress":"blabla", "city":"Adana", "pc":1170 } ] } Delphi Code var X:ISuperObject; begin X :=TSuperObject.Create('{}'); X.S['name']:='Onur YILDIZ'; X.B['vip']:=true; with X.A['telephones']do begin Add('000000000'); Add('111111111111'); end; X.I['age']:=24; X.F['size']:=1.72; with X.A['adresses'].O[0]{AutoCreate}do begin S['adress']:='blabla'; S['city']:='Antalya'; I['pc']:=7160; end; // or X.A['adresses'].O[1].S[

生成函数

眉间皱痕 提交于 2019-11-26 07:53:14
也许更好的阅读体验 一般生成函数(OGF) 引入 考虑一类组合对象组成的集合 \(A\) ,其中: 每个元素 \(a\in A\) 都被定义了“大小” \(|a|\) ,它是一个非负整数。 对于给定的 \(n\) ,大小为 \(n\) 的元素的数量是有限的,记作 \(A_n\) eg. \(A\) 是全体 \(01\) 串组成的集合,一个 \(01\) 串的大小被定义为它的长度则 \(A_n=2^n\) 定义 \(A\left( x\right) =\sum ^{\infty }_{i=0}A_ix^{i}\) 为 \(A\) 的一般生成函数 注意 \(A(x)\) 为一个多项式 这里的 \(A_i\) 为第 \(i\) 项的 系数 这是一个形式幂级数,不用考虑何时收敛 这里的 \(x^i\) 为形式幂,无实义,一般也不会去求 但是 \(x^i\) 有区分实际意义的作用,即 \(x^i\rightarrow\) 第 \(i\) 项 \(x^i\) 的系数为第 \(i\) 种状态的答案 这个不好说,举个例子 eg. \(A\) 是全体 \(01\) 串组成的集合,则 \(\begin{aligned}A\left( x\right) =\sum ^{\infty }_{i=0}2^{i}x^{i}\end{aligned}=\dfrac{1}{1-2x}\)