侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Codeforces Beta Round #29 (Div. 2, Codeforces format)

2023-01-21 星期六 / 0 评论 / 0 点赞 / 86 阅读 / 19297 字

Codeforces Beta Round #29 (Div. 2,Codeforces format) http://codeforces.com/contest/29 A 1 #inc

... .

Codeforces Beta Round #29 (Div. 2,Codeforces format)

http://codeforces.com/contest/29

A

.

.
 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,mid,rt<<1 4 #define rson mid+1,r,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define pb push_back 7 #define maxn 1000005 8 typedef long long ll; 9 typedef unsigned long long ull;10 const ull MOD=257;11 /*#ifndef ONLINE_JUDGE12         freopen("1.txt","r",stdin);13 #endif */14 15 16 int main(){17     #ifndef ONLINE_JUDGE18       //  freopen("1.txt",stdin);19     #endif20     std::ios::sync_with_stdio(false);21     int n;22     cin>>n;23     int a[105],b[105];24     for(int i=1;i<=n;i++){25         cin>>a[i]>>b[i];26     }27     int flag=0;28     for(int i=1;i<=n;i++){29         for(int j=1;j<=n;j++){30             if(i!=j){31                 if(a[i]+b[i]==a[j]&&a[j]+b[j]==a[i]){32                     flag=1;33                 }34             }35         }36     }37     if(flag) cout<<"YES"<<endl;38     else cout<<"NO"<<endl;39 }
. View Code .

 

B

模拟

.

.
 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,stdin);19     #endif20     std::ios::sync_with_stdio(false);21     double l,d,v,g,r;22     cin>>l>>d>>v>>g>>r;23     double ans=0;24     if(v*g>d) ans=l/v;25     else{26         l-=d;27         double t=d/v;28         ans=t;29         double tt=g+r;30         int flag=0;31         while(t>=0){32             t-=g;33             if(t>=0){34                 t-=r;35             }36             if(t<0) flag=1;37         }38       //  cout<<t<<endl;39         if(flag==1){40             ans-=t;41         }42         ans+=l/v;43     }44     printf("%.7f/n",ans);45 }
. View Code .

 

C

找出一个度为1的点,然后跑dfs。因为值为1e9,所以需要离散化

.

.
 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,stdin);13 #endif */14 15 int n;16 vector<int>ve;17 int a[100005];18 int b[100005];19 int d[100005];20 vector<int>V[100005];21 22 int getid(int x){23     return lower_bound(ve.begin(),ve.end(),x)-ve.begin()+1;24 }25 26 void dfs(int pos,int pre){27     cout<<ve[pos-1]<<" ";28     for(int i=0;i<V[pos].size();i++){29         if(V[pos][i]!=pre){30             dfs(V[pos][i],pos);31         }32     }33 }34 35 int main(){36     #ifndef ONLINE_JUDGE37       //  freopen("1.txt",stdin);38     #endif39     std::ios::sync_with_stdio(false);40     cin>>n;41     for(int i=1;i<=n;i++){42         cin>>a[i]>>b[i];43         ve.pb(a[i]);44         ve.pb(b[i]);45     }46     sort(ve.begin(),ve.end());47     ve.erase(unique(ve.begin(),ve.end()),ve.end());48     int pos,pos1,pos2;49     for(int i=1;i<=n;i++){50         pos1=getid(a[i]);51         pos2=getid(b[i]);52         d[pos1]++,d[pos2]++;53         V[pos1].pb(pos2);54         V[pos2].pb(pos1);55     }56     for(int i=1;i<=n;i++){57         pos1=getid(a[i]);58         pos2=getid(b[i]);59         if(d[pos1]==1){60             pos=pos1;61             break;62         }63         if(d[pos2]==1){64             pos=pos2;65             break;66         }67     }68     dfs(pos,0);69 }
. View Code .

 

D

跑两个叶子结点的最短路,看看最后的个数是不是2*n-1

.

.
 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,stdin);13 #endif */14 15 int n;16 vector<int>ve[305];17 int vis[305];18 int d[305];19 vector<int>ans;20 21 22 void dfs(int pos,int pre,int last,vector<int>tmp){23     vis[pos]=1;24     if(pre!=0) {25         tmp.pb(pos);26     }27     if(pos==last){28         for(int i=0;i<tmp.size();i++){29             ans.pb(tmp[i]);30         }31         return;32     }33     for(int i=0;i<ve[pos].size();i++){34         if(!vis[ve[pos][i]]&&ve[pos][i]!=pre){35             dfs(ve[pos][i],pos,last,tmp);36         }37     }38 }39 40 int main(){41     #ifndef ONLINE_JUDGE42         freopen("1.txt","r",stdin);43     #endif44     std::ios::sync_with_stdio(false);45     cin>>n;46     int u,v;47     for(int i=1;i<n;i++){48         cin>>u>>v;49         ve[u].pb(v);50         ve[v].pb(u);51         d[u]++,d[v]++;52     }53     int co=0;54     for(int i=2;i<=n;i++){55         if(d[i]==1){56             co++;57         }58     }59     vector<int>son;60     son.pb(1);61     for(int i=1;i<=co;i++){62         cin>>u;63         son.pb(u);64     }65     son.pb(1);66     ans.pb(1);67     for(int i=0;i<son.size()-1;i++){68         memset(vis,0,sizeof(vis));69         vector<int>tmp;70         tmp.clear();71         dfs(son[i],son[i+1],tmp);72     }73     if(ans.size()==2*n-1){74         for(int i=0;i<ans.size();i++){75             cout<<ans[i]<<" ";76         }77         cout<<endl;78     }79     else{80         cout<<-1<<endl;81     }82 }
. View Code .

 

E

bfs搜索,思路很有趣

标记是用A和B的相对位置进行标记的,懂了这一点这题就解决了

.

.
 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define lson l,rt<<1|1 5 #define sqr(x) ((x)*(x)) 6 #define pb push_back 7 #define maxn 1000005 8 typedef long long ll; 9 typedef unsigned long long ull;10 /*#ifndef ONLINE_JUDGE11         freopen("1.txt",stdin);12 #endif */13 int n,m;14 vector<int>ve[505];15 int pre[505][505][2];16 bool book[505][505];17 vector<int>ans[2];18 19 bool bfs(){20     pre[1][n][0]=-1;21     pair<int,int>p,pp;22     p=make_pair(1,n);23     queue<pair<int,int> >Q;24     Q.push(p);25     while(!Q.empty()&&pre[n][1][0]==0){26         p=Q.front();27         Q.pop();28         int p1=p.first,p2=p.second;29         for(int i=0;i<ve[p1].size();i++){30             if(!book[ve[p1][i]][p2]){31                 book[ve[p1][i]][p2]=1;32                 for(int j=0;j<ve[p2].size();j++){33                     if(ve[p1][i]!=ve[p2][j]){34                         if(pre[ve[p1][i]][ve[p2][j]][0]==0){35                             pre[ve[p1][i]][ve[p2][j]][0]=p1;36                             pre[ve[p1][i]][ve[p2][j]][1]=p2;37                             pp=make_pair(ve[p1][i],ve[p2][j]);38                             Q.push(pp);39                         }40                     }41                 }42             }43         }44     }45     if(pre[n][1][0]==0) return false;46     int x=n,y=1,z;47     while(x>0){48         ans[0].pb(x);49         ans[1].pb(y);50         z=x;51         x=pre[x][y][0];52         y=pre[z][y][1];53     }54     return true;55 }56 57 int main(){58     #ifndef ONLINE_JUDGE59         freopen("1.txt",stdin);60     #endif61     std::ios::sync_with_stdio(false);62     cin>>n>>m;63     int u,v;64     for(int i=1;i<=m;i++){65         cin>>u>>v;66         ve[u].pb(v);67         ve[v].pb(u);68     }69     if(bfs()){70         cout<<ans[0].size()-1<<endl;71         for(int i=0;i<2;i++){72             for(int j=ans[i].size()-1;j>=0;j--){73                 cout<<ans[i][j]<<" ";74             }75             cout<<endl;76         }77     }78     else{79         cout<<-1<<endl;80     }81 82 }
. View Code . . .. ...

广告 广告

评论区