达美航空

[洛谷P4514] 上帝造题的七分钟

◇◆丶佛笑我妖孽 提交于 2019-11-29 17:14:08
Description “第一分钟,X说,要有矩阵,于是便有了一个里面写满了 \(0\) 的 \(n \times m\) 矩阵。 第二分钟,L说,要能修改,于是便有了将左上角为 \((a,b)\) ,右下角为 \((c,d)\) 的一个矩形区域内的全部数字加上一个值的操作。 第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作。 第四分钟,彩虹喵说,要基于二叉树的数据结构,于是便有了数据范围。 第五分钟,和雪说,要有耐心,于是便有了时间限制。 第六分钟,吃钢琴男说,要省点事,于是便有了保证运算过程中及最终结果均不超过32位有符号整数类型的表示范围的限制。 第七分钟,这道题终于造完了,然而,造题的神牛们再也不想写这道题的程序了。” ——《上帝造裸题的七分钟》 所以这个神圣的任务就交给你了。 Input 输入数据的第一行为 \(X\) \(n\) \(m\) ,代表矩阵大小为 \(n \times m\) 。 从输入数据的第二行开始到文件尾的每一行会出现以下两种操作: \(L\) \(a\) \(b\) \(c\) \(d\) \(delta\) —— 代表将 \((a,b)\) , \((c,d)\) 为顶点的矩形区域内的所有数字加上 \(delta\) 。 \(k\) \(a\) \(b\) \(c\) \(d\) —— 代表求 \((a,b),(c,d)\)

加工调度问题

匆匆过客 提交于 2019-11-29 16:02:06
题目 加工调度问题: 对于每个物品无非有三种情况: A所用时间 < B所用时间。称其为一类 A所用时间 > B所用时间。称其为二类 和A、B相等的三种情况。称其为三类 把问题转化一下,则有一类是B正在占用的时间变多,二类是B占用的时间变少。 则肯定使B先变多后变少,才能使时间花费最少。 然后考虑每种情况内部的加工顺序。 相等不用考虑。对顺序无影响。 首先浪费的时间是最先开始的产品在A中的时间,我们要减少它,使a从小到大排序。 然后最后时浪费的时间是B中剩余的时间,要比A中多,所以要使B中大进程先在B里跑着,最后跑小进程。 考虑完加工顺序直接模拟即可。 #include <bits/stdc++.h> #define N 100103 using namespace std; int n, ans, delta; struct product { int a, b, belong, id; }data[N]; bool cmp(product s, product b) { if (s.belong != b.belong) return s.belong < b.belong; if (s.belong == 3) return s.b > b.b; if (s.belong == 1) // 先开始的a一定要最小 return s.a < b.a; } int main() {

cf2c(模拟退火 步长控制

梦想与她 提交于 2019-11-29 13:40:01
https://www.luogu.org/problem/CF2C 题意:在平面上有三个没有公共部分的圆,求平面上一点使得到三个圆的切线的夹角相等。(若没答案满足条件,则不打印 思路:可用模拟退火算法来枚举答案点,可过,然而应该不是正解。先设一个最优解和初始步长,然后以当前步长不断搜索最优解更新答案,若答案不能更新,则步长减半再搜索,直到精度达到要求结束算法。 #include<cstdio> #include<cmath> const double EPS=1E-5; //控制精度 struct Point { double x,y; double r; }P[3]; double Get(double x,double y,const Point b) { //求两点之间的距离 return sqrt((x-b.x)*(x-b.x)+(y-b.y)*(y-b.y)); } double Check(double x,double y) { //估价函数 double t[3],delta[3],ret=0.0; //t为当前视角,delta表示误差值 for(int i=0;i<3;++i) t[i]=Get(x,y,P[i])/P[i].r; for(int i=0;i<3;++i) { delta[i]=t[i]-t[(i+1)%3]; ret+=delta[i]

题解 UVA1411 【Ants】

坚强是说给别人听的谎言 提交于 2019-11-29 12:39:55
题目链接 蒟蒻来写一篇 KM算法 的题解。 首先,如果所有线段不相交,那么线段长度之和一定最小。证明很简单,在这里不再赘述。(提示:三角形两边之和大于第三边) 那么这道题就转化为了一道带权二分图匹配问题,可以使用费用流求解。又由于黑白点数相同,所以带权最大匹配一定是完备匹配,故可以用KM算法求解。 若不会KM算法,请到 这里 学习。 然后就把KM算法的板子改一下,在每个黑点与白点之间连一条权值为距离的边,就可以A了。 代码: #include<bits/stdc++.h> using namespace std; const double INF=1e9; double Map[101][101],la[101],lb[101],va[101],vb[101],upd[101],delta;//一定要开double int match[101],n; bool dfs(int x){ va[x]=1; for(int i=1;i<=n;i++){ if(!vb[i]){ if(fabs(la[x]+lb[i]-Map[x][i])<=0.0001){//注意精度 vb[i]=1; if(!match[i]||dfs(match[i])){ match[i]=x; return true; } } else{ upd[i]=min(upd[i],la[x]+lb[i]-Map[x]

灰度图像的频率域滤波——高斯(Gaussian)低通滤波器(Matlab)

人盡茶涼 提交于 2019-11-29 04:59:35
clc; clear all; close all; %读入图像,并转换为double型 I=imread('D:\Gray Files\4-41.tif'); I_D=im2double(I); %获得图像的高度和宽度 [M,N]=size(I_D); %图像中心点 M0=M/2; N0=N/2; J=fft2(I_D); J_shift=fftshift(J); %%%%===================高斯(Gaussian)低通滤波器========================== %截至频率距离圆点的距离,delta表示高斯曲线的扩散程度 D0=80; delta=D0; for x=1:M for y=1:N %计算点(x,y)到中心点的距离 d2=(x-M0)^2+(y-N0)^2; %计算高斯滤波器 h=exp(-d2/(2*delta^2)); %用滤波器乘以主函数 J_shift(x,y)=J_shift(x,y)*h; end end J=ifftshift(J_shift); I_D_rep=ifft2(J); imshow(I_D_rep,[]); 来源: https://blog.csdn.net/lengo/article/details/100527527

灰度共生矩阵(Gray-level Co-occurrence Matrix,GLCM),矩阵的特征量

心不动则不痛 提交于 2019-11-28 22:47:13
又叫做灰度共现矩阵 Prerequisites 概念 计算方式 对于精度要求高且纹理细密的纹理分布,我们取像素间距为 d = 1 d=1,以下是方向的说明: 我们来看,matlab内置工具箱中的灰度共生矩阵的生成函数graycomatrix(gray-level co-occurrence matrix)对方向的说明: 如上图所示,方向是在每一个像素点(pixel of interest)的邻域(当然,边界点除外)中获得的,只不过这里的坐标系变为了: δ = ( 0 , ± 1 ) δ=(0,±1)为水平方向扫描,也即 θ = 0 ∘ o r θ = 180 ∘ θ=0∘orθ=180∘; δ = ( ± 1 , 0 ) δ=(±1,0)为垂直扫描( θ = 90 ∘ o r θ = − 90 ∘ θ=90∘orθ=−90∘); δ = ( 1 , − 1 ) , δ = ( − 1 , 1 ) δ=(1,−1),δ=(−1,1)是 − 45 ∘ −45∘或 135 ∘ 135∘扫描; δ = ( 1 , 1 ) , δ = ( − 1 , − 1 ) δ=(1,1),δ=(−1,−1)是 45 ∘ 45∘扫描。 一旦像素间距离 d d以及像素间空间位置关系 δ δ确定,即可生成灰度共生矩阵。 GLCM所表示的是纹理图像的某些统计特性,所谓统计,通俗地讲就是累计某种情况出现的次数

[ch02-01] 线性反向传播

被刻印的时光 ゝ 提交于 2019-11-28 21:02:24
系列博客,原文在笔者所维护的github上: https://aka.ms/beginnerAI , 点击star加星不要吝啬,星越多笔者越努力。 2.1 线性反向传播 2.1.1 正向计算的实例 假设我们有一个函数: \[z = x \cdot y \tag{1}\] 其中: \[x = 2w + 3b \tag{2}\] \[y = 2b + 1 \tag{3}\] 计算图如图2-4。 图2-4 简单线性计算的计算图 注意这里x, y, z不是变量,只是计算结果。w, b是才变量。因为在后面要学习的神经网络中,我们要最终求解的是w和b的值,在这里先预热一下。 当w = 3, b = 4时,会得到图2-5的结果。 图2-5 计算结果 最终的z值,受到了前面很多因素的影响:变量w,变量b,计算式x,计算式y。常数是个定值,不考虑。 2.1.2 反向传播求解w 求w的偏导 目前的z=162,如果我们想让z变小一些,比如目标是z=150,w应该如何变化呢?为了简化问题,我们先只考虑改变w的值,而令b值固定为4。 如果想解决这个问题,我们可以在输入端一点一点的试,把w变成4试试,再变成3.5试试......直到满意为止。现在我们将要学习一个更好的解决办法:反向传播。 我们从z开始一层一层向回看,图中各节点关于变量w的偏导计算结果如下: \[因为z = x \cdot y,其中x = 2w

【深度学习】卷积神经网络CNN——手写一个卷积神经网络

て烟熏妆下的殇ゞ 提交于 2019-11-28 15:42:12
卷积神经网络的前向传播 1.输入层---->卷积层   输入是一个4*4 的image,经过两个2*2的卷积核进行卷积运算后,变成两个3*3的feature_map 以卷积核filter1为例(stride = 1 ): 计算第一个卷积层神经元$ o_{11} $的输入: $$ \begin{align} net_{o11} \nonumber & = conv(input, filter)\nonumber\\ & = i_{11}\times h_{11}+i_{12}\times h_{12}+i_{21}\times h_{21}+i_{22}\times h_{22}\\ & = 1\times 1+0\times (-1)+1\times 1+1\times (-1) = 1\nonumber \end{align} $$ 神经元$ o_{11} $的输出:(此处使用Relu激活函数) $$ \begin{align} out_{o11} \nonumber & = activators(net_{o11})\\ & = max(0, net_{o11})=1 \end{align} $$ 其他神经元的计算方式相同 2.卷积层---->池化层 计算池化层$ m_{11} $的输入(取窗口为 2 * 2),池化层没有激活函数 $$ \begin{align} net_{m

反向传播算法简介

我怕爱的太早我们不能终老 提交于 2019-11-28 13:28:52
反向传播算法 参考: http://neuralnetworksanddeeplearning.com/chap2.html BP 算法所关注的是损失函数 C 关于神经网络每一个权重 w 和偏置 b 的偏导。BP 算法向我们展示权值和偏置对损失值的影响。BP 不仅仅是一个快速的算法,其同时为我们提供了一个视角,让我们观察权值和偏置是如何影响网络输出的。 热身:使用矩阵计算网络输出 先介绍一个网络权重和偏置值的数学表示:$w_{jk}^l$,左侧的数学表达式表示第 $l$ 层网络的第 $j$ 个元素和第 $l-1$ 层第 $k$ 个元素之间的权重。同样的,$b_j^l$ 表示第 $l$ 层第$j$个元素的偏置值,$a_j^l$ 表示 $l$ 层第 $j$ 个元素的激活函数输出。利用这种数学表示,$a_j^l$ 可以表示为: $$ a_j^l = \sigma(\sum_k w_{jk}^l a_k^{l-1} + b_j^l) \tag{1} $$ 使用矩阵形式表示上述表达式: $$ a^l = \sigma(w^l a^{l-1} + b^l) \tag{2} $$ 定义 $z^l = w^l a^{l-1} + b^l$ 为激活函数的输入值则可以将上面表达式$(2)$ 表示为: $$ a^l = \sigma(z^l) \tag{3} $$ 损失函数的两个要求 BP