Codeforces Round 582
Codeforces Round 582
这次比赛看着是Div.3就打了,没想到还是被虐了,并再次orz各位AK的大神……
A. Chips Moving
签到题。(然而签到题我还调了20min……)
因为数据小,所以像我一样打模拟也可以,但其实只要统计一下奇数偶数的个数并输出较小的一个即可。
#include<bits/stdc++.h>
using namespace std;
int n;
long long ans=0x3f3f3f3f;
int a[110];
void Read() {
scanf("%d",&n);
for(int i=1;i<=n;i++) {
scanf("%d",&a[i]);
}
return;
}
int main()
{
Read();
for(int i=1;i<=n;i++) {
long long tmp=0;
for(int j=1;j<=n;j++) {
if(abs(a[j]-i)%2==1) {
tmp++;
}
}
ans=min(ans,tmp);
}
printf("%lld",ans);
return 0;
}
B. Bad Prices
(题目中的Polycarp真是太有经济头脑了,自己作为买家还希望卖家不要亏本……)
这道题本来也想来个暴力模拟,结果第一次提交成功在第三个点上T掉;后来优化了一下数组,第二次提交还是第三个点T掉。后来想到只要维护一个后缀最小值数组,即从最后一天到第$n$天中价格的最小值。若第$n$天的价格大于第$n$天的后缀最小值,那就是一个"Bad Price"。
#include<bits/stdc++.h>
using namespace std;
int t,n,ans;
int a[150010],pre[150010];
void Init() {
n=0;
ans=0;
memset(a,0,sizeof(a));
memset(pre,0x7f,sizeof(pre));
return;
}
void Read()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) {
scanf("%d",&a[i]);
}
return;
}
void findMin() {
for(int i=n;i>=1;i--) {
pre[i]=min(pre[i+1],a[i]);
}
return;
}
void Solve() {
for(int i=1;i<=n;i++) {
if(a[i]>pre[i]) {
ans++;
}
}
printf("%d\n",ans);
return;
}
int main()
{
scanf("%d",&t);
for(int i=1;i<=t;i++) {
Init();
Read();
findMin();
Solve();
}
return 0;
}
C. Book Reading
这题只用统计$m$倍数的个位数字之和,继续打模拟,结果连样例都跑不出来……
一看样例:
1234312817382646 13
顿时醒悟……当$n$远大于$m$时,$n\div m$的值会很大,以至于1s根本跑不完。
于是我就在这卡了将近1h……(在此期间尝试调了下D1,结果发现根本没思路)
在临近比赛结束前15min,忽然灵光一闪,既然只统计个位数字,取值就只有$0$-$9$共十种,那为什么不……打表呢?
于是经过一番简单的运算,这道题就……A了。
#include<bits/stdc++.h>
using namespace std;
int q,lownum;
long long n,m,ans;
int main()
{
scanf("%d",&q);
for(int i=1;i<=q;i++) {
ans=0;
long long div=0,mod=0;
scanf("%lld%lld",&n,&m);
div=n/m;
mod=div%10;
div-=mod;
div/=10;
switch(m%10) {
case 0:
ans=0;
break;
case 1:
ans=div*45;
for(int j=1;j<=mod;j++) {
ans+=(j*1)%10;
}
break;
case 2:
ans=div*40;
for(int j=1;j<=mod;j++) {
ans+=(j*2)%10;
}
break;
case 3:
ans=div*45;
for(int j=1;j<=mod;j++) {
ans+=(j*3)%10;
}
break;
case 4:
ans=div*40;
for(int j=1;j<=mod;j++) {
ans+=(j*4)%10;
}
break;
case 5:
ans=div*25;
for(int j=1;j<=mod;j++) {
ans+=(j*5)%10;
}
break;
case 6:
ans=div*40;
for(int j=1;j<=mod;j++) {
ans+=(j*6)%10;
}
break;
case 7:
ans=div*45;
for(int j=1;j<=mod;j++) {
ans+=(j*7)%10;
}
break;
case 8:
ans=div*40;
for(int j=1;j<=mod;j++) {
ans+=(j*8)%10;
}
break;
case 9:
ans=div*45;
for(int j=1;j<=mod;j++) {
ans+=(j*9)%10;
}
break;
}
printf("%lld\n",ans);
}
return 0;
}
当然还是要提一下正解的思路的。
令$k=[\frac nm]$是从$1$到$n$的整数个数,可被$m$整除。我们可以注意到,因为我们只记下每个可被$m$整除的数字的最后一位数字,所以数字“周期”的长度不超过$10$。事实上,我们总是可以假设它是$10$,因为对于从0到9的所有$i$,都有$i\times m\equiv(10+i)\times m\ (mod\ 10)$。所以对于从$0$到$9$的所有$i$,使$cycle_i=m\times (i+1)\ mod\ 10$,然后答案是$[\frac k{10}]\sum_{i=0}9cycle_i+\sum_{i=0}{k\ mod\ 10}cycle_i$.
D. Equalizing by Division
这题就是分为两个难度,我调了一下easy的,但发现思路基本是错的,然后就放弃了……
至于Hard的……就以后再说吧。
E. Two Small Strings
F. Unstable String Sort
G. Path Queries
总之,以后还是要多刷题,多打比赛,多多听从老师教诲……
Codeforces Round 582的更多相关文章
- Codeforces Round #582 (Div. 3)-G. Path Queries-并查集
Codeforces Round #582 (Div. 3)-G. Path Queries-并查集 [Problem Description] 给你一棵树,求有多少条简单路径\((u,v)\),满足 ...
- Codeforces Round #582 (Div. 3)
题目链接:https://codeforces.com/contest/1213 A: 题意:给定数的位置,位置为整数,每个数可以向左或右移动一格或者两格,移动一格花费一个硬币,两格不花费硬币,问所有 ...
- Codeforces Round #582 (Div. 3) G. Path Queries (并查集计数)
题意:给你带边权的树,有\(m\)次询问,每次询问有多少点对\((u,v)\)之间简单路径上的最大边权不超过\(q_i\). 题解:真的想不到用最小生成树来写啊.... 我们对边权排序,然后再对询问的 ...
- Codeforces Round #582 (Div. 3) E. Two Small Strings (构造,思维,全排列)
题意:给你两个长度为\(2\)的字符串\(s\)和\(t\),你需要构造一个长度为\(3n\)的字符串,满足:含有\(n\)个\(a\),\(n\)个\(b\),\(n\)个\(c\),并且\(s\) ...
- Codeforces Round #582 (Div. 3) A. Chips Moving
传送门 题解: 给你n个数的坐标,你需要把他们移动到一个位置,有两种移动方式 1.向左或者右移动2 2.向左或者右移动1,但是耗费1 求最小耗费 题解: 很简单就可以想到,看一下偶数坐标多还是奇数坐标 ...
- Codeforces Round #582 (Div. 3) C. Book Reading
传送门 题意: 给你n,k.表示在[1,n]这个区间内,在这个区间内找出来所有x满足x%k==0,然后让所有x的个位加到一起(即x%10),输出. 例如:输入10 2 那么满足要求的数是2 4 6 8 ...
- Codeforces Round #582 (Div. 3) F. Unstable String Sort
传送门 题意: 你需要输出一个长度为n的字符序列(由小写字母组成),且这个字符串中至少包含k个不同的字符.另外题目还有要求:给你两个长度为p和q的序列,设字符序列存在s中 那么就会有s[Pi]< ...
- 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 ...
随机推荐
- C罗是你人生中最好的健身教练和精神导师
C罗又进球了,两场小组赛包揽全队4粒进球,一己之力帮助葡萄牙取得1胜1平,掌握出线主动权.此前三届世界杯金靴分别只有6球.5球.5球进账,C罗如果能延续火爆状态,金靴唾手可得. 之前三届世界杯,C罗7 ...
- 通过git命令“六步”提交新项目到码云
通过git命令“六步”提交新项目到码云 一.初始化本地仓库 git init 二.添加文件 git add . 三.添加远程数据仓库链接 git remote add origin https://g ...
- PHP,Excel导出换行
// 有id,才算真的有发票数据 if ($v['b_invoice_id']) { $v['b_invoice_info'] = json_decode($v['b_invoice_json'],t ...
- 怎么对10亿数据量级的mongoDB作高效的全表扫描
转自:http://quentinxxz.iteye.com/blog/2149440 一.正常情况下,不应该有这种需求 首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提 ...
- [转帖]微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同
微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同 https://www.cnbeta.com/articles/tech/903507.htm 微软Azure的胜利 国防部证实,美国政府已向 ...
- PHP被忽略的基础知识
目录 下列PHP配置项中,哪一个和安全最不相关:() 字符串比较函数 格林时间 在PHP面向对象中,下面关于final修饰符描述错误的是( ) getdate()函数返回的值的数据类型是:( ) 关于 ...
- Python【常用的数据类型】
int, float, string整数,浮点数,字符串----------------------------------------字符串(string)用引号括起来的文本 >>& ...
- flannel overlay网络浅析
Flannel基于UDP的网络实现 container-1的route表信息如下(b1): default via 100.96.1.1 dev eth0 100.96.1.0/24 dev eth0 ...
- C++中深拷贝与浅拷贝
浅拷贝和深拷贝 在某些状况下,类内成员变量需要动态开辟堆内存,如果实行位拷贝,也就是把对象里的值完全复制给另一个对象,如A=B.这时,如果B中有一个成员变量指针已经申请了内存,那A中的那个成员变量也指 ...
- VMware虚拟机(Ubuntu)通过主机代理实现——浏览器+终端访问外网
环境说明:主机win10 + 虚拟机ubunut16.04 + 主机s-h-a-d-o-w-socks win10 主机相关操作配置1: 按下 Win + R 快捷键,输入 cmd ,然后在命令行中输 ...