#思路首先记录各个节点的上下级关系,然后深度优先遍历更新各个节点的price,最后将所有节点的stock(如果不是零售商则为0)和对应的price相乘得到。 #代码#include <iostream>#include <vector>#include <cstring>#define MAX 100000using namespace std;int n;double rootPrice,percent;double price[MAX];double stock[MAX];vector<vector<int> > chain;in ...
1077. Kuchiguse (20)
#思路将每一行的逆序存放在strs中,然后找strs中的所有line的相同前缀。 #代码#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;int main(){ int n; scanf("%d",&n); int enter;// the '\n' followed n scanf("%c",&enter); vector<string> strs; while(n--)/ ...
生成一亿个互不相同的数
为什么是一亿1 从编译器&操作系统考虑在ubuntu12.04 + g++4.6.3的实验中,32位的操作系统只能开出1<<28的数组,在64位操作系统中这一数值是1<<30;如果采用STL中的bitset,那么32位操作系统中最大能开出1<<31,在64位操作系统中开出1<<34(如果再大ld会报错);以上的数组都是在程序的global scope中开出,空间在程序的DATA 或者 BSS 段,且这两个段都取决与所用的操作系统。2 从磁盘空间考虑1<<30个数需要的空间为1<<32Bytes = 4GB #生成指 ...
PAT 总结(C++ Python)
#Python list_a = [init_num] * N #初试列表list_a内容为N个init_num sorted()是内建函数,用法是 sorted(data, cmp=None, key=None, reverse=False);data是待排序数据,可以是list,dict;cmp是带两个参数的函数;key是带一个参数的函数;reverse用来指示是否逆序; sorted(students, key=lambda student : student[2])表示对students排序,按照每个student的第三个字段排序; sorted(students, cm ...
PAT 1032. Sharing
#题目链接 #思路 既然是找相同的位置,那么相同位置后面的一定都是相同的,所以首先恢复两个链表,接着砍掉相对更长的链表的比另一个链表多出的位置,这样两个链表的长度就相同了。 接着就查找了,遍历 OR 二分? 题目中的i,a等是没有用的 #知识点 python中格式化打印int,用 print "%06d"%a #前面的0用来表示,不够6位用0补齐 在C中,用printf("%.6d",a) //前面的.(点)用来表示,不够6位用0补齐,默认为空格 #样例代码(c++ && python一个样例超时)python在搜索两个链表相同位置的时候用的是从头 ...
PAT 1035. Password
#链接http://pat.zju.edu.cn/contests/pat-a-practise/1035 #知识点 python string 的连接用 += #样例代码n = int(raw_input())d={'1':'@','0':'%','l':'L','O':'o'}r=[]def check(p): s='' for i in p: if d.has_key(i): s += d[i] else: s += i return sfor i in range(n): ...
PAT 1036. Boys vs Girls
#链接[http://pat.zju.edu.cn/contests/pat-a-practise/1036] #样例代码n = int(raw_input())male=[]female=[]for i in range(n): (name,g,ids,grade) = (x for x in raw_input().split()) grade = int(grade) if g =='M': male.append([grade,name,ids]) else: female.append([grade,name,ids])male.s ...
PAT 1037. Magic Coupon
#链接[http://pat.zju.edu.cn/contests/pat-a-practise/1037] #思路 将两个list排序 分别从两个list依次对应相乘,直到结果为负,将之前的结果相加 将两个list翻转,重复上一个过程#代码样例n = raw_input()a = [int(x) for x in raw_input().split()]n = raw_input()b = [int(x) for x in raw_input().split()]a.sort()b.sort()total=0for i in range(min(len(a),len(b))): i ...
PAT 1038. Recover the Smallest Number (30)
#题目链接http://pat.zju.edu.cn/contests/pat-a-practise/1038 #注意对于两个具有相同首字母的字符串,到底哪个放在前面才能使得连接起来的字符串代表的数字更小,一个简单的方法是分别连接字符串a+b,b+a,然后比较连接后的两个字符串,哪个小,哪种链接方式就是对的。 #示例代码(最后一个case超时)n = [x for x in raw_input().split()]del n[0]n.sort()for i in range(1,len(n)): if n[i-1][0] == n[i][0]: if n[i]+n[i-1] ...
PAT 1016. Phone Bills (25)
#codecharge = [int(x) for x in raw_input().split()]n = int(raw_input())records={}def cal(start,end): (month,sday,shour,sminute) = (int(x) for x in start.split(':')) (month,eday,ehour,eminute) = (int(x) for x in end.split(':')) wholeday = 0 for i in range(len(charge)): wh ...