USACO January 2014 Bronze Level
来源:互联网 发布:java泛型方法定义 编辑:程序博客网 时间:2024/06/09 08:05
当时没参加silver的比赛,今天就只是想熟悉一下python的语法(以前都用最熟悉的C++写),于是水了一下Bronze level的题目。
A:最后的结果肯定是在[begin, begin+17]的某个区间里,考虑到begin的可能取值很小,枚举即可。
reader = file('skidesign.in', 'r')writer = file('skidesign.out', 'w')N = int(reader.readline())hill = []for i in range(N): hill.append(int(reader.readline()))result = 10**8begin = min(hill)end = max(hill)# enumerate all casesfor i in range(begin, end+1): cur = 0 for h in hill: if h<i: cur += (h-i)**2 elif h>(i+17): cur += (h-i-17)**2 result = min([result, cur])writer.write(str(result))
B: 纯正的模拟题目,判断下一步对应的事件就可以了。
reader = file('slowdown.in', 'r')writer = file('slowdown.out', 'w')N = int(reader.readline())time = []dis = []cur_time = 0.0cur_dis = 0.0speed_inv = 1res = 0.0for i in range(N): tmp = reader.readline().split() if tmp[0]=='T': time.append(int(tmp[1])) else: dis.append(int(tmp[1]))time.sort()dis.sort()time_len = len(time)dis_len = len(dis)ptr1 = 0ptr2 = 0while ptr1<time_len or ptr2<dis_len: if ptr1<time_len: time1 = time[ptr1] else: time1 = 99999999 if ptr2<dis_len: time2 = cur_time+(dis[ptr2]-cur_dis)*speed_inv else: time2 = 99999999 if time1<time2: cur_dis += ((time1-cur_time)*1.0)/speed_inv res = time[ptr1] cur_time = time[ptr1] ptr1 += 1 speed_inv += 1 else: cur_dis = dis[ptr2] res = time2 cur_time = time2 ptr2 += 1 speed_inv += 1if cur_dis<1000: cur_time += (1000-cur_dis)*speed_invwriter.write(str(int(round(cur_time))))
C: 看上去挺难的。。。但是数据范围很小,借助于深度搜索,枚举每一种可能的组合,取出其中的最优值即可。
reader = file('bteams.in', 'r')writer = file('bteams.out', 'w')teams = []skill = []result = 0# just enumerate every possible casesdef dfs(pos): global result, teams, skill # check if it is a better solution if pos == 12: acc = [] for team in teams: acc.append(sum(team)) cur = max(acc)-min(acc) result = min([cur, result]) return # use recursion technique to search for i in range(4): if len(teams[i]) < 3: #print 'here: '+str(i) teams[i].append(skill[pos]) dfs(pos+1) teams[i].pop() returnfor i in range(4): teams.append([])print len(teams)for i in range(12): skill.append(int(reader.readline()))skill.sort()#print len(skill)teams[0].append(skill[0])result = sum(skill)dfs(1)writer.write(str(result))
0 0
- USACO January 2014 Bronze Level
- USACO 2012 January Contest, Bronze Division
- 【组队赛#9】USACO 2006 January Bronze
- USACO 2016 JANUARY CONTEST, BRONZE PROBLEM 1. PROMOTION COUNTING
- USACO 2013 March contest Bronze level 总结
- USACO 2016 JANUARY CONTEST, BRONZE PROBLEM 3. MOWING THE FIELD(收割庄稼)
- [USACO 2014 Jan Bronze] bteams题解
- P2770【USACO 2014 January Gold】难度系数
- [USACO] OPEN11 Bronze Division
- usaco 2008 jan bronze
- 【usaco 2013 Mar Bronze】
- 【USACO】JAN.BRONZE
- [USACO 2014 Jan Bronze]滑雪训练课程题解
- angryA (USACO 2016 JAN Bronze)
- USACO 2015 Feb Bronze 1.Censoring (Bronze) 栈+Hash
- USACO 2012 February Contest, Bronze Division
- Bronze Lilypad Pond, 2007 Feb usaco
- USACO 2015 US OPEN BRONZE 铜组 题解
- 使用事务批量导入数据
- 杭电2004
- qualcomm memory dump 抓取方法
- 谷歌眼镜开发Mirror API之语音命令清单
- 为clock的点击事件 添加各厂商原生系统时钟页面跳转
- USACO January 2014 Bronze Level
- 皇極體位度數
- WPF中UI及时更新,如何在处理长时间工作时,保持界面的持续更新
- Android 4.3新特性——SElinux简介
- oracle rac rman 批量删除归档日志脚本
- Union和Union All的区别
- 自定义消息通知
- eclipse使用hibernate工具逆向生成实体类
- 谷歌眼镜Mirror API之Reference