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. 题解:很显然只有 \( ...
随机推荐
- Java例题_20 前20项之和!
1 /*20 [程序 20 求前 20 项之和] 2 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 3 程序分析:请抓住分子与分母的变 ...
- 14、运行Django时浏览器中遇到Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'deny'
问题:Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'deny' 解决办法: 只需要在 Djagno ...
- 带你全面认识CMMI V2.0(四)——管理 赋能
风险和机会管理(PSK)包括:识别威胁和机会:评估其发生和影响的可能性:减轻潜在威胁:利用潜在机会目的:识别,记录,分析和管理潜在的风险或机会.价值:减轻不利影响或利用积极影响来增加实现目标的可能性. ...
- go中控制goroutine数量
控制goroutine数量 前言 控制goroutine的数量 通过channel+sync 使用semaphore 线程池 几个开源的线程池的设计 fasthttp中的协程池实现 Start Sto ...
- JavaScript深入理解-PWA渐进式应用
WPA-渐进式 web 应用 PWA 是什么 渐进式 Web 应用,提升 web app 浏览体验. manifest 应用程序清单 基本介绍: web app manifest是 PWA 技术集合中 ...
- c++ 实现向量去重操作
去重的时候要考虑线性表或链表是否是有序 1.1.无序线性表 对于向量[1,5,3,7,2,4,7,3], 从头开始扫描vector内的元素, 对于表中r处的元素a[r], 检查数组0至r-1区间内是否 ...
- 深入学习spring cloud gateway 限流熔断
前言 Spring Cloud Gateway 目前,Spring Cloud Gateway是仅次于Spring Cloud Netflix的第二个最受欢迎的Spring Cloud项目(就GitH ...
- 亮相 LiveVideoStackCon,透析阿里云窄带高清的现在与未来
2021.4.16-4.17,阿里云视频云亮相 LiveVideoStackCon 音视频技术大会上海站,带来三场不同视角的主题演讲,并与众多行业伙伴一同交流.在 "编解码的新挑战与新机会& ...
- Day07_37_深度剖析集合中的contains()方法
深度剖析集合中的 contains()方法 contains()方法查找集合中是否包含某个元素 contains() 底层使用的是 equals()方法 当contains()方法拿到一个对象的时候, ...
- Json文件转换为Excel文件!涉及读文件,时间戳转化,写文档
一. 思路 今天接到个小任务,让把json文件转换成excel文件,按照列展开. 思路:既然json已经都已经是现成的,那直接将json文件做读操作,在通过不同的key,找到对应的信息,在存到单元格中 ...