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)的更多相关文章

  1. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) D. XOR-gun (二进制,异或,前缀和)

    题意:给你一组非递减的数,你可以对两个连续的数进行异或,使其合并为一个数,问最少操作多少次使得这组数不满足非递减. 题解:首先,给出的这组数是非递减的,我们考虑二进制,对于三个连续的非递减的最高位相同 ...

  2. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) C. Bouncing Ball (后缀和,枚举)

    题意:有一长度为\(n\)的平台,平台有的位置有木桩,可以使小球弹起来,小球必须从第\(p\)个位置开始,而且每次都会向右弹\(k\)个单位,然后有的位置是没有木桩的,你可以在这些的空的位置放一个木桩 ...

  3. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) B. Repainting Street (枚举)

    题意:有\(n\)栋房子,每栋房子都有自己的颜色\(c_i\),你每次可以对连续的长度为\(k\)的区间改变任何房子的颜色,问最少多少次可以使得所有房子颜色相同. 题解:因为只有\(100\)中颜色, ...

  4. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) A. Prison Break

    题意:有一张\(n\)x\(m\)的图,图中每个点都关押着罪犯,在坐标\((r,c)\)处有一个出口,每名罪犯每秒可以可以像上下最有移动一个单位或者不动,问所有罪犯能够逃离监狱的最少时间. 题解:直接 ...

  5. Codeforces Round #679 (Div. 2, based on Technocup 2021 Elimination Round 1)

    考场上只做出来四道,第二天一早就写出来了E,蛮绝望的. A Finding Sasuke 水构造 #include <cstdio> #include <algorithm> ...

  6. Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3) C. Peaceful Rooks (思维,dsu找环)

    题意:一个棋盘上有一些"车",现在要让这些"车"跑到左倾斜的对角线上,每次可以移动一个棋子,但是棋盘的任意时刻都不能出现一个"车"能吃另一个 ...

  7. Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)

    A.In-game Chat 题目:就是从后面数连着的'('的个数是不是严格比剩下的字符多 思路:水题,直接从后往前遍历即可 代码: #include<iostream> #include ...

  8. 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++ ...

  9. 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. 题解:很显然只有 \( ...

随机推荐

  1. DEV表格设置列不可编辑

    现在是可编辑的 Run Designer--Columns--Column options下的AllowEdit属性改为false即可

  2. Nginx错误日志(error_log)配置及信息详解

    Nginx错误日志信息介绍 Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(ngx_core_module)的参数,该参数的名字为error_log,可以放在Main区块中全局配 ...

  3. 【长文】Spring学习笔记(七):Mybatis映射器+动态SQL

    1 概述 本文主要讲述了如何使用MyBatis中的映射器以及动态SQL的配置. 2 MyBatis配置文件概览 MyBatis配置文件主要属性如下: <settings>:相关设置,键值对 ...

  4. kubernetes 的负载均衡策略

    Kubernetes提供了两种负载分发策略: RoundRobin和SessionAffinity ◎ RoundRobin:轮询模式,即轮询将请求转发到后端的各个Pod上. ◎ SessionAff ...

  5. 实现Web请求后端Api的Demo,实现是通过JQuery的AJAX实现后端请求,以及对请求到的数据的解析处理,实现登录功能

    本篇实现Web请求后端Api的Demo,实现是通过JQuery的AJAX实现后端请求,以及对请求到的数据的解析处理,实现登录功能需求描述:1. 请求后端Api接口地址2. 根据返回信息进行判断处理前端 ...

  6. SSM完整项目(内含源码)

    SSM 电影后台管理项目 概述 通过对数据库中一张表的CRUD,将相应的操作结果渲染到页面上. 笔者通过这篇博客还原了项目(当然有一些隐藏的坑),然后将该项目上传到了Github.Gitee,在末尾会 ...

  7. Word 查找和替换字符串方法

    因为项目需要通过word模板替换字符串 ,来让用户下载word, 就在网上找了找word查找替换字符串的库或方法,基本上不是收费,就是无实现,或者方法局限性太大 .docx 是通过xml来存储文字和其 ...

  8. 【故障公告】数据库服务器 CPU 100% 引发网站故障

    悄悄地它又突然来了 -- 数据库服务器 CPU 100% 问题,上次光临时间是 3-30 8:48,这次是 4-28 9:41. 这次我们做出了快速反应,发现后立即进行主备切换,这次一次切换成功,CP ...

  9. new、delete、析构函数、自动类型转换

    new 分配内存,返回指针 new 类型名T (初值列表) 功能:申请用于存放T类型对象的内存空间,并依初值列表赋以初值 结果值: 成功->T类型的指针,指向新分配的内存 失败->0(NU ...

  10. 【SpringBoot】Springboot2.x整合Redis(一)

    备注: springboto整合redis依赖于spring-boot-starter-data-redis这个jar 一,项目环境和依赖 1.POM.xml配置 <parent> < ...