栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

CCF-CSP 202109-3 脉冲神经网络 时而100分。。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CCF-CSP 202109-3 脉冲神经网络 时而100分。。

原题链接:CCF-CSP 202109-3 脉冲神经网络

#include 
using namespace std;
#define ll unsigned long long
const int N=1010;

static unsigned long nnext = 1;

int myrand(void) {
    nnext = nnext * 1103515245 + 12345;
    return((unsigned)(nnext/65536) % 32768);
}

struct Node
{
      double v,u,a,b,c,d;
      int num;
      int r;

}node[2010];

double Ik[N][N];//表示该神经元在K时刻接受到的所有脉冲输入的强度之和

int mod=0;

struct tuchu
{
    int t,D;
    double w;
    tuchu(int _t,double _w,int _D):t(_t),w(_w),D(_D) {}
};
vector g[2010];

int main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int N,S,P,T;
    cin>>N>>S>>P>>T;//一共有N 个神经元,S个突触和 P个脉冲源,输出时间刻 T时神经元的 v值。
    int NP=N,SP=S,PP=P;
    double dt; cin>>dt;//时间间隔。
    int cur=0;
    while(N>0)
    {
        int RN;
        double v,u,a,b,c,d;
        cin>>RN;
        cin>>v>>u>>a>>b>>c>>d;
        for(int i=cur;i
            node[i].v=v;
            node[i].u=u;
            node[i].a=a;
            node[i].b=b;
            node[i].c=c;
            node[i].d=d;
        }
        cur+=RN;
        N-=RN;
    }
    N=NP;
    while(P--)
    {
        int r; cin>>r;
        node[cur].r=r;
        cur++;
    }
    P=PP;
    while(S--)
    {
        int s,t,D;
        double w;
        cin>>s>>t>>w>>D;
        g[s].push_back(tuchu(t,w,D));
        mod=max(mod,D+1);
    }
    S=SP;
    int f=0;
    for(int ttmp=1;ttmp<=T;ttmp++)
    {
        if(ttmp==T) f=1;
        int tt=ttmp%mod;
        for(int now=N;now
            int my=myrand();
            if(node[now].r>my)
            {
                for(int i=0;i
                    int to=g[now][i].t;
                    double w=g[now][i].w;
                    int D=g[now][i].D;
                    //cout<
            double vv=node[now].v;
            double uu=node[now].u;
            double a=node[now].a;
            double b=node[now].b;
            node[now].v=vv+dt*(0.04*vv*vv+5*vv+140-uu)+Ik[tt][now];
            node[now].u=uu+dt*a*(b*vv-uu);
            if(node[now].v>=30)
            {
                node[now].v=node[now].c;
                node[now].u+=node[now].d;
                node[now].num++;
                for(int i=0;i
                    int to=g[now][i].t;
                    double w=g[now][i].w;
                    int D=g[now][i].D;
                    Ik[(tt+D)%mod][to]+=w;
                }
            }
            //cout<
        maxv=max(node[i].v,maxv);
        minv=min(node[i].v,minv);
        maxnum=max(node[i].num,maxnum);
        minnum=min(node[i].num,minnum);
    }
    cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号