| ||||||||||
| 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了#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
using namespace std;
typedef long long LL;
int n,f[1010],s,r;
LL p,minn;
struct na
{
int m,n;
} e[10010];
int main()
{
minn=10000;
cin>>n>>p;
for(int i=1;i<=p;i++)
{
scanf("%d%d",&e[i].m,&e[i].n);
if(e[i].m==e[i].n)
{
i--;
p--;
}
if(e[i].m>e[i].n)
swap(e[i].m,e[i].n);
}
for(int k=1;k<=n;k++) // 断开[k,k+1];
{
int ans=0;
int pan=0;
r=0;
memset(f,0,sizeof(f));
for(int i=1;i<=p;i++)
{
if(e[i].m<=k&&e[i].n>=k+1)
{
f[1]=max(f[1],e[i].m);
f[e[i].n]=max(f[e[i].n],n+1);
}
else
f[e[i].m]=max(f[e[i].m],e[i].n);
}
for(int i=1;i<=n;i++)
{
if(f[i]==0) continue;
if(i>r){
ans+=f[i]-i;
r=f[i];
}
else if(f[i]>r)
{
ans+=f[i]-r;
r=f[i];
}
if(ans>minn)
break;
}
if(ans<minn)
minn=ans;
}
cout<<minn;
return 0;
}
/*
5 3
4 2
1 3
5 4
*/
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator