題目連接:http://codeforces.com/contest/862/problem/Aios
題目意思:如今一個數列中有n個數,每一個數小於等於100,如今要讓這個數列的met=k,意思是若是從1-100中第一個未出現的數字爲met。c++
題目思路:在[0,k)區間內全部在數列中不存在的數的數量+check(k),check()表示判斷k是否存在,若是存在返回1,不存在返回0;ide
代碼:spa
1 //Author: xiaowuga 2 #include <bits/stdc++.h> 3 using namespace std; 4 #define inf 0x3f3f3f3f 5 #define MAX INT_MAX 6 #define mem(s,ch) memset(s,ch,sizeof(s)) 7 const long long N=100000; 8 const long long mod=1e9+7; 9 typedef long long LL; 10 typedef int II; 11 typedef unsigned long long ull; 12 #define nc cout<<"nc"<<endl 13 #define endl "\n" 14 II a[101]={0}; 15 int main() { 16 ios::sync_with_stdio(false);cin.tie(0); 17 II n,x; 18 cin>>n>>x; 19 for(II i=0;i<n;i++){ 20 II t; 21 cin>>t; 22 a[t]++; 23 } 24 II ans=0; 25 for(II i=0;i<x;i++){ 26 if(a[i]==0) ans++; 27 } 28 if(a[x]) ans++; 29 cout<<ans<<endl; 30 return 0; 31 }
題目連接:http://codeforces.com/contest/862/problem/B3d
題目意思: 給定一個n 個節點 n-1 條邊的圖,求最多還能加幾條邊,保證 這個圖不存在重邊,自環,而且是一個二分圖code
題目思路:首先一個樹是一個二分圖,咱們能夠經過dfs能夠把一個樹的節點push進兩個vector中,這樣就構造了一個二分圖,那麼答案就是size1×size2-n+1.blog
代碼:ip
1 //Author: xiaowuga 2 #include <bits/stdc++.h> 3 using namespace std; 4 #define inf 0x3f3f3f3f 5 #define MAX INT_MAX 6 #define mem(s,ch) memset(s,ch,sizeof(s)) 7 const long long N=100000; 8 const long long mod=1e9+7; 9 typedef long long LL; 10 typedef int II; 11 typedef unsigned long long ull; 12 #define nc cout<<"nc"<<endl 13 #define endl "\n" 14 II n; 15 vector<int>G[100000+10]; 16 vector<int>a[2]; 17 void dfs(II u,II fa,II s){ 18 a[s].push_back(u); 19 for(II i=0;i<G[u].size();i++){ 20 II v=G[u][i]; 21 if(v==fa) continue; 22 dfs(v,u,s^1); 23 } 24 } 25 int main() { 26 ios::sync_with_stdio(false);cin.tie(0); 27 cin>>n; 28 if(n==1){cout<<0<<endl;return 0;} 29 for(II i=0;i<n-1;i++){ 30 II x,y; 31 cin>>x>>y; 32 G[x].push_back(y); 33 G[y].push_back(x); 34 } 35 dfs(1,0,0); 36 LL sz1=a[1].size(); 37 LL sz2=a[0].size(); 38 cout<<sz1*sz2-n+1<<endl; 39 return 0; 40 }