Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2)
A. Prison Break
题意:就是在一个n*m的矩阵中,以(1,1)为起点(n,m)为终点,每个点以每个单位1s的速度移动,问总共至少需要多少秒,所有的矩阵点就能够全部移动到(r,c)中
思路:直接计算横坐标中最大需要多少秒,用最左边的点和最右边的点到r比较,纵坐标也是如此,然后算两者最大的加和
代码:
1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;//15.23
7 int main(){
8 int n;
9 scanf("%d",&n);
10 while(n--){
11 int a,b,c,d;
12 scanf("%d %d %d %d",&a,&b,&c,&d);
13 int maxx1=max(abs(a-c),abs(c-1));
14 int maxx2=max(abs(b-d),abs(d-1));
15 printf("%d\n",maxx1+maxx2);
16 }
17 }
B. Repainting Street
题意:给出n个数,可以每次从这组数中连续选k个,选中的k个数可以变化也可以不变化,问最少多少次,才能把这n个数全部变为1个数
思路:暴力模拟,模拟的应该是以这100个数为基准,因为这些元素的范围是从1-100,然后再去遍历数组,如果数组中存在这个数,那么就直接进行下标+k,到下一个位置,循环遍历,直到n结束(学会从已知多的方面入手,并且所知道的范围就比较小,直接跳跃式遍历,进行数组元素的修改)
代码:
1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;//15.23
7 int main(){
8 int n;
9 scanf("%d",&n);
10 while(n--){
11 int n,k;
12 scanf("%d %d",&n,&k);
13 int a[n],sign[110]={0};
14 for(int i=0;i<n;i++){
15 scanf("%d",&a[i]);
16 sign[a[i]]=1;
17 }
18 int sum=1e5+10;
19 for(int i=0;i<=100;i++){
20 if(sign[i]){
21 int temp=0;
22 for(int j=0;j<n;j++){
23 if(a[j]!=i){
24 temp++;
25 j+=k-1;
26 }
27 }
28 if(temp<sum){
29 sum=temp;
30 }
31 }
32 }
33 printf("%d\n",sum);
34 }
35 }
C.Bouncing Ball
题意:给出一个长度为n的字符串,只有0和1构成,然后从第p个位置开始,p+k,p+2k,....,一直到n,所在的位置必须全部都是1,现在有两个操作,一个是把相对第一个去掉花费x,二是把指定位置的0变成1花费y,问满足题目中的条件时至少需要花费多少钱
思路:后缀和的思想,有点偏一维的dp,从最后一个位置开始统计0的个数,当i+k<=n时,花费的前就是当前位置和第i+k个位置总共多少,因为只要是一个位置定了,它在此操作中的所有位置就都定了
代码:
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
9 int main(){
10 int nn;
11 scanf("%d",&nn);
12 while(nn--){
13 int x,n,y,p,k;//n总数,p最初的位置,k跳跃的格数
14 scanf("%d %d %d",&n,&p,&k);
15 char a[maxx];
16 int b[maxx]={0};
17 getchar();
18 for(int i=1;i<=n;i++){
19 scanf("%c",&a[i]);
20 }
21 scanf("%d %d",&x,&y);
22 for(int i=n;i>=1;i--){
23 if(a[i]=='0'){
24 if(i+k<=n){
25 b[i]+=b[i+k]+x;
26 }else{
27 b[i]=x;
28 }
29 }else{
30 if(i+k>n){
31 b[i]=0;
32 }else{
33 b[i]=b[i+k];
34 }
35 }
36
37 }
38 long long int sum=1e30;
39 for(int i=p;i<=n;i++){//按1算实在是太复杂,还得推算出具体有多少步的1
40 long long int temp=0;
41 temp=b[i];
42 sum=min(sum,temp+(i-p)*y);
43 }
44 long long int s=(n-p+1)*x;
45 sum=min(s,sum);
46 printf("%d\n",sum);
47 }
48 }
Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2)的更多相关文章
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) D. XOR-gun (二进制,异或,前缀和)
题意:给你一组非递减的数,你可以对两个连续的数进行异或,使其合并为一个数,问最少操作多少次使得这组数不满足非递减. 题解:首先,给出的这组数是非递减的,我们考虑二进制,对于三个连续的非递减的最高位相同 ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) C. Bouncing Ball (后缀和,枚举)
题意:有一长度为\(n\)的平台,平台有的位置有木桩,可以使小球弹起来,小球必须从第\(p\)个位置开始,而且每次都会向右弹\(k\)个单位,然后有的位置是没有木桩的,你可以在这些的空的位置放一个木桩 ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) B. Repainting Street (枚举)
题意:有\(n\)栋房子,每栋房子都有自己的颜色\(c_i\),你每次可以对连续的长度为\(k\)的区间改变任何房子的颜色,问最少多少次可以使得所有房子颜色相同. 题解:因为只有\(100\)中颜色, ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) A. Prison Break
题意:有一张\(n\)x\(m\)的图,图中每个点都关押着罪犯,在坐标\((r,c)\)处有一个出口,每名罪犯每秒可以可以像上下最有移动一个单位或者不动,问所有罪犯能够逃离监狱的最少时间. 题解:直接 ...
- Codeforces Round #679 (Div. 2, based on Technocup 2021 Elimination Round 1)
考场上只做出来四道,第二天一早就写出来了E,蛮绝望的. A Finding Sasuke 水构造 #include <cstdio> #include <algorithm> ...
- Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3) C. Peaceful Rooks (思维,dsu找环)
题意:一个棋盘上有一些"车",现在要让这些"车"跑到左倾斜的对角线上,每次可以移动一个棋子,但是棋盘的任意时刻都不能出现一个"车"能吃另一个 ...
- Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)
A.In-game Chat 题目:就是从后面数连着的'('的个数是不是严格比剩下的字符多 思路:水题,直接从后往前遍历即可 代码: #include<iostream> #include ...
- Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)
Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) #include <bits/stdc++ ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)
A - Forgetting Things 题意:给 \(a,b\) 两个数字的开头数字(1~9),求使得等式 \(a=b-1\) 成立的一组 \(a,b\) ,无解输出-1. 题解:很显然只有 \( ...
随机推荐
- 京东数科面试真题:常见的 IO 模型有哪些?Java 中的 BIO、NIO、AIO 有啥区别?
本文节选自<Java面试进阶指北 打造个人的技术竞争力> 面试中经常喜欢问的一个问题,因为通过这个问题,面试官可以顺便了解一下你的操作系统的水平. IO 模型这块确实挺难理解的,需要太多计 ...
- c++ 反汇编 数组和指针
字符串初始化字符数组 58: char as[] = "hello word"; 00AC7308 A1 70 2E B6 00 mov eax,dword ptr [string ...
- VSCode中插件Code Spell Checker
说在前面 介绍 Code Spell Checker 是在VSCode中的一款插件,能够帮助我们检查单词拼写是否出现错误,检查的规则遵循 camelCase (驼峰拼写法). 安装方法 打开VSCod ...
- 基于开源的GOCW和Directshow.net,实现摄像头预览、采集、录像等操作
本文基于开源的GOCW和Directshow.net,实现图像采集等操作.最为关键的部分在于可以实现摄像头的控制,同时关于视频采集进行了实现. 具体的内容请关注首发于51CTO的课程<基于Csh ...
- (数据科学学习手札116)Python+Dash快速web应用开发——交互表格篇(中)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- 201871030116-李小龙 实验二 个人项目—《D{0-1} KP》项目报告
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...
- Java8中的默认方法
作者:汤圆 个人博客:javalover.cc 前言 大家好啊,我是汤圆,今天给大家带来的是<Java8中的默认方法>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻 ...
- SQL必知必会,带你系统学习
你一定听说过大名鼎鼎的Oracle.MySQL.MongoDB等,这些数据库都是基于一个语言标准发展起来的,那就是SQL. SQL可以帮我们在日常工作中处理各种数据,如果你是程序员.产品经理或者是运营 ...
- 【笔记】《算法竞赛入门》习题7-6 UVa12113_重叠的正方形
title: 习题7-6 UVa12113_重叠的正方形 date: 2021-01-31 19:08:00 categories: 算法竞赛入门 tags: 数据结构 算法 UVa <算法竞赛 ...
- Github Pages+Gridea设置DisqusJS评论
1 前言 相信很多人都对Github Pages不默认,笔者之前写过了一篇文章,使用Github Pages去搭建博客的,链接可以戳这里. 但是唯一的不足是没有提到评论,因为当时笔者测试了一下,评论设 ...