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后和给 ...
随机推荐
- Java 操作PPT数字签名(一):添加、检测、删除签名
本文简要概述如何通过Java程序来处理PPT中的数字签名,文章主要分三个部分来介绍,即数字签名的添加.验证以及删除. 基本操作思路: 1. 添加签名:[加载PPT文档]→[添加签名]→[保存文档] 2 ...
- 前端知识-CS-01
一.选择器 通过什么方式来定位 1.sytle标签 style标签功能:写css样式的sytle标签的几种写法:1.可以在head里面添加一个style标签 2.在head标签中 通过link标签,引 ...
- Java中的映射Map - 入门篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的映射Map - 入门篇>,希望对大家有帮助,谢谢 简介 前面介绍了集合List,这里开始简单介绍下映射Map,相关类如下图所示 正 ...
- [树形DP]加分二叉树
加 分 二 叉 树 加分二叉树 加分二叉树 题目描述 设一个n个节点的二叉树tree的中序遍历为(l,2,3,-,n),其中数字1,2,3,-,n为节点编号.每个节点都有一个分数(均为正整数),记第j ...
- 设计原则:开闭原则(OCP)
1.什么是开闭原则 开闭原则的英文是Open Closed Principle,缩写就是OCP.其定义如下: 软件实体(模块.类.方法等)应该"对扩展开放.对修改关闭". 从定义上 ...
- 设计原则:单一职责(SRP)原则
1 什么是单一职责(SRP)原则 单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP.翻译过来就是:一个类或者模块只负责完成一个职责(或者功能). 所 ...
- 201871030110-何飞 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030110-何飞 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 ...
- OOUnit3Summary
一.JML基础梳理及工具链 jml语言基础 JML的全称是Java Modeling language,是一种行为接口规格语言,通过JML及其支持工具,不仅可以基于规格自动构造测试用例,还可用SMT ...
- 无线网络的应用之aircrack-ng
在kalilinux的aircracke-ng中.在这儿描述自己所遇到的问题并给予写blog 在使用之前,需要确定是否有对应的支持无线网卡监听的网卡,在虚拟机中需要先将网卡的驱动重定向到虚拟机内 在终 ...
- Java集合--Java核心面试知识整理(二)
目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 JAVA集合 2.1 接口继承关系和实现 2.2 List 2.2.1 ArrayList(数组) 2.2.2 ...