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],每个插座最多只能对 ...
随机推荐
- Spark源码分析 – 汇总索引
http://jerryshao.me/categories.html#architecture-ref http://blog.csdn.net/pelick/article/details/172 ...
- ubuntu安装mysql步骤
https://dev.mysql.com/downloads/file/?id=477124 ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get inst ...
- openresty跑定时任务配置、ngx.timer.every接口使用
openresty的定时任务是要跟worker绑定的.如果不绑定特定的worker,那么所有启动的woker都会去执行定时任务. 一般情况下默认绑定worker_id=0的,这样在nginx整个进程里 ...
- VirtualBox中安装Ubuntu12.04/Ubuntu14.04虚拟机(转)
add by zhj: 如果宿主机是win7,那VirtualBox建议安装4.3.12,再高的版本在Windows7上运行会报错,从4.3.14到5.0.xx版本,一直报错,搞了半天也解决不了.如果 ...
- 配置stun服务器实现穿墙
Turn服务器的配置流程 Webrtc是基于P2P的,在两个客户端建立连接之前需要服务器建立连接,这时两台设备一般都处于一个或者多个NAT中,那么两台设备建立连接就需要穿墙技术. 这时就用到了turn ...
- bug-sqlite3
[root@izj6c6b4i40od17ev77lhez Python-3.7.0]# python Python 3.7.0 (default, Sep 5 2018, 00:40:27) [GC ...
- 图解Python可以做些什么
Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无 ...
- ACM零散知识
定理与方法专区: 1.两点间的曼哈顿距离如果为偶数,那么两点间可以走偶数步到达 2.求小于等于n 的素数的个数.(即欧拉函数) 100=(2^2)*(5^2) num[100]=(2+1)*(2 ...
- 在MFC里面使用ADO访问微软的ACCESS数据库 实现增删改查
声明:百度以外的公司可以自由转载该文. 正如我上一篇博文提到,ADO这货和MFC没有任何关系,ADO 是一个独立的组件.所以为了使用ADO 我们就要把ADO引入到MFC中. ADO是硬盘上的表现形式是 ...
- php微信支付接口开发程序(流程已通)
php微信支付接口开发程序(流程已通) 来源:未知 时间:2014-12-11 17:11 阅读数:11843 作者:xxadmin [导读] 微信支付接口现在也慢慢的像支付宝一个可以利 ...