A. Three swimmers

题意:第一个人跳水是每隔a分钟去一次,第二个人跳水是每隔b分钟,第三个人跳水是每隔c分钟,一个人准备在p分钟的 时候去跳水,问需要最少等待多长时间才能轮到前三个人

思路:数学公式进行找,从头到尾挨个人找就行不用混着,混着也没有办法下手

当时:1)当时想着从头开始然后一直用while循环,根本想不到用数学公式,也没有想到是分开来计算的

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;
7 int main(){
8 int t;
9 scanf("%d",&t);
10 while(t--){
11 long long int p,a,b,c;
12 long long int cc=1e18;
13 scanf("%lld %lld %lld %lld",&p,&a,&b,&c);
14 long long int aa=a,bb=b,pp=p,t=c;
15 long long int a1,b1,c1;
16 if(p%a!=0){
17 a1=((p/a)+1)*a-p;
18 }else{
19 a1=0;
20 }
21 if(p%b!=0){
22 b1=((p/b)+1)*b-p;
23 }else{
24 b1=0;
25 }
26 if(p%c!=0){
27 c1=((p/c)+1)*c-p;
28 }else{
29 c1=0;
30 }
31 cc=min(cc,a1);
32 cc=min(cc,b1);
33 cc=min(cc,c1);
34
35 printf("%lld\n",cc);
36 }
37 }

B. Card Deck

题意:就是给定一组数列,然后这是一摞牌从最底下往上的顺序,然后进行选牌,让最大在下面,保证数值最大

思路:就是直接从后往前把最大的选出来就行了,其实也是暴力循环找,从后往前,因为数字是从1-n标记的,第一个就是找n,把n和它之后的数组进行输出并标记一下,然后再通过标记找下一个最大值

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;
7 const int maxx=1e5+10;
8 int main(){
9 int t;
10 scanf("%d",&t);
11 while(t--){
12 int n;
13 int a[maxx],b[maxx]={0};
14 scanf("%d",&n);
15 for(int i=0;i<n;i++){
16 scanf("%d",&a[i]);
17 }
18 int t=n,now=n-1;
19 for(int i=n-1;i>=0;i--){
20 if(a[i]==t){
21 for(int j=i;j<=now;j++){
22 printf("%d ",a[j]);
23 b[a[j]]=1;
24 }
25 now=i-1;
26 for(int j=t;j>0;j--){
27 if(b[j]==0){
28 t=j;
29 break;
30 }
31 }
32 }
33 }
34 printf("\n");
35 }
36 }

C. Maximum width

题意:两个数组,第二个数组包含在第一个里面,问其宽度最大是多少

思路:最大肯定是前面的在最左边,后面的在最右边,然后开两个数组,一个记录第二个数组,每一个字符在第一个字符串中最左边的位置,一个记录在最右边的位置,然后通过记录找到最大最小的差值是多少

记:1)思考极端情况,分出最左最右;2)分别进行计算,尤其是很多形式一样的思路和公式之类的东西;3)找对应位置最左最右的时候,应该学习一下这中想法,最开始把它想象成一对一的那种,所以如果是一对一就应该每次减一,然后在这个基础上进行加加减减的变化找到对应位置

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;
7 const int maxx=2e5+10;
8 int main(){
9 int n,m;
10 scanf("%d %d",&n,&m);
11 char a[maxx],b[maxx];
12 getchar();
13 for(int i=1;i<=n;i++){
14 scanf("%c",&a[i]);
15 }
16 getchar();
17 for(int i=1;i<=m;i++){
18 scanf("%c",&b[i]);
19 }
20 int l[maxx],r[maxx];
21 r[m+1]=n+1;
22 for(int i=m;i>0;i--){
23 r[i]=r[i+1]-1;
24 while(a[r[i]]!=b[i]){
25 r[i]--;
26 }
27 }
28 /* printf("%s\n",a);
29 printf("%s\n",b);*/
30 l[0]=0;
31 for(int i=1;i<=m;i++){
32 l[i]=l[i-1]+1;
33 while(a[l[i]]!=b[i]){
34 l[i]++;
35 }
36 }
37 /* for(int i=0;i<=m+1;i++){
38 printf("%d ",l[i]);
39 }
40 printf("\n");
41 for(int i=0;i<=m+1;i++){
42 printf("%d ",r[i]);
43 }
44 printf("\n");*/
45 int maxn=0;
46 for(int i=1;i<m;i++){
47 maxn=max(r[i+1]-l[i],maxn);
48 }
49 printf("%d\n",maxn);
50 }

这一套题:要想着很多东西不要混着,混着算可能很麻烦,要分开考虑和计算

Codeforces Round #704 (Div. 2)的更多相关文章

  1. Codeforces Round #704 (Div. 2), problem: (C) Maximum width还是要多学习

    Problem - C - Codeforces 看清题目要求, 最重要部分在第二段. 大佬最后给出的代码果然简单, 思路简单化, 未必非要把答案在一个大括号里全部完成, 两个指针同时跑,中间加了一堆 ...

  2. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  3. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  4. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  7. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  8. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

随机推荐

  1. 前端-CS-04

    一:DOM(文档对象模型) document 简写DOM 1.DOM中定义变量用 var  如下截图中:定义demo变量 2.取一个input输入框中的值的方法: 1)先如1中,在dom中顶一个一个变 ...

  2. CMS前世今生

    CMS一直是面试中的常考点,今天我们用通俗易懂的语言简单介绍下. 垃圾回收器为什么要分区分代? 如上图:JVM虚拟机将堆内存区域分代了,先生代是朝生夕死的区域,老年代是老不死的区域,不同的年代对象有不 ...

  3. 第16 章 : 深入理解 etcd:基于原理解析

    深入理解 etcd:基于原理解析 本文将主要分享以下三方面的内容: 第一部分,会为大家介绍 etcd 项目发展的整个历程,从诞生至今 etcd 经历的那些重要的时刻: 第二部分,会为大家介绍 etcd ...

  4. [游记]2020/CSP - S总结

    2020 / C S P − S 总 结 2020/CSP - S总结 2020/CSP−S总结 这年的 C S P CSP CSP考的不是很理想,本来稳进的 C S P − J CSP-J CSP− ...

  5. C#补位函数PadLeft和PadRight

    左边补位 PadLeft 用法: string str = "100"; str.PadLeft(5,'0') 输出:00100 右边补位 PadRight 用法: str.Pad ...

  6. UnitThreeSummary

    目录 一.JML的梳理与总结 二.SMT Solver的部署与验证 三.JMLUnitNG的部署与测试 四.作业的设计与总结 第一次作业 第二次作业 第三次作业 五.BUG 六.总结与反思 一.JML ...

  7. SpringCloud LoadBalancer灰度策略实现

    如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案 快速上手 ...

  8. @Transactional+@Autowired出现的lateinit property xx has not been initialized错误

    1 问题描述 用Kotlin编写Spring Boot,在业务层中使用@Transactional+@Autowired时出现如下错误: lateinit property dao has not b ...

  9. Java面向对象OOP思想概述

    目录 OOP思想(Object Oriented Programming) 类和对象 接口 抽象类 OOP三大特性 封装 继承 多态 OOP复用的形式 OOP思想(Object Oriented Pr ...

  10. Jenkins 分布式和并发构建

    1. 分布式构建 1.1 添加 linux 节点 1.2 添加 windows 节点 2. 并发构建 2.1 原理 2.2 示例:分别用 chrome/IE/Firefox 并行测试 1. 分布式构建 ...