int N , S , P , T ; double dt ; double v [ MAX ] , u [ MAX ] , a [ MAX ] , b [ MAX ] , c [ MAX ] , d [ MAX ] , w [ MAX ] ; int r [ MAX ] ; int s [ MAX ] , t [ MAX ] , D [ MAX ] ; double I [ 1024 ] [ MAX / 2 ] ; int cnt [ MAX ] ; int h [ MAX ] , e [ MAX ] , ne [ MAX ] , idx ; void add ( int a , int b , double ww , int DD ) e [ idx ] = b , w [ idx ] = ww , D [ idx ] = DD , ne [ idx ] = h [ a ] , h [ a ] = idx ++ ; static unsigned long next1 = 1 ; /* RAND_MAX assumed to be 32767 */ int my_rand ( ) { next1 = next1 * 1103515245 + 12345 ; return ( ( unsigned ) ( next1 / 65536 ) % 32768 ) ; int main ( ) // scanf("%d%d%d%d", &N, &S, &P, &T); // scanf("%lf", &dt); cin >> N >> S >> P >> T >> dt ; memset ( h , - 1 , sizeof h ) ; for ( int i = 0 ; i < N ; ) int rn ; double vv , uu , aa , bb , cc , dd ; cin >> rn >> vv >> uu >> aa >> bb >> cc >> dd ; // scanf("%d%lf%lf%lf%lf%lf%lf", &rn, &vv, &uu, &aa, &bb, &cc, &dd); for ( int j = 0 ; j < rn ; j ++ , i ++ ) v [ i ] = vv , u [ i ] = uu , a [ i ] = aa , b [ i ] = bb , c [ i ] = cc , d [ i ] = dd ; for ( int i = N ; i < N + P ; i ++ ) cin >> r [ i ] ; int mod = 0 ; for ( int i = 0 ; i < S ; i ++ ) int ss , tt , DD ; double ww ; cin >> ss >> tt >> ww >> DD ; // scanf("%d%d%lf%d", &ss, &tt, &ww, &DD); add ( ss , tt , ww , DD ) ; mod = max ( mod , DD + 1 ) ; // t ~ t + D 有 D + 1 个 for ( int i = 0 ; i < T ; i ++ ) int tt = i % mod ; // 脉冲 for ( int j = N ; j < N + P ; j ++ ) if ( r [ j ] > my_rand ( ) ) for ( int k = h [ j ] ; ~ k ; k = ne [ k ] ) int va = e [ k ] ; I [ ( tt + D [ k ] ) % mod ] [ va ] + = w [ k ] ; // 神经元 for ( int j = 0 ; j < N ; j ++ ) double vv = v [ j ] , uu = u [ j ] ; v [ j ] = vv + dt * ( 0.04 * vv * vv + 5 * vv + 140 - uu ) + I [ tt ] [ j ] ; u [ j ] = uu + dt * a [ j ] * ( b [ j ] * vv - uu ) ; if ( v [ j ] >= 30 ) for ( int k = h [ j ] ; ~ k ; k = ne [ k ] ) int va = e [ k ] ; I [ ( tt + D [ k ] ) % mod ] [ va ] + = w [ k ] ; cnt [ j ] ++ ; v [ j ] = c [ j ] ; u [ j ] + = d [ j ] ; memset ( I [ tt ] , 0 , sizeof I [ tt ] ) ; int minc = INF , maxc = - INF ; double minv = INF , maxv = - INF ; for ( int i = 0 ; i < N ; i ++ ) minv = min ( minv , v [ i ] ) ; maxv = max ( maxv , v [ i ] ) ; minc = min ( minc , cnt [ i ] ) ; maxc = max ( maxc , cnt [ i ] ) ; printf ( "%.3lf %.3lf\n" , minv , maxv ) ; printf ( "%d %d\n" , minc , maxc ) ; return 0 ;

四、其它题解

第23次CCF CSP认证 202109-3非脉冲神经网络

思路:先写一个暴力搜索,然后把中间结点的状态存起来,就是记忆化搜索,状态要存搜索到的层数和选择的卡牌数,0代表不选,1代表选,可以把16个卡牌是否选的状态压缩到2的16 方的一个int数中。 注意:1. 题目 有一个坑点, 题目 里的精度是骗人的,输出精度要达到1e-10才行,1e-5的精度会WA 2.dp数组第一维度保存层数,极端情况是是16张牌,一张牌概率0.9985,其他牌概率0.0001,k最大=5,所以树的深度最 int myrand(void){ Next = Next * 1103515245 + 1 23 45; return ((unsigned)(Next/65536)%32768); int N,S,P,T; double Dt;//Delta_t int rn; struct neural{ double v_pre,u_pre;
23 CSP 认证 --- 202109 第一题 :数组推导    (贪心)第二题 : 零段划分   (差分)第三题 : 脉冲神经网络 第四题 :收集卡牌 第一题 :数组推导    (贪心) 贪心循环一遍 在这里插入代码片 第二题 : 零段划分   (差分) 70分做法: 暴力,枚举 出现过的数字。 #include<bits/std c++ .h> #include<iostream> #define ll long long
这是我第一 参加 CSP ,一共得了260分,100,70,70,20,0。这两天试着写一下题解,因为还在准备C CSP ,没时间细写,大家哪里看不懂直接留言问我就好。 第一题:数组推导,100分 当时不是这么写的,当时建了三个数组,再写的时候发现没必要,记住上一个B的值就可以了,这样可以节省空间(虽然没太大必要) #include <bits/std c++ .h> #define For(i,n) for(int i=0;i<n;i++) using namespace std; int n;
在本题中,你需要实现一个 SNN(spiking neural network, 脉冲神经网络 )的模拟器。一个 SNN 由以下几部分组成: 神经元:按照一定的公式更新内部状态,接受脉冲并可以发放脉冲 脉冲源:在特定的时间发放脉冲 突触:连接神经元-神经元或者脉冲源-神经元,负责传递脉冲
CCF CSP 2021 T2 的 C 代码是指 CCF (China Computer Federation) 的 2021 年计算机职业资格 认证 考试 ( CSP : China Standard for Profession Certification) 的第二题的 C 代码。我不能提供具体的代码,因为我并没有这道题的题面和数据。 如果您需要帮助解决这道题,可以尝试提供 题目 的描述和数据范围,我会尽力帮助您解决问题。