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
;
int
my_rand
(
)
{
next1
=
next1
*
1103515245
+
12345
;
return
(
(
unsigned
)
(
next1
/
65536
)
%
32768
)
;
int
main
(
)
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
;
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
;
add
(
ss
,
tt
,
ww
,
DD
)
;
mod
=
max
(
mod
,
DD
+
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 代码。我不能提供具体的代码,因为我并没有这道题的题面和数据。
如果您需要帮助解决这道题,可以尝试提供
题目
的描述和数据范围,我会尽力帮助您解决问题。