Codeforences #351 VK CUP
来源:互联网 发布:高校综合数据分析平台 编辑:程序博客网 时间:2024/04/26 20:36
【A. Bear and Game:】
【题意】给这么多时间点,这些时间点是interesting的点,如果连续15分钟不出现interesting的点的话,就要换了;问最长能看多上时间
【分析】直接模拟一下即可。
【AC代码】
#include <bits/stdc++.h>using namespace std;int a[100];int main(){ int n; while(~scanf("%d",&n)){ for(int i=1; i<=n; i++){ scanf("%d",&a[i]); } if(a[1]>15){ puts("15"); return 0; } for(int i=2; i<=n; i++){ if(a[i]-a[i-1]>15){ printf("%d\n",a[i-1]+15); return 0; } } if(a[n]<75) { cout<<a[n]+15<<endl; } else{ cout<<"90"<<endl; } } return 0;}
【B. Problems for Round】
【题意】把1到n这些数放到两个容器里,要求第一个容器里的任何数都小于第二个容器里的任何数,还有就是相似的不能放一块,相似没有传递性
【分析】两个容器第一个记录最大值,第二个记录最小值,对每一对相似的数,小的放在第一个,大的放在第二个,同时检测是否满足最大值最小值,还要更新最大最小,答案就是两者的差!
【AC代码】
#include <bits/stdc++.h>using namespace std;int a[100010];const int INF = 0x3f3f3f3f;int main(){ int n,m,u,v,maxx=-1,minn=INF,ans; cin>>n>>m; for(int i=1; i<=m; i++){ cin>>u>>v; if(u>v)swap(u,v); maxx = max(maxx,u); minn = min(minn,v); } if(m==0)ans=n-1; else{ if(minn<maxx) ans=0; else ans = minn-maxx; } cout<<ans<<endl; return 0;}
【C. Bear and Colors】
【题意】给出这么多颜色,在一个序列中,dominant是出现次数最多的数,如果出现次数最多的不止一个,那么就是数值最小的那个
【分析】可以直接暴力统计了
【AC代码】
#include <bits/stdc++.h>using namespace std;int n,a[5010];int ans[5010];int temp;int main(){ cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; for(int i=1; i<=n; i++){ int cnt[5010]={0}; int maxx=-1; for(int j=i; j<=n; j++){ cnt[a[j]]++; if(cnt[a[j]]>maxx){ maxx = cnt[a[j]]; temp = a[j]; }else if(cnt[a[j]]==maxx&&a[j]<temp){ temp = a[j]; } ans[temp]++; } } for(int i=1; i<=n; i++)cout<<ans[i]<<" "; return 0;}
【D. Bear and Two Paths】
【题意】给出n个节点,然后给出两条路线的起点和终点,要求你构造一个无向图,使无向图中a,b之间和c,d之间均无直接相连的边,且要求这个图的边的条数不超过k
【分析】发现n==4时怎么都不可能满足,可以构造这样的无向图,第一条路线ac...db;第二条路线ca...bd,这样的边是n+1条,是最少的了
【AC代码】
#include <bits/stdc++.h>using namespace std;int n,k,a,b,c,d;int ans[1010],vis[1010];int main(){ cin>>n>>k; cin>>a>>b>>c>>d; memset(vis,0,sizeof(vis)); memset(ans,0,sizeof(ans)); vis[a]=vis[b]=vis[c]=vis[d]=1; if(k<n+1||n==4){ puts("-1"); return 0; } ans[1]=a,ans[2]=c,ans[n-1]=d,ans[n]=b; int pos=3; for(int i=1; i<=n; i++){ if(!vis[i]) ans[pos++]=i; } for(int i=1; i<=n; i++)cout<<ans[i]<<" ";cout<<endl; cout<<ans[2]<<" "<<ans[1]<<" "; for(int i=3; i<=n-2; i++)cout<<ans[i]<<" "; cout<<ans[n]<<" "<<ans[n-1]<<endl; return 0;}
【ps:后面的题暂时做不来QAQ】
0 0
- Codeforences #351 VK CUP
- 【VK Cup 2012】final
- VK Cup 2015
- Codeforces VK Cup 2015
- VK Cup 2017
- Codeforces VK Cup 2017
- [Codeforces VK Cup 2016
- VK Cup 2017
- VK Cup 2017
- VK Cup 2015
- VK Cup 2015
- VK Cup 2017
- VK Cup 2017
- VK Cup 2012 Finals E
- VK Cup 2012 Round 1
- VK Cup 2012 Round 2
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) easy(上)
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) A B C D 构造
- 安装JDK
- UVA_191_Intersection
- android property
- CodeForces 149D Coloring Brackets
- Java 线程
- Codeforences #351 VK CUP
- Linux下图像压缩、格式转换、缩放、旋转
- C++第五次作业
- linux 商业项目 makefile 自动生成工具Autotools的使用
- 面向对象 类的理解
- 动规-多边形游戏
- Java中HashMap的transfer方法理解
- 红黑树
- 【黑马Android】(09)电话听听器