Mail.Ru Cup 2018 Round 1 virtual participate记

本文解析了四道编程题目,包括阅读理解、寻找最小未现数、确定最大值及区间异或和问题,通过C++代码展示了算法实现过程。

  因为睡过了只好vp。

  A:阅读理解。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
#define N 
int x,y,z,t1,t2,t3;
int main()
{
    cin>>x>>y>>z>>t1>>t2>>t3;
    if (abs(y-x)*t1>=t3*3+t2*(abs(x-z)+abs(y-x))) cout<<"YES";
    else cout<<"NO";
    return 0;
}
View Code

  B:一个数可以作为mex当且仅当所有比它小的自然数都已出现。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
#define N 100010
int n,a[N],mx;
int main()
{
    n=read();
    for (int i=1;i<=n;i++) a[i]=read();
    mx=-1;
    for (int i=1;i<=n;i++)
    {
        if (a[i]>mx+1) {cout<<i;return 0;}
        mx=max(mx,a[i]);
    }
    cout<<-1;
    return 0;
}
View Code

  C:li=ri=0的人一定是最大值,给他们记录答案后将其去掉并更新其他人的li和ri即可。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
#define N 1010
int n,a[N],b[N],ans[N],cnt=0;
int main()
{
    n=read();
    for (int i=1;i<=n;i++) a[i]=read();
    for (int i=1;i<=n;i++) b[i]=read();
    for (int i=1;i<=n;i++)
    {
        bool flag=0;
        for (int j=1;j<=n;j++)
        if (a[j]==0&&b[j]==0) flag=1,cnt++,ans[j]=n-i+1,a[j]=b[j]=n+2;
        if (!flag) {cout<<"NO";return 0;}
        if (cnt==n) break;
        int tot=0;
        for (int j=1;j<=n;j++)
        if (a[j]==n+2&&b[j]==n+2) tot++;
        else if (a[j]<tot) {cout<<"NO";return 0;}
        else a[j]-=tot;
        tot=0;
        for (int j=n;j>=1;j--)
        if (a[j]==n+2&&b[j]==n+2) tot++;
        else if (b[j]<tot) {cout<<"NO";return 0;}
        else b[j]-=tot;
        for (int j=1;j<=n;j++)
        if (a[j]==n+2&&b[j]==n+2) a[j]=b[j]=n+1;
    }
    cout<<"YES\n";
    for (int i=1;i<=n;i++) cout<<ans[i]<<' ';
    return 0;
}
View Code

  D:注意到对某个位置的数取反会使所有包含他的区间的异或和取反。区间异或和显然可以转化为两个前缀的异或和。这样就可以发现我们对于每一个前缀和都可以任意决定是否取反了。花了1h没救了。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
#define N 200010
int n,m,a[N];
map<int,int> f;
long long ans;
int main()
{
    n=read(),m=read();f[0]++;
    for (int i=1;i<=n;i++) 
    {
        a[i]=a[i-1]^read();
        if (a[i]<(1<<m-1)) f[a[i]]++;
        else f[((1<<m)-1)^a[i]]++;
    }
    for (int i=1;i<=n;i++) if (a[i]>=(1<<m-1)) a[i]^=((1<<m)-1);
    ans=1ll*n*(n+1)>>1;
    sort(a,a+n+1);int t=unique(a,a+n+1)-a-1;
    for (int i=0;i<=t;i++)
    {
        int x=f[a[i]],p=x/2,q=(x+1)/2;
        ans-=1ll*p*(p-1)/2,ans-=1ll*q*(q-1)/2;
    }
    cout<<ans;
    return 0;
}
View Code

  result:rank 426

转载于:https://www.cnblogs.com/Gloid/p/9818883.html

已经博主授权,源码转载自 https://pan.quark.cn/s/fdfcb1303993 ### 高速电路接口原理与应用详解 #### 引言 信息技术的迅猛进步推动了高速数据传输需求的持续提升,特别是在高性能计算、网络通信等关键领域。为了达成高效的数据交换,高速集成电路间的互连技术成为了研究的热点。本文将系统阐述几种典型的高速接口规范——PECL(Positive Emitter Coupled Logic)、LVECL(Low Voltage Emitter Coupled Logic)、CML(Current Mode Logic)和LVDS(Low Voltage Differential Signaling),并深入分析它们的电路构造和应用特性。 #### 1. ECL电路基础 ECL电路是早期为应对高速数据传输需求而研发的一种逻辑电路,其运行速度极快,最高可达到10Gbps。通过维持晶体管工作于线性和截止区域,ECL电路有效规避了饱和区的影响,从而获得了迅速的开关响应。接下来将具体解析ECL电路的构成要素及其运作机制。 #### 1.1 ECL线接收器电路组成 - **差分放大器**:由晶体管Q3、Q4、Q5构成,是整个电路的核心部分。其中,Q5作为恒流源,具备较大的交流等效电阻,能够提供稳定的电流,确保电路的稳定运作。 - **发射极跟随器输出电路**:由Q1、Q2组成,主要用于电平调整和输出驱动,确保输出信号与下一级电路的兼容性。 - **偏置电源**:由Q6、Q7以及二极管D1、D2构成,为差分放大器提供可靠的偏置电压,使其始终工作在线性放大区间。 #### 1.2 ECL电路的显著特性 - **高运行速率**:由于晶体管工作在线性和截止状态,不受...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值