Memory Overflow(队列+模拟)

本文介绍了一道名为MemoryOverflow的编程题,通过队列和模拟的方法解决了一个关于记忆力的问题。题目要求统计在连续n天内,主人公能够认出之前k天内见过的人物数量。

Memory Overflow(队列+模拟)

题目描述

The Great Sultan Mahbub is having some serious issues with his memory. His busy days filled with great works and surrounded by even greater people have brought him to a situation where he has become quite forgetful. For example, he often forgets trivial things like the size of his suit, his weight,small grammatical issues related to gender & number, the address of his in-laws house, how to ride a cycle, deadlines, the day of the week, the name of the guy who forgot his wedding day and even the date of his own wedding (thus spending the day writing alternate solutions to ICPC problems). But when his father-in-law captured him to his in-laws house and he failed to recognize his mother-in-law it became a fiasco. And after some rather presumable events following that debacle, the detail of which does not seem really safe to mention, he decided that the matter has become pressing enough for his attention. His physician is startled by this weird problem and decides to collect statistical data to begin with.
During the examination period consisting n consecutive days, the Sultan meets a single person everyday. He only recognizes the person if he has met him in the last k days (excluding today of course). You need to count the number of days (among these n days) he manages to recognize the people he meets. You can assume that before these n consecutive days he did not meet any person.

输入

The input begins with a number t (1 ≤ t ≤ 100), the number of test cases. Each of the following lines contains a case. A case begins with n (1 ≤ n ≤ 500) & k (1 ≤ k ≤ 500). A list of n names follows. All
names consist of a single uppercase letter and names are unique. They are given in the order of which Sultan meets them during the investigation. There won’t be any invalid character or space between
any two names.

输出

For each test case produce a line of the form ‘Case X: Y ’. X is the serial number of the test case while Y is the number of people Sultan recognizes.
Illustration of Third sample:
Day 1: Sultan remembers nobody, meets ’M’. Does not recognize.
Day 2: Remembers only ’M’ but meets ’A’. Does not recognize again.
Day 3: Now remembers ’M’ & ’A’. Meets ’H’. Recognition count remains 0.
Day 4: Forgets ’M’, remembers ’A’ & ’H’. Meets ’B’. Still nothing happens.
Day 5: Forgets ’A’, remembers ’H’ & ’B’. Meets ’U’. No luck yet.
Day 6: Forgets ’H’, remembers ’B’ & ’U’. Meets ’B’ again and recognizes this time making the recognition count 1.

样例输入 

3
6 2 SULTAN
6 1 MAHBUB
6 2 MAHBUB

样例输出 

Case 1: 0
Case 2: 0
Case 3: 1

思路:这道题的意思就是一个人记性不好,记不住东西,第一个数字代表有几个测试用例,第二行第一个数字代表这个人将要遇见的人数,第二个是能最多记住的人数,第三个字符串是他将要遇见的人。一看到就想到了队列,每次都往这个队列里面添加元素,如果队列的长度超过了他能记住的人数,那么就出队,最后判断每次新遇见的人在不在这个队列中,在的话就+1,不在就继续,附上AC代码(这里是使用java的ArrayList模拟队列)

import java.util.ArrayList;
import java.util.Scanner;

public class Main
{
    public static void main(String[] argc)
    {
        Scanner in = new Scanner(System.in);
        int n = 0;
        int case_num = 0;
        n = in.nextInt();
        while(n-- > 0)
        {
            int num = in.nextInt();
            int len = in.nextInt();
            int cnt = 0;
            String s = in.next();
            ArrayList<Character> memory = new ArrayList<>();

            for(int i = 0; i < s.length(); ++i)
            {
                if(memory.contains(s.charAt(i)))
                {
                    cnt++;
                }
                memory.add(s.charAt(i));
                if(memory.size() > len)
                {
                    memory.remove(0);
                }
            }

            System.out.println("Case " + ++case_num + ": " + cnt);
        }

    }
}

 

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值