码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2022牛客多校八 F-Longest Common Subsequence(思维)


    题目:

    样例输入: 

    1. 2
    2. 4 3 1024 1 1 1 1
    3. 3 4 1024 0 0 0 0

    样例输出:

    1. 0
    2. 3

    题意:一开始给定两个序列的长度,然后给定一个初始值x,给定我们一个二次函数,让我们利用这个二次函数生成两个序列,下一个数的值为a*x*x+b*x+c,然后再让下一个元素的值作为x继续生成序列。先生成序列1,然后再利用改变后的x生成序列二,问我们生成的两个序列的最长公共子序列的长度是多少?

    分析:我们发现下一个函数值只跟当前的x有关,而且由于是一个函数,所以一个自变量x只对应一个因变量,所以我们只要找到两个序列中相同元素的最早出现位置,那么我们就可以保证在对应位置后面的元素都是对应相等的,所以问题就转化为了我们找两个序列中元素的对应相同的位置,这个直接用map存一下位置直接访问就好,比如某一个值x最早出现在第一个序列的i位置和第二个序列的j位置,那么以x作为开头的最长公共子序列长度就是min(n-i+1,m-j+1),遍历所有相同的元素即可得到答案。

    需要注意的一个点是由于每一个变量值都是int范围内的,但是a*x*x可能会爆int,所以我们要在a*x之后先对p取模再*x,这个地方容易wa,大家注意一下就好了,其他地方就没有什么问题了。

    细节见代码:

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. using namespace std;
    10. map<long long,int>mp;
    11. int main()
    12. {
    13. int T;
    14. cin>>T;
    15. while(T--)
    16. {
    17. mp.clear();
    18. long long n,m,p,x,a,b,c;
    19. scanf("%lld%lld%lld%lld%lld%lld%lld",&n,&m,&p,&x,&a,&b,&c);
    20. for(int i=1;i<=n;i++)
    21. {
    22. x=(a*x%p*x+b*x%p+c)%p;
    23. if(!mp.count(x)) mp[x]=i;
    24. }
    25. int ans=0;
    26. for(int i=1;i<=m;i++)
    27. {
    28. x=(a*x%p*x+b*x%p+c)%p;
    29. if(!mp.count(x)) continue;
    30. ans=max(ans,(int)min(m-i+1,n-mp[x]+1));
    31. }
    32. printf("%d\n",ans);
    33. }
    34. return 0;
    35. }
  • 相关阅读:
    预制菜迎来“黄金时代”,谁能领跑下一个万亿市场
    Java类的生命周期和子类实例化对象的过程
    CrossOver 23.6 让Mac可以运行Windows程序的工具
    全景解析 Partisia Blockchain:以用户为中心的全新数字经济网络
    maven-metadata.xml
    October 2019 Twice SQL Injection
    Spring Boot中JSON的数据结构和交互讲解以及实战(超详细 附源码)
    static的作用
    以程序员的身份使用curl获取速卖通详情
    ubuntu 22 某 clash 某 verge 软件界面无法正常显示
  • 原文地址:https://blog.csdn.net/AC__dream/article/details/126329377
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号