摘要:        
用列队,按顺序一个个发送信号,然后当一个节点所有信号都接受了c>0就加入列队,然后继续。。。。 网上题解应该比较多,我直接上代码吧:#include <stdio.h>#include <assert.h>#include <stdlib.h>#define QMAX 1000int dot[200];int map[200][200];int link[200][200];int count[200];int queue[QMAX];int rear, head;int in[200], out[200];void enqueue(int k){	i    阅读全文
posted @ 2011-07-21 22:49
zqynux
阅读(869)
评论(0)
推荐(0)
        
            
        
        
摘要:        
这题和USACO里一题挺像的,具体那题是啥不记得了,反正暴力枚举就行,数据不大,代码如下:#include <stdio.h>#include <string.h>#include <stdlib.h>#define INF 0xFFFFFFF#define min(a, b) ((a)<(b)?(a):(b))int f[101];char str[101];char sub[100][101];int main(int argc, char **argv){	int i, j, k;	int n, l;	scanf("%s\n"    阅读全文
posted @ 2011-07-21 16:31
zqynux
阅读(165)
评论(0)
推荐(0)
        
            
        
        
摘要:        
直接使用了系统的排序,感觉有点作弊的感觉。。。代码:#include <stdio.h>#include <string.h>#include <stdlib.h>char str[10000][257];int com(const void *a, const void *b){	return strcmp(a, b);}int main(int argc, char **argv){	int i;	int n;	scanf("%d\n", &n);	for(i = 0; i < n; i++){ scanf("    阅读全文
posted @ 2011-07-21 16:18
zqynux
阅读(218)
评论(0)
推荐(0)
        
            
        
        
摘要:        
N比较小,暴力搜就行,代码如下:#include <stdio.h>#include <stdlib.h>int num[20];int ans = 0xFFFFFFF, n, m;int t;void srch(int now){	if(now == n){ if(t >= m && t < ans){ ans = t; } if(t == m){ printf("0\n"); exit(0); } return;	}	srch(now + 1);	t += num[now];	srch(now + 1);	t -= n    阅读全文
posted @ 2011-07-21 16:13
zqynux
阅读(210)
评论(0)
推荐(0)
        
            
        
        
摘要:        
贪心,转题解:很好的一道贪心。首先一个需要明确的问题就是因为要分成1*1的格子,所以每一条边肯定都要切,只不过是切的次数的多少有所不同。对于每一条纵边来说,它所需要切得次数等于在这条纵向边切之前的已经切的横边的次数。对于横边就看纵边。这样,一个很显然的想法就是让代价大的先切,这样的话满足代价大的切得次数少。把横边和纵边排个序,然后不断的维护ans即可。 代码:#include <stdio.h>#include <stdlib.h>int heng[2000], shu[2000];int ans;int com(const void *a, const void *b    阅读全文
posted @ 2011-07-21 11:54
zqynux
阅读(318)
评论(0)
推荐(0)
        
 
                    
                 
 浙公网安备 33010602011771号
浙公网安备 33010602011771号