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. 题解:很显然只有 \( ...
随机推荐
- 仿String()构造器函数 【总结】
需求 实现以下方法: 控制台结果: 需求分析: 首先确定new调用的this和什么对象绑定,如果跟默认返回的对象绑定肯定做不到 [ ] 这样的访问,所以要在构造器内部返回一个包装过的数组 1.leng ...
- Java学习之String与int的相互转换
•String 转 int 两种方式 int a = Integer.parseInt(s);int b = Integer.valueOf(s).intValue(); 代码 public clas ...
- INTERSPEECH2020 语音情感分析论文之我见
摘要:本文为大家带来InterSpeech2020 语音情感分析25篇论文中的其中8篇的总结. 本文分享自华为云社区<INTERSPEECH2020 语音情感分析论文总结一>,原文作者:T ...
- javascript 取自己
var own=docment.currentScript;
- Etcd常用运维命令
目录 常用命令 常见操作 如何缩容? 如何扩容? 数据目录丢失或被误删除,节点启动失败或者加入集群报错? 操作步骤 操作步骤不正确的各种常见错误日志 常用命令 #查看集群member情况 etcdct ...
- 【C/C++】面向对象开发的优缺点
原创文章,转发请注明出处. 面向对象开发的优缺点 面向对象开发 是相对于 面向过程开发 的一种改进思路. 由于流水线式的面相过程开发非常直接,高效.在面对一些简单项目时,只需要几百行,甚至是几十行代码 ...
- 【CTF】XCTF Misc 心仪的公司 & 就在其中 writeup
前言 这两题都是Misc中数据包的题目,一直觉得对数据包比较陌生,不知道怎么处理. 这里放两道题的wp,第一题strings命令秒杀觉得非常优秀,另外一题有涉及RSA加密与解密(本文不具体讨论RSA非 ...
- ISODateTimeFormat 转换2019-08-15T00:36:49.366456463Z 日期格式
import java.text.*; import java.text.SimpleDateFormat; import java.util.*; import org.joda.time.Date ...
- Palindromes UVA - 401
A regular palindrome is a string of numbers or letters that is the same forward as backward. For e ...
- HUAWEI防火墙双出口据链路带宽负载分担
组网图形 组网需求 通过配置根据链路带宽负载分担,使流量按照带宽的比例分担到各链路上,保证带宽资源得到充分利用. 如图1所示,企业分别从ISP1和ISP2租用了一条链路,ISP1链路的带宽为100M, ...