Kia's Calculation(贪心)
pid=4726">http://acm.hdu.edu.cn/showproblem.php?
大致题意:给两个长度小于10^6且相等的合法的正整数。你能够随意组合每一个数中的数字,但不能有前导零。两个数相加的规则如题,相加不进位。
问能够得到的A+B的最大值。
都看错题意了,一直以为数的大小是小于10^6,队友用了一个ms非常高端的函数对字符串全排列,枚举求最大值。结果WA到死。事实上是长度小于10^6,以后看题要细心再细心啊。
。。
用数组记录每一个数中每一个数字的个数。每次都找从两个字符串中找和最大的,但求第一个数时要注意,不能有前导零。除了第一位,后面的每次找和最大的就可以。最后别忘了去掉前导零。以及结果是0的特殊情况。
- #include <stdio.h>
- #include <iostream>
- #include <map>
- #include <stack>
- #include <vector>
- #include <math.h>
- #include <string.h>
- #include <queue>
- #include <string>
- #include <stdlib.h>
- #include <algorithm>
- #define LL long long
- #define _LL __int64
- #define eps 1e-8
- #define PI acos(-1.0)
- using namespace std;
- const int maxn = 1000010;
- int fir[12],sec[12];
- char s1[maxn],s2[maxn],ans[maxn];
- int main()
- {
- int test,len;
- scanf("%d",&test);
- for(int item = 1; item <= test; item++)
- {
- scanf("%s %s",s1,s2);
- len = strlen(s1);
- memset(fir,0,sizeof(fir));
- memset(sec,0,sizeof(sec));
- if(strcmp(s1,"0") == 0)
- {
- printf("Case #%d: ",item);
- printf("%s\n",s2);
- continue;
- }
- if(strcmp(s2,"0") == 0)
- {
- printf("Case #%d: ",item);
- printf("%s\n",s1);
- continue;
- }
- for(int i = 0; i < len; i++)
- {
- fir[s1[i]-'0']++;
- sec[s2[i]-'0']++;
- }
- int cnt = 0;
- int Max = -1;
- int a,b;
- //找第一个数字,不能找前导零
- for(int i = 1; i <= 9; i++)
- {
- if(fir[i] == 0)
- continue;
- for(int j = 1; j <= 9; j++)
- {
- if(sec[j] == 0) continue;
- int t = (i+j)%10;
- if(t > Max)
- {
- Max = t;
- a = i;
- b = j;
- }
- }
- }
- ans[++cnt] = Max + '0';
- fir[a]--;
- sec[b]--;
- while(cnt < len)
- {
- Max = -1;
- for(int i = 0; i <= 9; i++)
- {
- if(fir[i] == 0) continue;
- for(int j = 0; j <= 9; j++)
- {
- if(sec[j] == 0) continue;
- int t = (i+j)%10;
- if(t > Max)
- {
- Max = t;
- a = i;
- b = j;
- }
- }
- }
- ans[++cnt] = Max + '0';
- fir[a]--;
- sec[b]--;
- }
- printf("Case #%d: ",item);
- int i;
- for(i = 1; i <= len; i++)
- if(ans[i] != '0')
- break;
- //假设是0,直接输出0
- if(i == len+1)
- printf("0\n");
- else
- {
- for( ;i <= len; i++)
- printf("%c",ans[i]);
- printf("\n");
- }
- }
- return 0;
- }
Kia's Calculation(贪心)的更多相关文章
- K - Kia's Calculation (贪心)
Kia's Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU-4726 Kia's Calculation 贪心
题目链接:http://acm.hdu.edu.cn/userstatus.php?user=zhsl 题意:给两个大数,他们之间的加法法则每位相加不进位.现在可以对两个大数的每位重新排序,但是首位不 ...
- HDU1009_FatMouse' Trade【贪心】【水题】
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HihoCoder1653 : 公平分队([Offer收割]编程练习赛39)(贪心)
描述 小Hi和小Ho在玩一个战争游戏.游戏中2N个战斗单位,其中第i个单位的战斗力是Ai. 现在小Hi和小Ho要各选N个单位组成队伍,当然他们都希望自己队伍的总战斗力越大越好. 为了使分队更加公平,经 ...
- 2013 ACM/ICPC Asia Regional Online —— Warmup2
HDU 4716 A Computer Graphics Problem 水题.略 HDU 4717 The Moving Points 题目:给出n个点的起始位置以及速度矢量,问任意一个时刻使得最远 ...
- 贪心 HDOJ 4726 Kia's Calculation
题目传送门 /* 这题交给队友做,做了一个多小时,全排列,RE数组越界,赛后发现读题读错了,囧! 贪心:先确定最高位的数字,然后用贪心的方法,越高位数字越大 注意:1. Both A and B wi ...
- HDU 4726 Kia's Calculation (贪心算法)
Kia's Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 4726 Kia's Calculation(贪心)
Kia's Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- K - Kia's Calculation(贪心)
Kia's Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
随机推荐
- HTML DOM select() 方法
定义和用法 select() 方法用于选择该元素中的文本. 语法 textareaObject.select() 实例 下面的例子可选择文本框中的文本: <html> <head&g ...
- Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng
Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...
- bzoj 3065: 带插入区间K小值 替罪羊树 && AC300
3065: 带插入区间K小值 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1062 Solved: 253[Submit][Status] Des ...
- 构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介
构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组 ...
- POJ 2409 Let it Bead(Polya定理)
点我看题目 题意 :给你c种颜色的n个珠子,问你可以组成多少种形式. 思路 :polya定理的应用,与1286差不多一样,代码一改就可以交....POJ 1286题解 #include <std ...
- 【SPOJ 1182】 SORTBIT - Sorted bit squence (数位DP)
SORTBIT - Sorted bit squence no tags Let's consider the 32 bit representation of all integers i from ...
- 设置VS2015上关闭和打开tab快捷键
Ctrl+W关闭Tab: Tools > Options > Environment > Keyboard > File.Close > Use new shortcut ...
- Oracle DBMS_SESSION
Version 11.1 General Purpose Try dbms_session.reset_package. This call will reset all packages var ...
- Android --- px与dip换算
px = (density/160)dpdensity一般为3个常用固定值240/160/120分别对应WVGA/HVGA/QVGA不知道知己做的分辨率对应的density是多少可以点击AVD Man ...
- Devexpress之popupMenu
1.拖放一个BarManager控件barManager1和一个PopupMenu控件popupMenu1 2.设置popupMenu1的Manager属性为barManager1 3.拖放一个Tex ...