面试机试之奖励问题

     最近几天依旧是按照计划在学习,每天到实验室后先刷几道题目,练习一下感觉,毕竟做项目跟面试、笔试、机试还不是一个性质的,最近有这么一个感觉就是做了一些题目后的确是比盲目的自己去准备强很多,因为往往考试性质的选拔是不会那么等同于实质的反应的,这个其实从小的时候考试就知道了,在这里举一个例子:比如你想应聘数据挖掘工程师或者算法工程师的话,那么你肯定会多花费很多的时间在机器学习、数据挖掘以及基本的数据结构和算法的学习上,但是这样带给你的问题就是:在浩如烟海的知识的海洋里面你从一开始准备开始学习马上就会变得不知所错,网上的硕大的资源库让你更加无法选择,我就遇上过这样的情况,真的是这样的感觉,甚至有的时候还会产生一种感觉,就是还不如去上课呢,尽管学不到什么东西,网上的博客、学习网站、文库众说纷纭,有些这个是对的,有些那个是对的,初学的时候真的是好折磨,想当初刚开始接触python的时候都是泪,因为全新的学习,一开始什么都不会,但是就是觉得这个语言很好,最开始的时候真的是就连软件、环境、小脚本都不会,当然不是说现在很会,只是说学习很像是一场修行,没有人可以带你一直走下去,为你指点每一次的迷津,而是说“师傅领进门,修行靠个人”,的确是这儿个道理,我们是马上就要走出校门融入社会的人,再也不会有中学那样的教授学业的模式了,这是我们必须要清醒明白的,也许有时候会抱怨自己没有一个“领进门的师傅”,或者是说没有一个'领路人",但是有什么关系呢,这只是一种方式,并不是绝对的方式,我们没有什么理由或者借口去抱怨什么,我更感觉这就是将来要去面对的现实

    哈哈,不能扯这么多了,一不小心说了这么多了,不过欢迎交流哈!

    言归正传,今天在做这道题目的时候遇上的问题是:在本地可以调试成功,但是在OJ提交的时候总是AC了80%左右的,没有全部AC出现,上面给出了出错了的输入,我把出错的输入都保存了下来,然后修改了一下测试程序,将输入改成读本地文件的形式,结果是完全正确的,但是提交测试的时候就是不行,很是困惑,在这里给出来自己的的解决思路,其实问题很简单没有什么复杂的地方,只是不明白问题在哪里,下面是程序:

#!/usr/bin/env python
#coding:utf-8

'''
提利昂收服山地部落之后决定犒赏士卒,本着陈力就列的原则,他决定给五种人以赏赐:
1.作战能力>80,并且至少有一项特殊能力的人,每人8000银鹿
2.作战能力>85,并且声望>80的人,每人4000银鹿
3.作战能力>90,每人2000银鹿
4.作战能力>85的灼人部成员每人1000银鹿
5.声望>80的军官每人850银鹿。
提利昂想要尽量多的犒赏部下,所以只要满足条件即可得到奖赏,即每人可以获得多项赏赐。请你帮
他算算自己需要准备多少银鹿,并且他想要知道得到赏赐最多的人是谁,以及它得到的银鹿数量。

输入
第一行一个整数N,表示士卒总数。1<=N<=100
接下来N行每行一个字符串s,两个整数a,b,两个字母c,d,一个整数x。
S表示士卒的姓名,为长度小于20的字符串(不含空格)。
a,b分别表示作战能力和声望,都是属于[0,100]的整数。
c,d分别表示是否是军官和是否是灼人部成员,大写字母Y表示是,大写字母N表示不是,保证c,d只为
Y或N。
x表示此人拥有的特殊能力数量。0<=x<=10

样例输入
4
wdd 98 83 Y N 0
hdd 99 67 N Y 1
ldd 93 99 N N 0
qdd 81 97 Y N 1

输出
三行。
第一行一个字符串,为得到赏赐最多的人的名字。
第二行和第三行各一个整数分别表示得到赏赐最多的人得到的银鹿数和提利昂需要准备的银鹿数。

S表示士卒的姓名,为长度小于20的字符串(不含空格)。
a,b分别表示作战能力和声望,都是属于[0,100]的整数。
c,d分别表示是否是军官和是否是灼人部成员,大写字母Y表示是,大写字母N表示不是,保证c,d只
为Y或N。
x表示此人拥有的特殊能力数量。0<=x<=10
样例输出
hdd
11000
32700
'''

n=int(raw_input())
all_list=[]
all_dict={}
for i in range(n):
    one_person_list=raw_input().split()
    all_list.append(one_person_list)
for j in range(n):
    if int(all_list[j][1])>80 and int(all_list[j][-1])>=1:
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=8000
        else:
            all_dict[all_list[j][0]]=8000
    # print '-------------------------------'
    # print all_dict
    if int(all_list[j][1])>85 and int(all_list[j][2])>80:
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=4000
        else:
            all_dict[all_list[j][0]]=4000
    if int(all_list[j][1])>90:
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=2000
        else:
            all_dict[all_list[j][0]]=2000
    if int(all_list[j][1])>85 and all_list[j][-2]=='Y':
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=1000
        else:
            all_dict[all_list[j][0]]=1000
    if int(all_list[j][2])>80 and all_list[j][3]=='Y':
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=850
        else:
            all_dict[all_list[j][0]]=850


list1=[]
result_list=sorted(all_dict.items(), key=lambda item:item[1], reverse=True)
for m in range(len(result_list)):
    list1.append(result_list[m][1])
total_prize = sum([int(item) for item in list1])
print result_list[0][0]
print result_list[0][1]
print total_prize

下面是修改后读取本地数据的程序:

fp = open('jiangli_data.txt','r')
fp_list=fp.readlines()
n=int(fp_list[0].strip())
all_list=[]
all_dict={}
for i in range(1,n+1):
    all_list.append(fp_list[i].strip().split())
for j in range(n):
    if int(all_list[j][1])>80 and int(all_list[j][-1])>=1:
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=8000
        else:
            all_dict[all_list[j][0]]=8000
    if int(all_list[j][1])>85 and int(all_list[j][2])>80:
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=4000
        else:
            all_dict[all_list[j][0]]=4000
    if int(all_list[j][1])>90:
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=2000
        else:
            all_dict[all_list[j][0]]=2000
    if int(all_list[j][1])>85 and all_list[j][-2]=='Y':
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=1000
        else:
            all_dict[all_list[j][0]]=1000
    if int(all_list[j][2])>80 and all_list[j][3]=='Y':
        if all_list[j][0] in all_dict:
            all_dict[all_list[j][0]]+=850
        else:
            all_dict[all_list[j][0]]=850


list1=[]
result_list=sorted(all_dict.items(), key=lambda item:item[1], reverse=True)
for m in range(len(result_list)):
    list1.append(result_list[m][1])
total_prize = sum([int(item) for item in list1])
print result_list[0][0]
print int(result_list[0][1])
print total_prize
我输出了中间的结果如下:

[['KSSHsCEhNHXIMxnKjszE', '93', '98', 'N', 'Y', '0'], ['KRXBnwAzDGjpfJgRpKt', '95', '90', 'Y', 'Y', '0'], ['JBOyaqxicVGB', '96', '84', 'N', 'Y', '0'], ['HolSWzxphdbM', '99', '80', 'Y', 'Y', '0'], ['YzYKojgqgraUpqNyJ', '95', '90', 'N', 'N', '0'], ['LgX', '97', '94', 'Y', 'Y', '0'], ['HCRuZbWsSDgkOEoj', '80', '90', 'N', 'Y', '0'], ['S', '85', '89', 'N', 'Y', '10'], ['AdLhdCBxwmJXRm', '78', '97', 'Y', 'N', '0'], ['QhgGp', '85', '87', 'Y', 'N', '0'], ['ZFTdFawbiwDG', '87', '80', 'N', 'Y', '0'], ['JaOThlpkrRkejXMMXgbu', '95', '80', 'Y', 'Y', '0'], ['NiAntWp', '85', '91', 'Y', 'N', '0'], ['Te', '81', '81', 'Y', 'Y', '0'], ['TrFXiYBMzJ', '92', '87', 'N', 'N', '0'], ['MlhsUsruSKdrAGkUerE', '97', '92', 'Y', 'Y', '0'], ['NWpjgxcNegmyEGHlPTP', '88', '94', 'N', 'N', '5'], ['VCXJjomOzywFZBVkDR', '87', '75', 'Y', 'N', '0'], ['PxZYNvXNdbUtBIp', '82', '75', 'N', 'Y', '0'], ['TsJkMpF', '85', '99', 'N', 'Y', '0'], ['BwaIeOrqdatudl', '85', '80', 'N', 'N', '0'], ['IB', '95', '90', 'Y', 'N', '0'], ['HmPorGeOs', '98', '85', 'Y', 'N', '0'], ['DgRHzC', '87', '82', 'Y', 'N', '0'], ['WkRmkErigra', '90', '75', 'Y', 'N', '0'], ['MZdQ', '85', '78', 'N', 'N', '0'], ['NIrWcjt', '81', '95', 'Y', 'N', '0'], ['MQBfcr', '85', '80', 'Y', 'N', '0'], ['IXrLPdJhEekBRgsbkqI', '95', '85', 'Y', 'Y', '6'], ['MWAd', '89', '75', 'Y', 'N', '0'], ['BVYqUBdV', '76', '79', 'Y', 'Y', '0'], ['NhmSyMnvHxUkjye', '79', '90', 'Y', 'N', '0'], ['NUPyQqEhklWtWxeIz', '80', '95', 'Y', 'N', '0'], ['NsQbL', '95', '86', 'N', 'N', '0'], ['KEKFcpbDWQXUsQTXvFbs', '95', '95', 'N', 'N', '0'], ['ZzjJWy', '90', '80', 'N', 'Y', '3'], ['TOWFblEWAuVgAxdHt', '95', '100', 'N', 'N', '0'], ['HRYFlarRQhe', '100', '90', 'N', 'N', '0'], ['SGUCaHJVg', '95', '87', 'Y', 'Y', '0'], ['CsNEZwUWERVFFxLsdyK', '85', '94', 'N', 'N', '0'], ['PZhrRpBMpm', '80', '85', 'Y', 'N', '0'], ['LsyePjMaoonOscyyUQY', '82', '98', 'Y', 'Y', '0'], ['SkPGcYDnYyIp', '95', '90', 'N', 'N', '0'], ['OaV', '90', '90', 'Y', 'N', '0'], ['W', '75', '90', 'Y', 'N', '0'], ['TJjZwq', '85', '75', 'Y', 'Y', '0'], ['PVFVBEocVjjpg', '90', '88', 'N', 'N', '0'], ['HMJecx', '85', '100', 'N', 'Y', '0'], ['PvgXSkNZQNcfJrgTzgm', '90', '75', 'N', 'Y', '0'], ['VnVXCwwJdbrusXG', '89', '95', 'Y', 'N', '0'], ['BNziq', '95', '76', 'Y', 'Y', '0'], ['MNjzTqMCtx', '85', '95', 'N', 'N', '0'], ['UihwjdZaUXWuMsytRtN', '90', '88', 'Y', 'N', '7'], ['HdXkkOHRQoG', '93', '85', 'Y', 'N', '0'], ['DHDAFValkXKFYjznnn', '75', '100', 'N', 'N', '0'], ['JskIgwiNH', '85', '85', 'Y', 'N', '0'], ['SeYSBFuVQaEUXwf', '75', '80', 'N', 'Y', '0'], ['XfGMOTDT', '82', '75', 'Y', 'Y', '0'], ['GnGatTgZBPgj', '90', '90', 'N', 'N', '0'], ['K', '85', '80', 'Y', 'Y', '0'], ['KRJVphYKwQTOMc', '95', '85', 'N', 'N', '0'], ['DFWtLGoFLXHptkI', '75', '92', 'N', 'Y', '0'], ['CayHZQXpTpyFPSuJz', '87', '76', 'N', 'Y', '0'], ['RRlRboFqAgLvzrJ', '89', '75', 'N', 'Y', '4'], ['DbWHykSi', '85', '84', 'N', 'Y', '0'], ['WQHneRqIh', '90', '82', 'Y', 'N', '0'], ['BhGejmW', '90', '93', 'Y', 'N', '0'], ['AFEEic', '95', '80', 'Y', 'N', '0'], ['MXhBgPj', '96', '98', 'Y', 'Y', '0'], ['WJsSWOCR', '77', '85', 'Y', 'Y', '0'], ['A', '79', '82', 'N', 'N', '0'], ['Wy', '95', '85', 'Y', 'Y', '0'], ['OtgBaCKAVmMEFxPVcbE', '84', '75', 'N', 'Y', '0'], ['DnBaraTLVBkPJJj', '85', '75', 'Y', 'N', '0'], ['Kzir', '84', '75', 'Y', 'Y', '0'], ['PxCMvWOdyZcRW', '90', '76', 'N', 'N', '0'], ['ZcztKxXsrhqSDuxBeN', '80', '84', 'N', 'Y', '0'], ['EesxZKSACX', '80', '87', 'N', 'N', '0'], ['CvCT', '75', '85', 'N', 'N', '0'], ['UwrgH', '76', '80', 'Y', 'N', '0'], ['VwcGoYzhhVFWGyFzjdn', '78', '90', 'N', 'N', '0'], ['KQ', '75', '100', 'N', 'Y', '0'], ['MHJszTi', '95', '79', 'Y', 'Y', '0'], ['BPJXuWxsGGNYz', '87', '92', 'Y', 'Y', '5'], ['XWWpW', '96', '92', 'Y', 'Y', '6'], ['GKIdgeGTHWd', '80', '77', 'Y', 'Y', '0'], ['MeGS', '88', '75', 'N', 'N', '0'], ['SblEZfNCkGAkRSrzFADB', '90', '88', 'N', 'Y', '0'], ['BGLYzCxFVARuGu', '87', '75', 'N', 'Y', '0'], ['WMQkzgUafGBnqiuBgRpn', '77', '75', 'N', 'Y', '0'], ['LIWndzmjDozIMTu', '80', '94', 'N', 'Y', '0'], ['LsPuNFjIzCcppis', '80', '80', 'Y', 'N', '0'], ['JgycuqAJHELopIoZm', '87', '85', 'Y', 'N', '0'], ['UJmFKI', '75', '90', 'N', 'N', '0'], ['RdvGLr', '95', '85', 'Y', 'Y', '0'], ['WVsTKZHjDEc', '90', '85', 'N', 'N', '0'], ['VvtFQcwAErUIru', '85', '87', 'N', 'Y', '0'], ['JKTcYDOhBIJdTBG', '94', '85', 'Y', 'N', '0'], ['VJqtvLWNUdTEypjOCB', '85', '94', 'N', 'Y', '0'], ['ET', '80', '80', 'N', 'N', '2']]
100
-----------------------------------------------------------------------------
[('XWWpW', 15850), ('IXrLPdJhEekBRgsbkqI', 15850), ('BPJXuWxsGGNYz', 13850), ('UihwjdZaUXWuMsytRtN', 12850), ('NWpjgxcNegmyEGHlPTP', 12000), ('RRlRboFqAgLvzrJ', 9000), ('ZzjJWy', 9000), ('S', 8000), ('LgX', 7850), ('SGUCaHJVg', 7850), ('MXhBgPj', 7850), ('Wy', 7850), ('KRXBnwAzDGjpfJgRpKt', 7850), ('MlhsUsruSKdrAGkUerE', 7850), ('RdvGLr', 7850), ('JBOyaqxicVGB', 7000), ('KSSHsCEhNHXIMxnKjszE', 7000), ('HmPorGeOs', 6850), ('JKTcYDOhBIJdTBG', 6850), ('HdXkkOHRQoG', 6850), ('IB', 6850), ('SkPGcYDnYyIp', 6000), ('HRYFlarRQhe', 6000), ('NsQbL', 6000), ('TrFXiYBMzJ', 6000), ('YzYKojgqgraUpqNyJ', 6000), ('KRJVphYKwQTOMc', 6000), ('TOWFblEWAuVgAxdHt', 6000), ('KEKFcpbDWQXUsQTXvFbs', 6000), ('SblEZfNCkGAkRSrzFADB', 5000), ('WQHneRqIh', 4850), ('BhGejmW', 4850), ('VnVXCwwJdbrusXG', 4850), ('OaV', 4850), ('JgycuqAJHELopIoZm', 4850), ('DgRHzC', 4850), ('GnGatTgZBPgj', 4000), ('PVFVBEocVjjpg', 4000), ('WVsTKZHjDEc', 4000), ('JaOThlpkrRkejXMMXgbu', 3000), ('MHJszTi', 3000), ('HolSWzxphdbM', 3000), ('BNziq', 3000), ('AFEEic', 2000), ('ZFTdFawbiwDG', 1000), ('BGLYzCxFVARuGu', 1000), ('CayHZQXpTpyFPSuJz', 1000), ('PvgXSkNZQNcfJrgTzgm', 1000), ('NiAntWp', 850), ('QhgGp', 850), ('Te', 850), ('WJsSWOCR', 850), ('NUPyQqEhklWtWxeIz', 850), ('LsyePjMaoonOscyyUQY', 850), ('PZhrRpBMpm', 850), ('W', 850), ('NIrWcjt', 850), ('AdLhdCBxwmJXRm', 850), ('NhmSyMnvHxUkjye', 850), ('JskIgwiNH', 850)]
结果跟提交上去的一致均为:
XWWpW
15850
315050

程序中的jiangli_data.txt内容如下:

100
KSSHsCEhNHXIMxnKjszE 93 98 N Y 0
KRXBnwAzDGjpfJgRpKt 95 90 Y Y 0
JBOyaqxicVGB 96 84 N Y 0
HolSWzxphdbM 99 80 Y Y 0
YzYKojgqgraUpqNyJ 95 90 N N 0
LgX 97 94 Y Y 0
HCRuZbWsSDgkOEoj 80 90 N Y 0
S 85 89 N Y 10
AdLhdCBxwmJXRm 78 97 Y N 0
QhgGp 85 87 Y N 0
ZFTdFawbiwDG 87 80 N Y 0
JaOThlpkrRkejXMMXgbu 95 80 Y Y 0
NiAntWp 85 91 Y N 0
Te 81 81 Y Y 0
TrFXiYBMzJ 92 87 N N 0
MlhsUsruSKdrAGkUerE 97 92 Y Y 0
NWpjgxcNegmyEGHlPTP 88 94 N N 5
VCXJjomOzywFZBVkDR 87 75 Y N 0
PxZYNvXNdbUtBIp 82 75 N Y 0
TsJkMpF 85 99 N Y 0
BwaIeOrqdatudl 85 80 N N 0
IB 95 90 Y N 0
HmPorGeOs 98 85 Y N 0
DgRHzC 87 82 Y N 0
WkRmkErigra 90 75 Y N 0
MZdQ 85 78 N N 0
NIrWcjt 81 95 Y N 0
MQBfcr 85 80 Y N 0
IXrLPdJhEekBRgsbkqI 95 85 Y Y 6
MWAd 89 75 Y N 0
BVYqUBdV 76 79 Y Y 0
NhmSyMnvHxUkjye 79 90 Y N 0
NUPyQqEhklWtWxeIz 80 95 Y N 0
NsQbL 95 86 N N 0
KEKFcpbDWQXUsQTXvFbs 95 95 N N 0
ZzjJWy 90 80 N Y 3
TOWFblEWAuVgAxdHt 95 100 N N 0
HRYFlarRQhe 100 90 N N 0
SGUCaHJVg 95 87 Y Y 0
CsNEZwUWERVFFxLsdyK 85 94 N N 0
PZhrRpBMpm 80 85 Y N 0
LsyePjMaoonOscyyUQY 82 98 Y Y 0
SkPGcYDnYyIp 95 90 N N 0
OaV 90 90 Y N 0
W 75 90 Y N 0
TJjZwq 85 75 Y Y 0
PVFVBEocVjjpg 90 88 N N 0
HMJecx 85 100 N Y 0
PvgXSkNZQNcfJrgTzgm 90 75 N Y 0
VnVXCwwJdbrusXG 89 95 Y N 0
BNziq 95 76 Y Y 0
MNjzTqMCtx 85 95 N N 0
UihwjdZaUXWuMsytRtN 90 88 Y N 7
HdXkkOHRQoG 93 85 Y N 0
DHDAFValkXKFYjznnn 75 100 N N 0
JskIgwiNH 85 85 Y N 0
SeYSBFuVQaEUXwf 75 80 N Y 0
XfGMOTDT 82 75 Y Y 0
GnGatTgZBPgj 90 90 N N 0
K 85 80 Y Y 0
KRJVphYKwQTOMc 95 85 N N 0
DFWtLGoFLXHptkI 75 92 N Y 0
CayHZQXpTpyFPSuJz 87 76 N Y 0
RRlRboFqAgLvzrJ 89 75 N Y 4
DbWHykSi 85 84 N Y 0
WQHneRqIh 90 82 Y N 0
BhGejmW 90 93 Y N 0
AFEEic 95 80 Y N 0
MXhBgPj 96 98 Y Y 0
WJsSWOCR 77 85 Y Y 0
A 79 82 N N 0
Wy 95 85 Y Y 0
OtgBaCKAVmMEFxPVcbE 84 75 N Y 0
DnBaraTLVBkPJJj 85 75 Y N 0
Kzir 84 75 Y Y 0
PxCMvWOdyZcRW 90 76 N N 0
ZcztKxXsrhqSDuxBeN 80 84 N Y 0
EesxZKSACX 80 87 N N 0
CvCT 75 85 N N 0
UwrgH 76 80 Y N 0
VwcGoYzhhVFWGyFzjdn 78 90 N N 0
KQ 75 100 N Y 0
MHJszTi 95 79 Y Y 0
BPJXuWxsGGNYz 87 92 Y Y 5
XWWpW 96 92 Y Y 6
GKIdgeGTHWd 80 77 Y Y 0
MeGS 88 75 N N 0
SblEZfNCkGAkRSrzFADB 90 88 N Y 0
BGLYzCxFVARuGu 87 75 N Y 0
WMQkzgUafGBnqiuBgRpn 77 75 N Y 0
LIWndzmjDozIMTu 80 94 N Y 0
LsPuNFjIzCcppis 80 80 Y N 0
JgycuqAJHELopIoZm 87 85 Y N 0
UJmFKI 75 90 N N 0
RdvGLr 95 85 Y Y 0
WVsTKZHjDEc 90 85 N N 0
VvtFQcwAErUIru 85 87 N Y 0
JKTcYDOhBIJdTBG 94 85 Y N 0
VJqtvLWNUdTEypjOCB 85 94 N Y 0
ET 80 80 N N 2

    最近也是刚开始练习这些小题目,因为水平和知识有限,肯定有很多不熟悉或者是不明白的地方,如果有完成这个题目没有出问题的朋友还望不吝赐教,谢谢。希望同样处于在求职状态中的每一个同学可以一直努力找到自己心仪的工作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值