2017.08.19【NOIP提高组】模拟赛B组总结

今天感觉无法AK,因为,有一道比较坑的第二题,说是什么莫队算法或者是用lct,我太弱了,又不会莫队,又不会树链剖分,也不会splay,那就只能先放着。总结一下吧。

第一题

题意不讲,感觉其实就是一个堆,跟那个合并果子十分相似,没有什么意义的水题。

第二题

大佬可以秒一秒这道题目:

Description

众所周知,Zjr506是算法之神,因此Ztxz16经常向他请教算法。这一天,Zjr506在教导了Ztxz16关于图论方面的一些算法后,给他出了一道图论题作为家庭作业:
给定N个点,M条无向边,Q个询问,每个询问给定L, R,问连上第L~R条边后,图中有多少联通块(询问之间互不影响)。
Ztxz16智商太低,百思不得其解,只好向你请教这个问题。

Input

第一行输入N M Q
接下来M行每行两个整数代表一条边
接下来Q行每行两个整数代表一个询问

Output

输出Q行,代表这个询问中联通块的个数

Sample Input

3 3 3
1 2
2 3
1 3
1 1
2 3
1 3

Sample Output

2
1
1

Data Constraint

20%的数据保证N, M, Q <= 1000
60%的数据保证N, M, Q <= 50000
100%的数据保证N, M, Q <= 200000, L <= R
反正我现在A不了。

第三题

给你一些点,然后他们之间有一些边,然后选择删掉一些边,使得剩下的边不能构成一个环,要求删去的边的总长度最小。
如果觉得我语文差的话,可以看原题,

Description

Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫。
为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些木桩之间绕上藩篱以困住这些猫。
一段时间后,Zjr506在绕了M个藩篱后兴高采烈的离开了。作为正义的使者,Ztxz16不忍心看到这些猫受到折磨,于是决定拆除一些藩篱让所有的猫都逃出去。因为Zjr506的巧妙设计,藩篱不会在除木桩之外的地方相交。这些藩篱构成了一些封闭的区域,每一个区域中都有一只猫。
因为Zjr506制造这些藩篱也不容易,所以Ztxz16希望拆除的藩篱总长度尽量小,现在他希望你告诉他最小的总长度。

Input

第一行两个数 n,m ( 2<=n<=10000 , 1<=m<=50000 )
接下来 n 行 , 每行两个整数 xi,yi, 代表第 i 个木桩的坐标 ( − 10000 ≤ xi, yi ≤ 10000).
接下来 m 行,每行两个整数 pi,qi (1 ≤ pj, qj ≤ N) , 代表木桩 pi 与木桩 qi 之间有一个藩篱。

Output

输出一个实数代表答案,当答案与标准答案差的绝对值不超过0.001时认为它是正确的。

Sample Input

8 8
0 0
3 0
3 3
0 3
1 1
1 2
2 2
2 1
1 2
2 3
3 4
4 1
5 6
6 7
7 8
8 5

Sample Output

4.000000000

Data Constraint

对于20%的数据:
N , M <= 30
对于30%的数据:
N, M <= 300
对于100%的数据:
N <= 10000, M <= 50000
题解:随便搞一下最大生成树就好了,然后用并查集判断是否构成环,然后就没有了。

代码

t3:

var
        father,x,y:array[1..10000] of longint;
        a:array[0..50000] of extended;
        p,q:array[0..50000] of longint;
        n,m,i,f1,f2:longint;
        ans:extended;
function getfahter(x:longint):longint;
begin
        if (father[x]=0)or(father[x]=x) then
                father[x]:=x
        else
                father[x]:=getfahter(father[x]);
        exit(father[x]);
end;
procedure swap(var a,b:longint);
var
        t:longint;
begin
        t:=a;
        a:=b;
        b:=t;
end;
procedure swap1(var a,b:extended);
var
        t:extended;
begin
        t:=a;
        a:=b;
        b:=a;
end;
procedure qsort(x,y:longint);
var
        i,j:longint;
        mid:extended;
begin
        i:=x;
        j:=y;
        mid:=a[(i+j)div 2];
        repeat
                while a[i]>mid do inc(i);
                while a[j]<mid do dec(j);
                if i<=j then
                begin
                        swap(p[i],p[j]);
                        swap(q[i],q[j]);
                        swap1(a[i],a[j]);
                        inc(i);
                        dec(j);
                end;
        until i>j;
        if i<y then qsort(i,y);
        if x<j then qsort(x,j);
end;
function euclid(i:longint):extended;
begin
        exit(sqrt(sqr(x[p[i]]-x[q[i]])+sqr(y[p[i]]-y[q[i]])));
end;
begin
        readln(n,m);
        for i:=1 to n do
        begin
                readln(x[i],y[i]);
        end;
        for i:=1 to m do
        begin
                readln(p[i],q[i]);
                a[i]:=euclid(i);
                write(a[i]:0:6,' ');
                ans:=ans+a[i];
        end;
        writeln;
        qsort(1,m);
        for i:=1 to m do
        begin
                f1:=getfahter(p[i]);
                f2:=getfahter(q[i]);
                if f1<>f2 then
                begin
                        ans:=ans-a[i];
                        father[f1]:=f2;
                end;
        end;
        writeln(ans:0:9);
end.

最后几句

感觉自己还是太傻,t3那么简单的题都没有想到,还是太弱了。

the end

由于我的水平有限,难免会有些写错的地方,希望大家批评指正,多多包容,thank you for your patience.

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值