20150303(节日)
代码1
先计算每年a月的第1天是星期几,然后计算该月有几天,然后就知道第b个星期c存不存在了。int getWeekday(int year,int month, int day)得到星期几,int getMonthdays(int year, int month) 得到这个年的这个月有几天。
1  | //freopen("D://input.txt","r",stdin);  | 
20150304(网络延时)
代码1
这题用邻接表表示法,然后求树的最长长度。交换机用1-n表示,主机用n+1到n+m表示。
1  | //freopen("D://input.txt","r",stdin);  | 
20141202(Z字形扫描)
代码1
为了清除地知道应该往哪个方向走,设置一个方向数组int dirGroup[2][4] = {0,1,2,3,2,1,0,3};,最初时使用dirGroup[0],当向右或向下走不动时,改为dirGroup[1]。设置groupIndex=0,dirIndex = 0,表示当前应该走a = dirGroup[0][dirIndex]号的方向,当a表示0或2时,走完这个方向后,应该dirIndex = (dirIndex+1)%4,当a这个方向走不动时,就应该换一个groupIndex和dirIndex。
1  | //freopen("D://input.txt","r",stdin);  | 
20141203(集合竞价)
代码1
用一个结构体表示所有交易:
1  | struct Trans{  | 
把所有交易存在Trans transes[]中,然后排序。int num1, num2分别表示当p0为0时买家的交易数量和卖家的交易数量,num1=所有买家的交易数量之和,num2=0。然后随着p0不断增大,相应地减少num1和增加num2,若有一个p0使得min(num1, num2)变小了,则上一个p0就是答案。
1  | //freopen("D://input.txt","r",stdin);  | 
我发现了一个严重的错误,可能会酿成大错。
1  | /*bool cmp(Trans t1, Trans t2){  | 
1  | bool cmp(Trans t1, Trans t2){  | 
对于上面两个cmp函数,貌似都实现了同一个功能,但是只有第二个函数是对的。因为要保证,在t1.isCanceled和t2.isCanceled相同时,返回false。
当输入浮点数时,用scanf("%lf",&d) 
代码2
思想跟代码1一样,不过这个简洁一点
1  | //freopen("D://input.txt","r",stdin);  | 
47行把long long写成long了,害我找了半天,若找不出来,就70分了。
20140904(最优配餐)
代码1
这题使用BFS的方法,但是有一点很难想到的是:初始时居然要把每个分店都加入到队列中,好灵性啊。
1  | //freopen("D://input.txt","r",stdin);  | 
		
