codeforces 484B - LubaAndTicket - 贪心
2017-08-22 10:54:00
writer:pprp
题意如下:
给你6个数组,你的操作可以是更改某一位的数字成为0-9之间任意一个数,要求前三个数字的和与后三个数字的和相等。
问你最少用几步就可以完成?
分析:这个题太过武断的理解题目了,更改了两次方向才理解正确题目的意思;
一开始理解成只能增加某一位数,
后来比赛以后看了数据,然后理解成能增加或者减少
但是两个理解都不对
应该是每次都可以增加或者减少,大的数组应该减小,小的数组应该增大
贪心的去做
Wa了7次,WA到怀疑人生,最后总算是根据数据漏洞完成写出来AC代码
/*
theme:Luba and The Ticket
writer:pprp
description:审题有问题,可以随意改动一个数,使之变为0-9
自己一开始理解成只能增或者只能减,算法设计失误,重新设计,考虑到小的数组增加和大的数组减小
综合两种情况进行讨论
date:2017/8/22
*/ #include <bits/stdc++.h> using namespace std; int a[], b[]; int main()
{
int ans = ; for(int i = ; i <= ; i++)
scanf("%1d",&a[i]);
for(int i = ; i <= ; i++)
scanf("%1d",&b[i]); int sum1 = , sum2 = ; sort(a+,a+);
sort(b+,b+); for(int i = ; i < ; i++)
{
sum1 += a[i+];
sum2 += b[i+];
} //如果两个数组值恰好相等,直接输出0
if(sum1 == sum2)
{
cout << << endl;
return ;
} ans++; //如果数组a 的和大于数组b的和
if(sum1 > sum2)
{
int i = ;
int j = ;
int cha = abs(sum1 - sum2); //sum的差值如果大于两种情况并且指针j没有越界
while(cha > a[i] && cha > - b[j] && j <= )
{
ans++;
//如果大的数组减小幅度大于小的数组上升幅度,选择大的数组
if(a[i] > - b[j])
{
sum1 -= a[i];
cha = cha - a[i];
i--;
}
else
{
sum2 += - b[j];
cha = cha - + b[j];
j++;
}
}
}
else if(sum1 < sum2)
{
int i = ;
int j = ;
int cha = abs(sum1 - sum2); while(cha > b[i] && cha > - a[j] && j <= )
{
ans++;
if(b[i] > - a[j])
{
sum1 -= b[i];
cha -= b[i];
i--;
}
else
{
sum2 += ( - a[j]);
cha -= ( - a[j]);
j++;
}
}
} cout << ans << endl; return ;
}
codeforces 484B - LubaAndTicket - 贪心的更多相关文章
- Codeforces 484B Maximum Value(高效+二分)
题目链接:Codeforces 484B Maximum Value 题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,而且ai≥aj 解题思路:类似于素数筛选法的方式,每次枚举aj,然 ...
- CodeForces - 158B.Taxi (贪心)
CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...
- codeforces 724D(贪心)
题目链接:http://codeforces.com/contest/724/problem/D 题意:给定一个字符串和一个数字m,选取一个一个子序列s,使得对于字符串中任意长度为m的子序列都至少含有 ...
- Codeforces 626G Raffles(贪心+线段树)
G. Raffles time limit per test:5 seconds memory limit per test:256 megabytes input:standard input ou ...
- Cut 'em all! CodeForces - 982C(贪心dfs)
K - Cut 'em all! CodeForces - 982C 给一棵树 求最多能切几条边使剩下的子树都有偶数个节点 如果n是奇数 那么奇数=偶数+奇数 不管怎么切 都会有奇数 直接打印-1 贪 ...
- CodeForces - 940E - Cashback +贪心+DP
传送门:CodeForces - 940E - Cashback 题意:在一个长度为n的数组中,可以分出长度为 k 连续的多个数组b(每个数组 b 的 k 可不相同),然后,可以对每个数组 b 进行删 ...
- Codeforces 515C 题解(贪心+数论)(思维题)
题面 传送门:http://codeforces.com/problemset/problem/515/C Drazil is playing a math game with Varda. Let’ ...
- CodeForces 485C Bits[贪心 二进制]
C. Bits time limit per test1 second memory limit per test256 megabytes inputstandard input outputsta ...
- codeforces 732E(贪心)
题目链接:http://codeforces.com/contest/732/problem/E 题意:有n台计算机,m个插座,每台计算机有一个值a[i],每个插座有一个值b[i],每个插座最多只能对 ...
随机推荐
- linux中的周期调度器
2017-06-27 上篇文章简要介绍了Linux进程调度,以及结合源代码窥探了下CFS的调度实例.但是没有深入内部区分析调度下面的操作,比如就绪队列的维护以及进程时间的更新等.本节就这些问题做深入讨 ...
- django-vue之信息过滤(过滤课程)
一 vue前端代码 实现的内容,通过对课程的分类,在每个不同的课程分类下显示相应的内容 <template> <div class="course"> & ...
- oracle编程艺术--runstst工具
runstats工具是< oracle database 9i/10g/11g编程艺术 深入数据库体系结构>作者写的一个统计性能工具,能对做同一件事的两个方法进行比较,得到孰优孰劣的结果. ...
- python插入记录后获取最后一条数据的id
python插入记录后取得主键id的方法(cursor.lastrowid和conn.insert_id()) 参考:https://blog.csdn.net/qq_37788558/article ...
- 执行Java脚本firefox启动成功,不运行test方法,且提示NullPointerException
在ideal中新建maven项目,将录制好的Java脚本文件,直接复制到项目中,添加相关的依赖脚本. 代码不报错之后,运行录制好的Java脚本,启动了firefox之后,不执行test方法,报错Nul ...
- php int 与 datetime 转换
数据库日期类型是int类型的,该查询结果是datetime类型的 select from_unixtime( `dateline` ) from cdb_posts 如果原来类型是datetime类型 ...
- Delphi APP 開發入門(九)拍照與分享
Delphi APP 開發入門(九)拍照與分享 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數:30 ...
- 论文笔记:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
ICML, 2015 S. Ioffe and C. Szegedy 解决什么问题(What) 分布不一致导致训练慢:每一层的分布会受到前层的影响,当前层分布发生变化时,后层网络需要去适应这个分布,训 ...
- RedisTemplate访问Redis数据结构
https://www.jianshu.com/p/7bf5dc61ca06 Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字 ...
- python3_Logging模块详解
python的logging模块提供了通用的日志系统,可以方便第三方模块或应用使用. 简单使用 import logging # logging.config.fileConfig("./l ...