Codeforces Round #544 (Div. 3) (补)
D:没有注意到a==0&&b==0的情况,把自己卡崩了。对于数学公式推导一定要注意关于0的特殊情况,不可以少
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <cstring> 3 #include <string> 4 #include <map> 5 #include <set> 6 #include <algorithm> 7 #include <fstream> 8 #include <cstdio> 9 #include <cmath> 10 #include <stack> 11 #include <queue> 12 #define lson l,m,rt<<1 13 #define rson m+1,r,rt<<1|1 14 using namespace std; 15 const double Pi=3.14159265358979323846; 16 typedef long long ll; 17 const int MAXN=200000+5; 18 const int dx[5]={0,0,0,1,-1}; 19 const int dy[5]={1,-1,0,0,0}; 20 const int INF = 0x3f3f3f3f; 21 const int NINF = 0xc0c0c0c0; 22 const ll mod=1e9+7; 23 struct node 24 { 25 int a,b; 26 long double c; 27 }d[MAXN]; 28 29 bool cmp(node a,node b) 30 { 31 return abs(a.a)<abs(b.a); 32 } 33 34 bool cmp2(node a,node b) 35 { 36 return a.c<b.c; 37 } 38 39 int main() 40 { 41 int n;scanf("%d",&n); 42 for(int i=1;i<=n;i++) 43 { 44 scanf("%d",&d[i].a); 45 } 46 for(int i=1;i<=n;i++) 47 { 48 scanf("%d",&d[i].b); 49 } 50 int cnts=0; 51 for(int i=1;i<=n;i++) 52 { 53 if(d[i].a==0&&d[i].b==0) cnts++; 54 55 if(d[i].a!=0) 56 d[i].c=d[i].b*1.0/d[i].a; 57 else d[i].c=0; 58 } 59 sort(d+1,d+n+1,cmp); 60 int t=1; 61 for(int i=1;i<=n;i++) 62 { 63 if(d[i].a==0) continue; 64 else 65 { 66 t=i; 67 break; 68 } 69 } 70 if(d[n].a==0) 71 { 72 cout << cnts<<endl; 73 return 0; 74 } 75 // cout <<t<<endl; 76 /* for(int i=t;i<=n;i++) 77 { 78 cout <<d[i].c<<" "; 79 }*/ 80 sort(d+t,d+n+1,cmp2); 81 /*for(int i=t;i<=n;i++) 82 { 83 cout <<d[i].c<<" "; 84 }*/ 85 int ans=1;int cnt=1;long double x=d[t].c; 86 for(int i=t+1;i<=n;i++) 87 { 88 if(d[i].c==x) 89 { 90 cnt++; 91 ans=max(ans,cnt); 92 } 93 else 94 { 95 x=d[i].c; 96 cnt=1; 97 } 98 } 99 cout <<ans+cnts<<endl; 100 return 0; 101 }
F1:被D心态搞崩,然后F1比赛的时候读不懂题,Your task is to find any spanning tree of this graph such that the maximum degree over all vertices is maximum possible这句话半天理解不了,下来问,才知道直接简单bfs就可以了,然后忘了bfs咋写,写了好长时间(太菜了)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <cstring> 3 #include <string> 4 #include <map> 5 #include <set> 6 #include <algorithm> 7 #include <fstream> 8 #include <cstdio> 9 #include <cmath> 10 #include <stack> 11 #include <queue> 12 #define lson l,m,rt<<1 13 #define rson m+1,r,rt<<1|1 14 using namespace std; 15 const double Pi=3.14159265358979323846; 16 typedef long long ll; 17 const int MAXN=200000+5; 18 const int dx[5]={0,0,0,1,-1}; 19 const int dy[5]={1,-1,0,0,0}; 20 const int INF = 0x3f3f3f3f; 21 const int NINF = 0xc0c0c0c0; 22 const ll mod=1e9+7; 23 int dis[MAXN]; 24 vector <int> G[MAXN]; 25 26 void bfs(int M) 27 { 28 queue <int> Q; 29 Q.push(M); 30 dis[M]=1; 31 while(!Q.empty()) 32 { 33 int F=Q.front();Q.pop(); 34 35 for(int i=0;i<G[F].size();i++) 36 { 37 if(dis[G[F][i]]==0) 38 { 39 printf("%d %d\n",F,G[F][i]); 40 Q.push(G[F][i]); 41 dis[G[F][i]]=1; 42 } 43 } 44 } 45 } 46 int main() 47 { 48 int n,m; 49 scanf("%d%d",&n,&m); 50 for(int i=1;i<=m;i++) 51 { 52 int a,b;scanf("%d%d",&a,&b); 53 G[a].push_back(b); 54 G[b].push_back(a); 55 } 56 int Msize=0;int M=1; 57 for(int i=1;i<=n;i++) 58 { 59 if(G[i].size()>Msize) 60 { 61 Msize=G[i].size(); 62 M=i; 63 } 64 } 65 bfs(M); 66 return 0; 67 }
现在还是一碰见图和树的问题就发怵。
E:还没写出来