2011年9月28日
摘要: UVA_507这个题目实际上就是在求一个最大子串和。由于具有最大和的子串是具有这样的性质的,第一项不为负,并且,从第一项开始累加,中间不会有中间结果为负。因为一旦中间结果为负,我们是可以抛弃前半段的,因此就矛盾了。然后我们便根据这个特征去寻找具有最大和的子串即可。#include<stdio.h>#include<string.h>int main(){ int i,j,k,t,n,tt,x,y,tx,sum,ans; scanf("%d",&t); for(tt=0;tt<t;tt++) { scanf("%d", 阅读全文
posted @ 2011-09-28 22:40 Staginner 阅读(385) 评论(0) 推荐(0) 编辑
摘要: UVA_10827 由于矩形上下左右是相接的,所以我们不妨先在图的右、下、右下分别补上三个完整矩形,然后枚举矩形的左上角位置。由于数据量比较大,所以我们需要不断利用已经计算过的结果,这也是动态规划的基本思想之一。#include<stdio.h>#include<string.h>int a[200][200],b[200],c[200];int main(){ int i,j,k,t,n,x,y,ans; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i 阅读全文
posted @ 2011-09-28 22:08 Staginner 阅读(523) 评论(0) 推荐(0) 编辑
摘要: UVA_10720这个题目做的时候有点贪心的味道,就是如果一个点的度很多的话,那么它应该优先和度比较多的点连成边。一开始估算了下qsort的时间,觉得麻烦了,但后来老大说他之前就是用qsort过的,于是我便才开始写起qsort来。可能是因为剪枝用的比较得当或者题目的数据比较少才不致以超时吧。#include<stdio.h>#include<string.h>#include<stdlib.h>int a[10010],n,N,sum;int cmp(const void *_p,const void *_q){ int *p=(int *)_p; int 阅读全文
posted @ 2011-09-28 20:36 Staginner 阅读(470) 评论(0) 推荐(0) 编辑