CSP-38th

目录

1.正态分布

2.走马

3.信息传输

4.字符串可能性个数

5.最多访问节点个数


1.正态分布

本来是很简单的一道模拟题,根据 (n-u) /a 的整数位、十分位确定是在第几行,根据百分位确定是在第几列,但是我直接将 (n-u)/a 乘以100后进行 // 和 % ,忽略了题目中说了 “a是100的因数” ,那么如果我不在第一时间 (n-u)* 100/a 的话会导致小数上的差异。

这个问题我检查了很久才发现,影响了做题节奏,所以还是要先看清楚题目意思,注意题目细节

2.走马

在棋盘上,一棋子从起点按照马的走法,走k步,请问能到的所有可能方块数

太久没做题了,我第一时间竟然发昏地用DFS,注意:这道题是有k步这个条件的,有些节点虽然在前面路径中了,已经add在vis里面,导致提前扼杀了这个点,但是有可能这个点在其他路径里面是较新点,如果你直接杀死他的话会导致他后面的可能性被忽略

虽然可以取消vis的剪纸,坚持add不会影响最后 len(vis) 的个数,但是这样的时间复杂度就过高了

所以像这种k步的想都不用想直接BFS即可

3.信息传输

这道题目就题面长度都有个五六页,真的看都不想看了

4.字符串可能性个数

确定了字符串长度n,中间参杂了m个 # 号,要求至少有一个 cff 字符串在另一个具体什么字符串我忘记了反正长为6

题目解析:# 号将这个长为 n 的空间分割为 m+1 段空间,要求其中要符合上面的要求,其他的随便26字符即可

那么先开个 l 数组,记录 m+1 段空间的长度,再根据长度 3 、6 、9(3+6) 进行挂标记 flag1、flag2、flag3

到时候我们需要实现的要求就是 至少有一个cff在长为6的字符串2左边,这个要求可以用 f2 存储,那么它需要的前置条件就是前面出现过 cff,这个用 f1 存

那么我们的 dfs 搜索树就是从字符串空间的左边到右边的,逐步实现 f1、f2

def dfs(step,now,f1,f2):
#step:当前所在字符串区间
#now:当前搜索路径上的字符串可能数
#f1:前面是否有字符串1
#f2:前面是否有字符串2

    if step==m+1:#总共m+1段
        if f2:
            ans=(ans+now)%MOD
        return

    zong=26**l[step]#总共可能数:每个位置都是26个字符

    if step in flag1:#从长度更长开始,因为长度越长可能性越多
        if f2:
            dfs(step+1,now*zong,1,1)
        else:
            if f1:#当前面有f1时可以凑f2
                now1=(l[step]-6+1)*26**(l[step]-6)
                dfs(step+1,now1,1,1)

                now2=zong-now1#也可以不凑,那么就是总可能减去上一个分支
                dfs(step+1,now2,1,0)
            else:
                '''
                后面的类似,主要是维护 f1 和 f2
                '''

5.最多访问节点个数

这个问题是一个图论,主要的大意如下:

有很多个浏览节点目标集,对于每个浏览节点目标集

        在所有节点中有一个节点会被损坏,现在对所有可能性进行求和,也就是 西格玛f(x) ,这里的x就是被损坏的节点

                而且我们的起点也是不固定的,所以要求的是最佳起点,使得上面的 f(x)和最大,也就是 f(x)=max{ f(x,y) } 其中x是断点,y是假设起点

#输入是双向路,到时候我们用链表结构串起来即可

def dfs(i,now):#i是断点
    for new in d[now]:
        if new==i:
            continue
        if new not in vis:
            vis.add(new)
            dfs(i,new)

for l in c:#目标节点集
    su=0
    for i in range(1,n+1):#需要求max
        ma=0
        for j in range(1,n+1):#需要求每个 y 时的值
            vis=set()
            if j!=i:
                vis.add(j)
            #执行bfs获取vis
            #然后判断vis中有多少在目标集中
            for li in l:
                if li in vis:
                    cnt+=1
        su+=cnt
    print(su)

<think>嗯,用户的问题是关于在加载时遇到的无效X-Frame-Options头错误,具体是“allow-from* is not a recognized directive”。首先,我需要确认用户可能遇到了什么样的错误,以及他们是在什么情况下遇到这个问题的。X-Frame-Options是用来控制网页能否被嵌入到iframe中的HTTP头,防止点击劫持攻击。常见的指令有DENY、SAMEORIGIN,以及被废弃的ALLOW-FROM。 用户提到的错误信息指出“allow-from*”不是一个被识别的指令。这可能是因为用户或者他们使用的网站配置X-Frame-Options时,错误地写成了“allow-from*”而不是正确的“ALLOW-FROM”(虽然这个指令已经被废弃)。或者是想使用通配符*,但语法不正确。 接下来,我需要考虑用户可能的背景。他们可能是开发人员,正在尝试配置服务器以允许某些页面被嵌入到iframe中,但遇到了配置错误。或者他们可能是一个网站管理员,在处理安全设置时遇到了问题。此外,用户可能对HTTP头的细节不太熟悉,需要简明扼要的解释和解决方案。 用户的需求是了解这个错误的原因以及如何解决它。他们可能已经尝试过使用ALLOW-FROM指令,但发现不管用,或者误用了语法。需要解释为什么ALLOW-FROM不再被推荐,并推荐替代方案,如Content-Security-Policy的frame-ancestors指令。 可能还需要指出常见的错误写法,比如拼写错误、大小写不正确,或者遗漏了URI参数。此外,要强调现代浏览器对ALLOW-FROM的支持情况,引导用户使用更被广泛支持的CSP方法。 另外,用户可能没有意识到X-Frame-Options和Content-Security-Policy的区别,需要简单比较两者,并说明为什么CSP是更好的选择。提供具体的配置示例会有帮助,比如如何设置CSP的frame-ancestors来允许特定域名。 最后,确保回答清晰、分步骤,并避免使用过于专业的术语,让不同技术水平的用户都能理解。同时,提醒用户如果必须使用X-Frame-Options的ALLOW-FROM,需要注意浏览器兼容性问题,可能大部分现代浏览器已不再支持,导致设置无效。</think>你遇到的错误信息 **"invalid X-Frame-Options header encountered: 'allow-from*' is not a recognized directive"** 表示服务器在尝试设置 `X-Frame-Options` 响应头时使用了无效的语法或不被支持的指令。以下是详细解释和解决方法: -- ### **错误原因** `X-Frame-Options` 是一个 HTTP 响应头,用于控制网页是否允许被嵌入到 `<iframe>` 或 `<frame>` 中,主要防止点击劫持攻击。它的合法指令包括: - **`DENY`**:禁止任何页面嵌入。 - **`SAMEORIGIN`**:仅允许同源域名下的页面嵌入。 - **`ALLOW-FROM uri`**:允许特定 URI 的页面嵌入(*已逐渐被现代浏览器废弃*)。 你的错误是由于: 1. **指令拼写错误**:你使用了 `allow-from*`(可能包含多余的 `*` 通配符,或大小写错误)。 2. **不支持的语法**:部分浏览器已不再支持 `ALLOW-FROM` 指令(如 Chrome 和 Edge),导致即使语法正确也会报错。 --- ### **解决方案** #### 1. **直接修复 `X-Frame-Options` 语法** - 若必须使用 `ALLOW-FROM`(需注意浏览器兼容性): ```http X-Frame-Options: ALLOW-FROM https://example.com ``` - 确保指令全大写,且指定完整的 URL(不能使用通配符 `*`)。 - 更推荐改用 `SAMEORIGIN` 或 `DENY`: ```http X-Frame-Options: SAMEORIGIN ``` #### 2. **改用 `Content-Security-Policy` (推荐)** 现代浏览器更推荐通过 `Content-Security-Policy` (CSP) 的 `frame-ancestors` 指令替代 `X-Frame-Options`,因为它更灵活且支持通配符: ```http Content-Security-Policy: frame-ancestors 'self' https://example.com; ``` - `'self'`:允许同源域名嵌入。 - `https://example.com`:允许指定域名嵌入(可添加多个,用空格分隔)。 - `'none'`:完全禁止嵌入。 --- ### **常见错误示例** - ❌ `X-Frame-Options: allow-from https://example.com` *错误原因:指令应为全大写 `ALLOW-FROM`。* - ❌ `X-Frame-Options: ALLOW-FROM *` *错误原因:不允许使用通配符,必须指定完整 URI。* - ❌ `X-Frame-Options: ALLOW-FROM` *错误原因:缺少目标 URI 参数。* --- ### **总结** - 若需精准控制嵌入来源,优先使用 `Content-Security-Policy: frame-ancestors`。 - 若使用 `X-Frame-Options`,确保指令拼写正确,并注意 `ALLOW-FROM` 的浏览器兼容性问题。 - 测试工具推荐:通过浏览器开发者工具的 **Network** 标签检查响应头是否生效。 希望以上信息能帮助你解决问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ceilf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值