(AcWing 4440. 照相,408操作系统-进程的通信,fast r-cnn和faster r-cnn的初步理解)

上午,写题+看操作系统。

4440.照相

这里解释一下反转的意思,就像是题目举出的14字符的例子,我原以为是将前六个字符的G、H反转,即G变为H,H变为G,后来发现是将前六个字符串倒过来,也就是顺序反转。

可以知道的是,分别有G、H字符,因为是偶数前缀反转,并且我们的目的是将奇数位的G反转到偶数位上,于是我们可以将N个字符看作是N/2个字符串,可能出现的字符序列GH、HG、HH、GG。这里解释一下,是因为我们要通过偶数前缀反转的方法达到尽可能的把奇数位的G反转到偶数位上,其中HH和GG序列就算反转顺序也是不变的,所以就不用管它。

我们需要处理的是GH和HG,接下来分两种情况讨论。

开始字符串为GH,直到接收到HG序列。此时,我们要做的操作可以具体理解为,当碰到HG序列后,就将之前由GH组成的字符串反转,若之后还有字符串,此时完成局部最优。此时所有GH已经反转为HG,也就是G处于偶数位。

开始字符串为HG,直到接收的是GH序列。此时,我们要做的操作可以具体理解为,当碰到GH序列后,就将之前由HG组成的字符串反转,此时,目前探测到位置的字符串均为GH。

这两种情况处理,可以互相接连使用,直到到达字符串末尾。

当N长字符串最后的两个字符为GH时,我们需要再一次反转,这样就能将所有的GH反转为HG,即情况二一直没碰到HG的处理。此时,所有GH已经反转为HG。

代码如下:

#include <iostream>
using namespace std;
int solve()
{
    int n,flag=0,cnt=0;
    string t;
    cin >>n>>t;
    for(int i=0;i<n;i+=2)
    {
        if(t[i]=='G'&&t[i+1]=='H')
        {
            cnt+=flag ==2;
            flag=1;
        }
        else
        if(t[i]=='H'&&t[i+1]=='G')
        {
            cnt+=flag == 1;
            flag=2;
        }
    }
    if(flag == 1)
        cnt++;
    cout <<cnt;
    return cnt;
}
int main()
{
    solve();
    return 0;
}

操作系统--进程的通信

进程之间的通信有三种方式,分别是共享存储,消息传递,管道通信。

共享存储

操作系统在内存中取出一段空间,将其设置为共享使用的存储空间,通信双方将需要交互的数据复制放入此存储空间,需要的数据从此空间中读取,从而达到共享数据的效果。

需要注意的是,通信双方在此存储空间读写数据是同步互斥的,即一个时间只能有一个进程在此存储空间中进行读写。因为如果通信双方同时进行读写操作的话,会导致存储空间数据紊乱,从而双方得到的数据出错。

其中操作系统负责位通信进程提供可共享使用的存储空间和同步互斥工具,通信双方负责安排读写指令完成。

共享存储通信方式分为基于数据结构的共享,基于存储区的共享。其中基于数据结构的共享被认为是低级的共享方式,因为其共享速度慢且限制多。基于存储区的共享是高级的共享方式,其自由度高,且速度快。

消息传递

消息传递有两种方式,即直接通信方式和间接通信方式。使用发送原语和接收原语。

直接通信方式即若要向某进程发送数据,就直接将数据发送在接收进程的消息缓冲队列上,接收进程从消息缓冲队列上取得信息即可。即指定发送或接收某进程的数据。

间接通信方式即若要向某进程发送数据,发送进程将消息发送到某个中间实体,接收进程从中间实体中取得消息。此中间实体一般被称之为信箱,此通信方式也被称为信箱通信方式。

管道通信

通信双方通过一个pipe文件进行通信,也就是我们说的“管道”。此通信属于半双工通信,同一时间只能有一个进程进行操作。管道通信发送进程向管道中写入信息,接收进程读取信息,读信息一般比写入信息更快,当管道为空时,读进程会进入阻塞态,直到管道中有数据,唤醒读进程。管道为满时,写进程进入阻塞态,直到管道有空闲空间,唤醒写进程并写入信息。

若要全双工通信,需要再加一条管道。管道数据一旦被读出,就会消失。从数据结构层面看,这个管道就是一个循环队列,信息先进先出。

下午,Fast R-CNN + Faster R-CNN

Fast R-CNN

优化后的r-cnn,与r-cnn不同的是,先将图像放入vgg16,得到图像的特征矩阵,使用ss算法得到1k-2k个候选区域,根据候选区域就可以得到在图像中对应的特征矩阵了。不必像r-cnn一样将每个候选区域的图像截出,reshape致227*227尺寸,然后一个个放入Alexnet中得到对应的特征矩阵。这样速度会快很多。

它使用了 ROI pooling 层将特征矩阵缩放到7×7大小的特征图。

最后将特征图展平(reshape)为向量,通过一系列全连接层和 softmax得到预测结果。

Faster R-CNN

下次再更新这个罢,都不太会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值