Codeforences #351 VK CUP

【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】

时间: 2024-10-08 23:50:29

Codeforences #351 VK CUP的相关文章

Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) B

#include<stdio.h> #include<algorithm> #include<vector> #include<string.h> using namespace std; int main() { int n,m,i; while(scanf("%d%d",&n,&m)!=EOF) { vector<int> da,xi; int a,b; int maxa=1,minb=n; for(i=1

Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition)

A. Bear and Game 题意:一个体育节目,它可能在某一分钟是很有趣的,其他时间都是很无聊的,如果持续十五分钟都很无聊的话那么Bear就会关掉电视,问什么时候会关掉电视. 题解:用第i个有趣的时间减去第i-1个有趣的时间,如果差值大于十五分钟那就输出第i个有趣的时间+15.注意第一个有趣的时间要为0,最后一个为90. 代码: 1 /*A*/ 2 #include<cstdio> 3 using namespace std; 4 5 const int maxn=95; 6 7 int

DP VK Cup 2012 Qualification Round D. Palindrome pairs

题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443 1 /* 2 题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对 3 DP:很巧妙的从i出发向两头扩展判断是否相同来找回文串 4 dpr[i] 代表记录从0到i间的回文子串的个数,dpl[i] 代表记录i之后的回文子串个数 5 两两相乘就行了 6 详细解释:http://blog.csdn.net/shiyuankongbu/article/details

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组

E. DNA Evolution time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Everyone knows that DNA strands consist of nucleotides. There are four types of nucleotides: "A", "T", "

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals)爆零记

昨晚一个瓜皮说今晚有cf,听说是晚间场,我瞅了一眼,娃,VK Cup,上分的好机会,看着比赛时间就有点心酸了,0:35,当时一直在纠结要不要打的问题,当时想着应该不难吧,要不打一下吧,要不还是看看题先,如果容易就打,难的话就不打了好的吧!于是就这样愉快的决定了.......cf日常延时10分钟,0:45,要不要去睡觉啊,干脆先睡一觉好了,然后又是忍不住诱惑在等待开始! 比赛一开始,瞅了一眼A,这不是一道水题嘛,直接敲啊,然后1分钟就搞定了,交了就过了,B题直接求边界点就好了,扫了一遍就过了,C题

VK CUP 2017 CString Reconstruction

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) 从给出信息片段,得出字典序最小的一个字符串,题目保证答案存在 信息给出形式: 3 a 4 1 3 5 7ab 2 1 5ca 1 4 第一行 3 代表信息片段个数第二行 a 代表片段信息, 4 代表在4个地方出现 1,3,5,7 分别代表出现的位置..输出: abacaba 题目给出片段信息和出现位置,相当于给出区间 为避免对已操作区间重复操作,用树状数组加以标记,标记方式

Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) A. Single Wildcard Pattern Matching B. Pair of Toys C. Bracket Subsequence D. Array Restoration-区间查询最值(RMQ(ST))

Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) A. Single Wildcard Pattern Matching 题意就是匹配字符的题目,打比赛的时候没有看到只有一个" * ",然后就写挫了,被hack了,被hack的点就是判一下只有一个" * ". 1 //A 2 #include<iostream> 3 #include<cstdio&g

Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) B. T-Shirt Hunt

B. T-Shirt Hunt time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Not so long ago the Codecraft-17 contest was held on Codeforces. The top 25 participants, and additionally random 25 participant

Codeforces VK Cup Finals #424 Div.1 C. Bamboo Partition(数论)

题目要求符合以下条件的最大的d 化简得 注意到 最多只有2*sqrt(a[i]-1)种取值,也就是一共最多有n*sqrt(10^19)种取值,于是枚举一下d,计算出符合上上式的最大的d更新答案,然后d跳跃到下一个取值 效率O(n²sqrt(10^9)) #include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=110,inf=1e9; ll n,k,ans,r; ll a[maxn]; vo