题意:给出最后的时间n,div 1必须和div2一起举行,并且div2的时间总是比div1大1
给出Sereja(只能参加div2)参加过的k场比赛的时间,问他最少错过了多少场div2,最多错过了多少场div 2
先扫描一遍单个的没有用过的时间,再扫一遍连续的两个没有用过的时间
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<set> 9 #include<queue> 10 #include<algorithm> 11 using namespace std; 12 13 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) 14 15 typedef long long LL; 16 const int INF = (1<<30)-1; 17 const int mod=1000000007; 18 const int maxn=100005; 19 20 int hash[maxn]; 21 22 int main(){ 23 int n,m; 24 cin>>n>>m; 25 memset(hash,0,sizeof(hash)); 26 27 28 while(m--){ 29 int x,u,v; 30 cin>>x; 31 if(x==1){ 32 cin>>u>>v; 33 hash[u]=hash[v]=1; 34 } 35 if(x==2) { 36 cin>>u; 37 hash[u]=1; 38 } 39 } 40 41 int minn=0,maxx=0; 42 43 for(int i=1;i<n;i++){ 44 if(hash[i]==0) maxx++; 45 } 46 47 48 for(int i=1;i<n-1;i++){ 49 if(hash[i]==0&&hash[i+1]==0) { 50 minn++; 51 hash[i]=1; 52 hash[i+1]=1; 53 } 54 } 55 56 printf("%d %d ",maxx-minn,maxx); 57 return 0; 58 }
读题读了好久的说啊-------------- gooooooooooooo