2013年10月8日

srm593 div1 450/div2 1000 MayTheBestPetWin

摘要: 题目大意: 给你n只动物,第 i 只动物完成一项任务需要花费的时间是A[i]至B[i]单位个时间,要求你将这n只动物分成两支队,竞赛。要求是两支队伍完成任务的时间差竟可能小,要你输出两支队伍完成任务最大的时间差maxdiff(S,T)。分析: 设第 i 只动物完成任务的时间的上下限分别是B[i],A[i]; ΣB[i]=tB, ΣA[i]=tA; 假设已经分成了两个集合,S和T;设S集合完成任务的上下限分别是B(S),A(S),T集合B(T),A(T)那么maxdiff(S,T)=max(B(T)-A(S),B(S)-A(T)); 因为A(S)=tA-A(T),B(S)=tB-B(T)... 阅读全文

posted @ 2013-10-08 22:16 uestc小田 阅读(270) 评论(0) 推荐(0)

2013年10月5日

Round #204 div1 A/div 2 C :::: Jeff and Rounding

摘要: 题目的大意是给你2*n个浮点数,要求你选出n对浮点数,每一对浮点数其中一个数取上限,另一个数取下限,然后求2*n个处理后浮点数的和与处理前浮点数的和的差的绝对值。即min |(a1+a2+.....+an)-([ai1+aj1]+[ai2+aj2]+.....+[ain+ajn])|;解题思路: 要注意的是 例如 2.0的上限和下限都是2.0; 首先对每一个浮点数都取其下限,这样得到的差值就是所有浮点数小数部分的和;然后则需要从2*n个数里面选出n个数取其上限,即下限加1,而如果这个数是个整数,那么不需要加1;因此统计加1个数的上限和下限即可;然后选择min abs(小数部分的和-加1的个.. 阅读全文

posted @ 2013-10-05 16:17 uestc小田 阅读(213) 评论(0) 推荐(0)

2013年5月17日

cdoj 1488 flip game解题报告

摘要: ALGORITHM ANALYSE:bfs+位运算//每个方格里的棋子只有两种状态,因此可用0,1表示,而整个棋盘则可以表示为一个十六位的二进制整数//若要对某个位置做翻转操作,可对整数进行异或操作,棋盘上每个位置上的翻转二进制数是可以预先求得的//bfs对每个位置进行翻转,因为整个棋盘只有十六个位置,因此所有的状态是不超过2^16的,对每个扩展进行标记后可以避免重复的状态//因为状态是有限的,因此队列可以为空CODE:#include #include #include int myqueue[500000],step[500000],qback=0,qfront=0;int flag[50 阅读全文

posted @ 2013-05-17 00:29 uestc小田 阅读(177) 评论(0) 推荐(0)

导航