摘要: http://acm.sjtu.edu.cn/OnlineJudge/problem/1008对起始年份和结束年份,可以对每一天单独判断;对中间的每个整年,周末总的天数分为两部分:1. 每个整年恰有完整的52个周,所以至少有 2*52 天是周末;2. 闰年时,366%7 = 2,需要判断12-31和12-30是否为周末即可,平年需要判断12-31是否为周末;对中间的每个整年,都有11天假日,注意周末与假日重合的情况。这道题麻烦之处在于星期的计算和周末与假日重合时的处理。星期的计算公式:1 int getweek(int y, int m, int d)2 {3 if (m==1 || ... 阅读全文
posted @ 2013-10-06 17:38 努力变瘦 阅读(287) 评论(0) 推荐(0) 编辑
摘要: http://acm.sjtu.edu.cn/OnlineJudge/problem/1006这道题目和最大连续子序列不同的是,要求子序列至少包含两个元素。用 sum[i] 表示sigma{a[j], j=1...i},即前缀和用 m[i] = min{sum[j], j=1...i} , m[0] = 0这样 sum[i]-m[i-2] 就表示以 i 结尾的至少包含两个元素的最大连续子序列和,所以问题可以表示为求ans = min{sum[i]-m[i-2], i=2...n} 1 # include 2 3 # define INF 105 4 5 int n, x, tmp; 6 ... 阅读全文
posted @ 2013-10-06 10:31 努力变瘦 阅读(736) 评论(0) 推荐(0) 编辑