【解题报告】2016 Multi-University Training Contest 3

STM32L452与FPGA的I2C通信:时钟延展与OVR错误解决方案 嵌入式系统中,I2C总线以极少的引脚实现多设备通信,其开漏结构和时钟同步机制让设备间能够协同工作。时钟延展是从机在未准备好时主动拉低SCL以暂停主机传输的核心协议动作,但当主机未实现该等待逻辑时,总线将陷入死锁。在MCU与FPGA联调场景中,FPGA作为主机常采用固定时序状态机,忽略SCL回读,从而触发此类问题。本文从实际项目出发,解析STM32L452从机模式下NOSTRETCH位的配置原理,以及关闭延展后可能导致的OVR过载错误。针对OVR问题,对比了中断优先级提升、DMA搬运和降速三种治本方案,并给出 阅读详情

题目链接


A - Sqrt Bo(HDU 5752)

大意

定义 f(x) 的值为 x 开方后向下取整的结果。题给一个整数 n ,问满足 fy(n)=1 的最小的 y 是多少,如果这个 y 小于 5 则将它输出,否则输出TAT。

思路

当 n 值大到一定程度时,一定没法通过 5 次迭代得到 1 。我们将这个值算出来并将它赋值给upperBound。每当输入一个 n 个时候(注意要以字符串形式输入)我们就可以判断n与upperBound的关系,若比它大的话直接输出TAT(当心 n<1 的情况)。否则可以暴力迭代(不超过 5 次)算出结果。

代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll upperBound = 4294836224LL;
ll a;
string s;
stringstream ss;

int main() {
    while(cin >> s) {
        if(s.size() > 10) {
            puts("TAT");
            continue;
        }
        ss.clear();
        ss << s;
        ss >> a;
        if(a < 1 || a > upperBound) {
            puts("TAT");
            continue;
        }
        bool ok = false;
        for(int i = 0; i <= 5; i++) {
            if(a == 1) {
                cout << i << endl;
                ok = true;
                break;
            }
            a = (ll)floor(sqrt(1.0 * a));
        }
        if(ok == false) {
            puts("TAT");
        }
    }
    return 0;
}

B - Permutation Bo(HDU 5753)

大意

题给一个序列 c ,另规定 1−n 的排列为 h 。定义 f(h)=∑ni=1ci[hi>hi−1andhi>hi+1] 。求 f(h) 的期望值。

思路

根据本题的数据规模来看,肯定无法枚举排列然后算期望了。一个可行的思维是算出序列 c 中每个元素对期望的贡献。

  • 当考虑 c 的第 1 个元素 c1 时,我们只要考虑前两个元素的排列,当前两个元素呈现出 c1>c2 时 c1 的贡献就会被算进期望中。显然 c1>c2 的概率是 12 。

    • 当考虑 c 的第 2 个元素 c2 时,我们只要考虑前三个元素的排列,当前三个排列呈现出 c1<c2,c3<c2 时, c2 的贡献就回被算进期望中。显然这种排列的概率是 13 。
    • 第 3 到第 n−1 个元素的贡献与第 2 个元素的贡献相似。第 n 个元素的贡献与第 1 个元素的贡献相似。

    于是我们枚举每个元素,将其贡献加入期望中即可。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int n, a;
    double ans;
    
    int main() {
        while(~scanf("%d", &n)) {
            ans = 0;
            for(int i = 1; i <= n; i++) {
                scanf("%d", &a);
                if(i == 1 || i == n) {
                    ans += 1.0 * a / 2;
                }
                else {
                    ans += 1.0 * a / 3;
                }
            }
            if(n == 1) {
                printf("%.5f\n", 1.0 * a);
            }
            else {
                printf("%.5f\n", ans);
            }
        }
        return 0;
    }
    

    C - Life Winner Bo(HDU 5754)

    大意

    有两个人在国际象棋棋盘上用国际象棋一个棋子进行博弈,这个棋子可能是王,王后,城堡和骑士。棋子从坐标 (1,1) 出发,两个人轮流让棋子按照国际象棋规则走一次,先让棋子到达 (N,M) 的人获胜。问先手和后手谁是赢家。

    思路

    根据国际象棋棋盘的特点,该游戏可以抽象成从两个石子堆(分别有 N−1,M−1 个石子)中拿石子,先将所有石子拿完的人获胜的博弈模型。根据四个棋子的走法不同,抽象模型中拿石子的方法也会有所不同。下面就分棋子进行讨论。

    • 王:由于王可以在一次移动中横向,纵向或斜向移动一步,因此对应到拿石子模型中,当两堆石子的数量 N−1,M−1 都是偶数的时候当前状态是必败态(否则一定可以通过一次行动使得当前两堆石子的数量变成偶数)。
    • 城堡:由于城堡可以在一次移动中横向或者纵向移动任意步,因此对应到拿石子的模型中,与 NimGame 模型是一样的。因此只有 N=M 的时候先手失败,其余情况下是先手获胜(先手总可以令对方面对两堆石子数目相同的情况,这种情况是必败态)。
    • 骑士:由于骑士可以在一次移动中横移两步纵移一步或横移一步纵移两步,因此对应到拿石子模型中,相当于在 N−1,M−1 两堆石子中一堆拿一个,而另一堆拿两个。当 N−1+M−1 不是 3 的倍数的时候一定是平局。当它是 3 的倍数的时候,当 N=M 时一定是必败的,因为只要想脱离必败态(例如两堆石子分别 −1,−2 )就一定会被赶回必败态(例如两堆石子分别 −2,−1 )。若 N,M 不等且它们的差值为 1 时一定是必胜的,因为必定可以用一步把对手逼入必败态。
    • 王后:由于王后可以在一次移动中横向,纵向或斜向移动任意步,因此对应到拿石子的模型中,与 WythoffGame 模型是一样的。因此可以用公式 ai=⌊i×(1+5√)/2⌋,bi=ai+i 检验当前局势 (N−1,M−1) 是否是必败局势。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1000;
    char ch[] = {'G', 'D', 'B'};
    int t, type, n, m, ans, G[maxn+5][maxn+5];
    
    int king() {
        return n % 2 == 1 && m % 2 == 1 ? -1 : 1;
    }
    
    int castle() {
        return n == m ? -1 : 1;
    }
    
    int knight() {
        if(n > m) {
            swap(n, m);
        }
        if(n == m && (n - 4) % 3 == 0 && n >= 4) {
            return -1;
        }
        if(n % 3 == 2 && m % 3 == 0 && m - n == 1) {
            return 1;
        }
        return 0;
    }
    
    int queen() {
        if(n > m) {
            swap(n, m);
        }
        int a = n - 1, b = m - 1, k = m - n;
        double tmp = (1.0 + sqrt((double)5.0)) / 2.0;
        return (int)(k * tmp) == a ? -1 : 1;
    }
    
    int main() {
        scanf("%d", &t);
        while(t--) {
            scanf("%d%d%d", &type, &n, &m);
            if(type == 1) {
                ans = king();
            }
            if(type == 2) {
                ans = castle();
            }
            if(type == 3) {
                ans = knight();
            }
            if(type == 4) {
                ans = queen();
            }
            printf("%c\n", ch[ans+1]);
        }
        return 0;
    }
    

    J - Rower Bo(HDU 5761)

    大意

    主人公要驾船从平面直角坐标系中的 (0,a) 去到 (0,0) 。主人公的船相对水流的速度大小恒为 v1 ,方向始终朝向 (0,0) 。河流有一个垂直于 y 轴的速度 v2 。问主人公从出发到目的地要花多少时间。

    思路

    再思考无果的时候,不妨将问题转化一下:主人公从 (0,a) 出发,目的地以 v2 的速度向x轴正向移动,而水流是静止的。主人公始终以 v1 的速度朝向目的地移动,问主人公到达目的地的时间。
    设T为主人公要花的时间,另外主人公在 t 时刻的速度与 x 轴方向的夹角为 θ(t) 。我们考虑主人公在水平和竖直方向上方向上的运动情况,对水平方向有

    ∫T0v1cosθ(t)dt=v2T

    对竖直方向有

    ∫T0v1sinθ(t)dt=a

    此时还有一个条件没有利用,那就是主人公的速度方向始终朝向终点,那么对主人公当前位置到目的地的方向有

    ∫T0(v1−v2cosθ(t))dt=a

    最后联立这三个方程可得

    T=v1av21+v22

    于是原问题得解。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int a, v1, v2;
    
    int main() {
        while(~scanf("%d%d%d", &a, &v1, &v2)) {
            if(a == 0) {
                puts("0.00000");
            }
            else if(v1 <= v2) {
                puts("Infinity");
            }
            else {
                printf("%.5f\n", 1.0 * v1 * a / (v1 * v1 - v2 * v2));
            }
        }
        return 0;
    }
    

    K - Teacher Bo(HDU 5762)

    大意

    题给 n 个点 (x,y) ,并约定 0≤x,y≤m 。问是否能从这些点钟找出一个四元组 (A,B,C,D) ,使得二元组 (A,B) 与二元组 (C,D) 的曼哈顿距离相等。(这两个二元组不能相同)

    思路

    虽然看上去不同的二元组会很多,但是根据鸽巢原理,当 n(n−1)2(不同的二元组数)>2√m(不同的曼哈顿距离数时) ,所求的四元组是一定能够被找到的,因此即使我们暴力枚举所有的二元组,复杂度也将是 min(n(n−1)2,2√m) 。为了立即发现重复,我们需要一个数组 vis , vis[x]=true 表示曼哈顿距离为x的二元组已经出现过了。在 m 不是很大的情况下,维护这样一个数组的空间也不会超出限制。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e5 + 10;
    bool ok;
    int t, n, m, dx, dy, mht, x[maxn], y[maxn], vis[maxn];
    
    int main() {
        scanf("%d", &t);
        while(t--) {
            scanf("%d%d", &n, &m);
            for(int i = 1; i <= n; i++) {
                scanf("%d%d", &x[i], &y[i]);
            }
            memset(vis, 0, sizeof(vis));
            ok = false;
            for(int i = 1; i <= n; i++) {
                for(int j = i + 1; j <= n; j++) {
                    dx = abs(x[i] - x[j]);
                    dy = abs(y[i] - y[j]);
                    mht = dx + dy;
                    if(vis[mht] == true) {
                        ok = true;
                        i = n + 1;
                        break;
                    }
                    vis[mht] = true;
                }
            }
            puts(ok ? "YES" : "NO");
        }
        return 0;
    }
    

    (其它题目略)

2014 Multi-University Training Contest 3(标程) 立即下载

相关推荐

JLink 添加国产芯片手把手教程(雅特力 + 华大)

拷贝厂商算法文件夹 + 配置 JLinkDevices.xml。雅特力直接复制官方配置,华大按需添加芯片节点,操作一次,永久生效,以后调试 AT32、HC32 再也不用愁找不到型号。这套方法适配全版本 JLink,也是国产 MCU 替代项目的必备技能,看完照着做,新手也能轻松搞定。百度网盘资料分享:通过网盘分享的文件:jink驱动(包括新增芯片型号)链接: https://pan.baidu.com/s/14SLgrPfyof1lglD6VQguAw?pwd=cfuq 提取码: cfuq。

weixin_48867130的博客 713

【 2013 Multi-University Training Contest 3 】

HDU 4622 Reincarnation 枚举字符串的起点,构造后缀自动机,每次插入一个字符,就能统计得到当前不同字串的个数,预处理出所有的询问。 1 #include<cstdio> 2 #include<cstring> 3 #define MAXN 2010 4 #define MAXM 26 5 int res[MAXN][MAXN...

weixin_30547797的博客 156

Jitsi Meet保姆级自建教程:5分钟搞定私有化视频会议服务器(含Docker部署避坑指南)

本文提供了一份详尽的Jitsi Meet私有化视频会议服务器自建教程。通过Docker Compose部署方案,在5分钟内即可搭建基础服务,并深入解析了SSL/TLS证书配置、TURN服务器优化等关键步骤,确保部署的安全与可扩展性,为企业构建自主可控的远程协作平台提供完整指南。

weixin_29305337的博客 620

2013 Multi-University Training Contest 3 (g) The Unsolvable Problem

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4627 [a,b]=ab/(a,b) a,b和一定时,越接近乘积越大,在接近的同时,尽量保持公因子最少。 如果n为2*k+1 那么 取a=2k,b=2k+1 最佳。 如果n为偶数=2k,就要进一步分k的奇偶性了。 n=4k 时 显然2k+2k会很小 2k-1,2k+1 就满足了 (2...

weixin_34162629的博客 169

基于Python的MGWR多尺度地理加权回归模型

多尺度地理加权回归(MGWR)变量之间的关系在地理空间上不是均一的,所有特征变量的影响都在不同的空间范围(带宽)内变化,某些变量可能表现出局部性影响(小带宽),某些变量可能表现出全局性影响(大带宽),通过优化每个特征变量的带宽,捕捉到空间关系的多尺度特性,得到更细致的模型解释。

weixin_61965078的博客 3853

OpenCV自学记录(1)——(一拳超人)图像处理基础(图像获取、图像变化)

学习深度学习进行图像分类和目标检测时,要有一定的图像处理的基础。在学习深度学习之前,看了一本《图像处理技术基础》,现在也忘得差不多了,后悔当初没有整理记录下来。现在整理一下图像处理的常用方法,最后实现一个小项目——基于OpenCV的车牌号识别。 OpenCV自学记录(1)——图像处理基础(一)1、图像获取1.1获取图像数据1.2 获取摄像头图像数据2、图像变化2.1 移动(translation)...

qq_40784418的博客 1456

2013 Multi-University Training Contest 3

HDU-4622 Reincarnation 题意:给定一个字符串,有Q次询问,每次询问得出区间[L, R]内有多少个不同的子串。 分析:后缀数组搞,不过hash+dp也能够搞定这题,详解见http://www.cnblogs.com/Lyush/p/3233573.html。 #include &lt;cstdlib&gt; #include &lt;cstring&gt; #...

weixin_33978044的博客 136

YOLOv11魔改高效涨点 | 注意力篇 | SimAM注意力:基于神经科学的 3D 注意力机制,三维权重的暴力美学,无参数也能暴力涨点?代码极简,彻底疯狂!!!

在本文中,我们为卷积神经网络(ConvNets)提出了一个概念简单但非常有效的注意力模块。与现有的通道注意力(Channel-wise)和空间注意力(Spatial-wise)模块不同,我们的模块在不向原始网络添加参数的情况下,推断出层中特征图的 3D 注意力权重。具体来说,我们基于一些知名的神经科学理论,提出优化一个能量函数来寻找每个神经元的重要性。我们进一步推导出了该能量函数的快速闭式解,并表明该解可以用不到十行代码实现。

猫天意的博客 248

2016 Multi-University Training Contest 3 解题报告

1.1001-HDU 5752 Sqrt Bo 题意:给你一个整数n,问你需要经过几次开根号并向下取整的操作,使得值为1,超过5次输出"TAT"。 题解:开根号向下正得到1的最大的数为3.9999999……(约等于2^2),开根号向下取整得到4(2^2)的最大的数为15.9999999……(约等于2^4),…………可以得到能在五次之内开根取整得到1的最大值为2^32. 先判断边界是否超过2^

Keaper的博客 405

19、情境理论中的信息结构解析

本文系统解析了情境理论中的信息结构,从信息元(infon)的基本概念出发,深入探讨了关系结构与简单信息结构的构建方法,分析了标准信息结构所满足的一系列公理(如A1-A14),并阐述了角色、同一性、高阶信息、循环现象、参数适当性及信息元部分性等核心性质。通过具体示例和流程图展示了信息结构的构建过程,并对比了不同公理下的结构差异,最后讨论了该理论在与其他领域融合中的发展趋势及面临的挑战。

book8的博客 79

BurpSuite工具HaE插件好用正则收集

数据集合面板里面直接查询捕获到的相关数据内容,省去一个个翻找数据包内容的烦恼。插件捕获到匹配正则表达式的数据包后,可以在。可以对正则条目进行添加、编辑、删除。规则信息管理,我们点击。

墨痕诉清风的博客 652

2016 Multi-University Training Contest 3----解题报告

2016 Multi-University Training Contest 3----解题报告 1.HDOJ 5752(1001) Sqrt Bo         题意呢很简单就是告诉你一个数字,问你能不能在5次之内把这个数字开方出来等于1,但是和真正开始的唯一区别就是开方完以后需要向下取整,实际上就是保留整数部分即可。一开始拿到这个题目时候,都没怎么考虑,直接就用了Java大数,后来发现不

gscsdlz的博客 834

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 435

hdu5756 2016 Multi-University Training Contest 3 Boss Bo 解题报告

吐槽一下为什么绍兴一中出的题码量这么大 题意: 给你一个n个点,以1为根的树,Q个询问,每次问你如果把若干个点的子树删掉,剩下的点里面,到P点的距离和,距离的最大值或问距离的最小值,如果点删完了,就输出-1。强制在线的,每次给你一个p,实际的P=(p+lastans)%n +1,lastans是上次的答案,如果是-1或第一组询问,lastans=0。

L_0_Forever_LF的专栏 1232

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

hdu 5759 2016 Multi-University Training Contest 3 Gardener Bo 解题报告

这题。。。。不想评价了 题意:给一棵树,两个操作,每次将一个点和他的孩子,孙子节点的值+c 或询问 f(u), 题解: 对于每次加值的操作,我们可以分别算出对这些点加了c后,对于其他点的f值的贡献,官方题解给了公式,其实还是比较好懂的 然后对于4种贡献,我们分开维护 1:对于每个点,(size(v)+1)是固

L_0_Forever_LF的专栏 1120

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hdu5752 2016 Multi-University Training Contest 3 Sqrt Bo 解题报告

应号召.........又水了一发博客 题意大概是说,给你一个数n 看完觉得挺水的,事实上确实不难 打个表,看哪些值是1-5次向下取整的开根能取到1的极限,然后判一下大小就没问题了 (判大小打错了卡我好久.........毕竟蠢) #include #include #include #include #include #include #include

L_0_Forever_LF的专栏 648

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hdu5753 2016 Multi-University Training Contest 3 Permutation Bo 解题报告

题意是给你一个长度为n的序列c,然后h序列的1~n是1-n的一个排列,h[0] = h[n+1] = 0 , 定义 f( h ) = Σ c[i] ( h[i]>h[i-1] && h[i] > h[i+1] ) , 然后求这个 f( h ) 的期望

L_0_Forever_LF的专栏 1064

hdu5758 2016 Multi-University Training Contest 3 Explorer Bo 解题报告

感觉最近都没状态不知道为什么。。。。一道不难的题不会做,看了题解发现自己好蠢。。。。 题意:给一颗n个节点的树,问你用最少的链覆盖这棵树上所有的边(可以重复覆盖),链的长度和最小为多少 链的长度=覆盖的边的数量 题解: 树形DP 首先,如果要覆盖,最少需要(n+1)/2条链,链的两端肯定是2个叶子节点,如果叶子节点数是奇数,那么有一条链由一

L_0_Forever_LF的专栏 759

hdu5755 2016 Multi-University Training Contest 3 Gambler Bo 解题报告

这题打的我好伤心............. 题意:给一个N*M的矩阵,矩阵里的元素值为0,1,2中的一个,每次可以选择一个元素(x,y),他的值+2,上下左右四个值+1,矩阵里的元素如果超过2,他们需要 mod 3,问你怎么操作才能使矩阵里的所有元素都为0,输入数据保证有解。 题解的话,这类题一般是用高斯消元做的,设n*m个元素每个的操作次数为x[i],然后根据题意可以

L_0_Forever_LF的专栏 654

hdu5754 2016 Multi-University Training Contest 3 Life Winner Bo 解题报告

日常blog恩 题意:Bo 和他的女朋友 G 在一起玩游戏,游戏在一个N*M棋盘上进行,一开始有一个棋子在(1,1),谁先将棋子移到(N,M),谁就胜利,如果无法移到(N,M),则打平。 游戏有四种棋子, 第一种:王 第二种:车 第三种:马 第四种:后 棋子的走法和国际象棋相同,每次移动只能向右或者向下移动 题解: 可以将除了第三种游戏之外的游戏转化成在行

L_0_Forever_LF的专栏 588

2016 Multi-University Training Contest 7题解报告

2016 Multi-University Training Contest 7题解报告

queuelovestack的专栏 1793

2016 Multi-University Training Contest 1题解报告

2016 Multi-University Training Contest 1题解报告

queuelovestack的专栏 4287

2016 Multi-University Training Contest 5题解报告

2016 Multi-University Training Contest 5题解报告

queuelovestack的专栏 2148

2016 Multi-University Training Contest 6题解报告

2016 Multi-University Training Contest 6题解报告

queuelovestack的专栏 1662

2016 Multi-University Training Contest 2题解报告

2016 Multi-University Training Contest 2题解报告

queuelovestack的专栏 3331

2016 Multi-University Training Contest 8-1006 physics

2016 Multi-University Training Contest 8-1006 physics:http://acm.hdu.edu.cn/showproblem.php?pid=5826 题目描述: physics Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav

而濡木染 557
上一篇: 【解题报告】2016 Multi-University Training Contest 4
下一篇: 【专题总结】网络流与二分图(持续更新)
TRiddle
博客等级 码龄11年 14粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值