Codeforces Round #704 (Div. 2)
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)的更多相关文章
- Codeforces Round #704 (Div. 2), problem: (C) Maximum width还是要多学习
Problem - C - Codeforces 看清题目要求, 最重要部分在第二段. 大佬最后给出的代码果然简单, 思路简单化, 未必非要把答案在一个大括号里全部完成, 两个指针同时跑,中间加了一堆 ...
- 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 ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- 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 ...
- 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 ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- 前端-CS-04
一:DOM(文档对象模型) document 简写DOM 1.DOM中定义变量用 var 如下截图中:定义demo变量 2.取一个input输入框中的值的方法: 1)先如1中,在dom中顶一个一个变 ...
- CMS前世今生
CMS一直是面试中的常考点,今天我们用通俗易懂的语言简单介绍下. 垃圾回收器为什么要分区分代? 如上图:JVM虚拟机将堆内存区域分代了,先生代是朝生夕死的区域,老年代是老不死的区域,不同的年代对象有不 ...
- 第16 章 : 深入理解 etcd:基于原理解析
深入理解 etcd:基于原理解析 本文将主要分享以下三方面的内容: 第一部分,会为大家介绍 etcd 项目发展的整个历程,从诞生至今 etcd 经历的那些重要的时刻: 第二部分,会为大家介绍 etcd ...
- [游记]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− ...
- C#补位函数PadLeft和PadRight
左边补位 PadLeft 用法: string str = "100"; str.PadLeft(5,'0') 输出:00100 右边补位 PadRight 用法: str.Pad ...
- UnitThreeSummary
目录 一.JML的梳理与总结 二.SMT Solver的部署与验证 三.JMLUnitNG的部署与测试 四.作业的设计与总结 第一次作业 第二次作业 第三次作业 五.BUG 六.总结与反思 一.JML ...
- SpringCloud LoadBalancer灰度策略实现
如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案 快速上手 ...
- @Transactional+@Autowired出现的lateinit property xx has not been initialized错误
1 问题描述 用Kotlin编写Spring Boot,在业务层中使用@Transactional+@Autowired时出现如下错误: lateinit property dao has not b ...
- Java面向对象OOP思想概述
目录 OOP思想(Object Oriented Programming) 类和对象 接口 抽象类 OOP三大特性 封装 继承 多态 OOP复用的形式 OOP思想(Object Oriented Pr ...
- Jenkins 分布式和并发构建
1. 分布式构建 1.1 添加 linux 节点 1.2 添加 windows 节点 2. 并发构建 2.1 原理 2.2 示例:分别用 chrome/IE/Firefox 并行测试 1. 分布式构建 ...