摘要: http://codeforces.com/contest/296/problem/D在讲这道题之前我先现简要介绍一下Floyd—Warshall算法,方便大家更好的了解这道题。Floyd—Warshall算法的原理是动态规划。设D[i][j][k]为从i到j只以1~k中节点为中间结点的最短路径长度,则:(1)若最短路径经过点k,那么D[i][j][k]=D[i][k][k-1]+D[k][j][k-1](2)若最短路径不经过点k,那么D[i][j][k]=D[i][j][k-1]因此D[i][j][k]=min(D[i][k][k-1]+D[k][j][k-1],D[i][j][k]=D[i 阅读全文
posted @ 2013-04-12 03:16 aiiYuu 阅读(460) 评论(2) 推荐(0) 编辑
摘要: http://codeforces.com/contest/296/problem/C线段树的成段更新模板提对于k的情况可以先行处理,具体看代码因为很久以前学线段树只会了单点更新,但是知道有这样的题,于是果然在notonlysuccess大神的博客上找到了模板,改了一下accept了。View Code #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define lson l , m , rt <& 阅读全文
posted @ 2013-04-12 03:01 aiiYuu 阅读(329) 评论(2) 推荐(0) 编辑
摘要: http://codeforces.com/contest/296/problem/B对于两个字符串ch1和ch2,开四个数组a[i],b[i],c[i],d[i]分别表示 所有的情况数 、ch1[i]<=ch2[i]的情况数、ch1[i]>=ch2[i]的情况数、ch1[i]==ch2[i]的情况数,那么根据容斥原理,有ans =∏a[i] -∏b[i] -∏c[i] +∏d[i]。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#i 阅读全文
posted @ 2013-04-12 02:56 aiiYuu 阅读(281) 评论(0) 推荐(0) 编辑