Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
一遍AC了,枚举每个断点。可是离死不远了,还是要拒绝暴力啊。不知道谁有更好的算法In Reply To:路过的大牛们给个思路!!!!!!!!!!!!!!!!!!!!!!!! Posted by:smallcircle at 2008-04-12 15:47:30 #include <iostream> using namespace std; int a[1001], request[10000][2], n, p; bool flag[1001]; void circle ( int start ) { int i; for ( i = 1; i <= n; i ++ ) { if ( start <= n ) a[i] = start; else a[i] = start % n; start++; } } int caculate () { int count = 0; for ( int i = 1; i <= n; i ++ ) if ( flag[i] ) count++; return count; } int main () { //freopen ( "1944.txt", "r", stdin ); int i, j, s, t, count = 1000, k; scanf ( "%d%d", &n, &p ); for ( j = 0; j < p; j ++ ) scanf ( "%d%d", &request[j][0], &request[j][1] ); for ( i = 1; i <= n; i ++ ) { circle ( i ); memset ( flag, false, sizeof ( flag ) ); for ( j = 0; j < p; j ++ ) { int v1 = a[request[j][0]], v2 = a[request[j][1]]; if ( v1 > v2 ) { int temp = v1; v1 = v2; v2 = temp; } for ( k = v1; k < v2; k ++ ) flag[k] = true; } count = count > caculate () ? caculate () : count; } printf ( "%d", count ); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator