A.LCM Problem

题意:最小公倍数LCM(x,y),处于[l,r]之间,并且x,y也处于[l,r]之间,给出l,r找出x,y;

思路:里面最小的最小公倍数就是基于l左端点的,而那个最小公倍数就是2*l,直接判断2*l是否小于r

注意:当时看到最小公倍数,题目中提到了一个LCM(9,6)=18,就只想最大公因子、分解因式之类的问题,就想错了方向,wa的第一个是想的最大的数分解因式,结果TLE了。

  1. 1 #include<iostream>
  2. 2 #include<algorithm>
  3. 3 #include<cstdio>
  4. 4 #include<cstdio>
  5. 5 #include<cmath>
  6. 6 #include<cstring>
  7. 7 using namespace std;
  8. 8 int main(){
  9. 9 int t;
  10. 10 scanf("%d",&t);
  11. 11 while(t--){
  12. 12 long long int l,r;
  13. 13 scanf("%lld %lld",&l,&r);
  14. 14 int flag=0;
  15. 15 if(l*2<=r){
  16. 16 printf("%lld %lld\n",l,l*2);
  17. 17 }else{
  18. 18 printf("-1 -1\n");
  19. 19 }
  20. 20
  21. 21 }
  22. 22 }

B. Array Walk

题意:你的初始分数为a1,当你往左或者右边走的时候总分数就会加上所在位置的分数,不可以连续向左走,现在一共有n个位置,一共走k步,最多向左走z步,问所取得的最大分数是多少

思路:要把这个问题分开来看,你往左走的情况只有:1.往左走一步立即向右一步;2.提供的步数不够满足往左走完再往右走,只能是最后一步往左走一步;遍历找最大值

注意:这题必须用输入输出流的优化,并且定义数组的时候需要在外面,不然数组内放不下这么多数,因为是这样所以在循环内,数组必须每次都重置0再进行计算;

  1. 1 #include<iostream>
  2. 2 #include<algorithm>
  3. 3 #include<cstdio>
  4. 4 #include<cmath>
  5. 5 #include<cstring>
  6. 6 using namespace std;
  7. 7 const int maxx=2e5+3;
  8. 8 long long int a[maxx],b[maxx],sum[maxx];
  9. 9 int main(){
  10. 10 ios::sync_with_stdio(0);
  11. 11 cin.tie(0), cout.tie(0);
  12. 12 int t;
  13. 13 cin>>t;
  14. 14 while(t--){
  15. 15 int n,k,z;
  16. 16 cin>>n>>k>>z;
  17. 17 for(int i=1;i<=n;i++){
  18. 18 a[i]=0;
  19. 19 b[i]=0;
  20. 20 sum[i]=0;
  21. 21 cin>>a[i];
  22. 22 }
  23. 23 for(int i=1;i<=n;i++){
  24. 24 sum[i]+=sum[i-1]+a[i];
  25. 25 }
  26. 26 for(int i=2;i<=n;i++){
  27. 27 b[i]=a[i]+a[i-1];
  28. 28 }
  29. 29 long long int summ=sum[k+1];//第一种是一直向右走的,直接就是前缀和
  30. 30 for(int i=2;i<=n;i++){//i向右走,并且i是当前向右的位置坐标
  31. 31 for(int j=1;j<=z&&j<=k-i+1;j++){//向左走应该小于剩余步数并且小于z
  32. 32 if(j*2<=k-i+1){
  33. 33 summ=max(summ,j*b[i]+sum[i+k-i+1-j*2]);
  34. 34 //i+k-2*j-i+1 是最后的当前位置
  35. 35 }else if(j*2-1<=k-i+1){
  36. 36 summ=max(summ,(j-1)*b[i]+a[i-1]+sum[i]);
  37. 37 }
  38. 38 }
  39. 39 }
  40. 40 cout<<summ<<endl;
  41. 41 }
  42. 42 }

C. Good String

题意:字符串有做循环位移和右循环位移两种操作。例如字符串“123456”,如果进行左循环位置后得“234561”,如果进行右循环位移后得“612345”。我们称一个字符串为好的,当且仅当它进行左循环位移和右循环位移后相等。现在给定一个字符串只包含0-9,可以删除字符串中某些字符,要求最少删除多少个字符串可以让字符串边好。

思路:要满足左右循环位移一位后字符串完全相等,那么字符串要么全由一个字符串组成,例如,’111111‘,或者只有两个字符循环出现,例如样例中的“2525252525”。那么我们就可以去构造字符串,然后去判断。只有一个字符的时候只要记录一下每个字符出现的次数即可。如果是两个字符循环出现的话,可以枚举剩下的两个字符,然后去和原字符串匹配。复杂度为10*10*n。

Educational Codeforces Round 92 (Rated for Div. 2)的更多相关文章

  1. Educational Codeforces Round 92 (Rated for Div. 2) B、C题解

    TAT 第一场codeforces B. Array Walk #暴力 #贪心 题目链接 题意 有\(a1, a2, ..., an\) 个格子(每个格子有各自分数),最初为1号格(初始分数为\(a1 ...

  2. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  3. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  4. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  5. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  6. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...

  7. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...

  8. Educational Codeforces Round 63 (Rated for Div. 2) 题解

    Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...

  9. Educational Codeforces Round 39 (Rated for Div. 2) G

    Educational Codeforces Round 39 (Rated for Div. 2) G 题意: 给一个序列\(a_i(1 <= a_i <= 10^{9}),2 < ...

随机推荐

  1. Java 语言基础 (初识Java语言, 变量和数据类型, 运算符, 流程控制语句, 数组)

    初始 Java 语言 Java SE -- Java Platform, Standard Edition 是 Java 平台的基础 Java SE 以前称为 J2SE, 可以编写桌面应用和基于 we ...

  2. PTA 线性表元素的区间删除

    6-8 线性表元素的区间删除 (20 分)   给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: ...

  3. (4)MySQL进阶篇SQL优化(常用SQL的优化)

    1.概述 前面我们介绍了MySQL中怎么样通过索引来优化查询.日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如 INSERT.GROUP BY等.对于这些SQL语句,我们该怎么样进行 ...

  4. Redis扩展数据类型详解

    在Redis中有5种基本数据类型,分别是String, List, Hash, Set, Zset.除此之外,Redis中还有一些实用性很高的扩展数据类型,下面来介绍一下这些扩展数据类型以及它们的使用 ...

  5. 计算机体系结构——CH5 标量处理机

    计算机体系结构--CH5 标量处理机 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH5 标量处理机 先行控制技术 指令得重叠执行方式 顺序执行方式 一次重叠执行方式 二次重叠技术 ...

  6. 全网最详细的Linux命令系列-nl命令

    nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...

  7. 痞子衡嵌入式:从头开始认识i.MXRT启动头FDCB里的lookupTable

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT启动头FDCB里的lookupTable. 一个MCU内部通常有很多外设模块,这些外设模块是各MCU厂商做差异化产品的本质, ...

  8. vue+quasar+electron+springboot+mysql撸一个TODO LIST 看板

    先看效果 写本项目的目的有几点: 学习下vue+electron桌面开发 学习下java和spring开发(本人一直使用PHP) 一直缺少一款能适合自己的TODO LIST软件,能有桌面端的 可直接打 ...

  9. OO_Unit3_Summary

    JML这一单元是真的有含金量,很有难度.而且这难点和前两单元完全不同,前两单元是容易架构混乱导致细节出问题,JML单元是读不懂JML规格的话架构都构不出来,以及即使能够读懂JML规格了,让自己写规格的 ...

  10. nmap使用/参数,及绕过防火墙

    nmap是什么? 它是一种一个很强大的扫描工具,端口,版本号,统统都可以给你扫出来 我的IP网段:192.168.1.0 咱们先找一个主机随便玩玩把,反正没有害处,最多被防火墙拦截了 nmap -sP ...