D. Wildest Dreams

这道题的意思是Ayna和Arup两人会同时在车上一段时间,在Ayna在的时候,必须单曲循环Ayna喜欢的歌,偶数段Ayna下车,若此时已经放了她喜欢的那首歌,就要将它放完,然后按照顺序播放其他的歌,输出一共播放了Ayna喜欢的歌多少分钟。

分情况考虑,加起来总和就是一共播放的时间。

做题思路:

:奇数段的时间总和;

:判断奇数段的时间Ayna喜欢的歌是否恰好播放完:

(1)若恰好播放完,对其后的偶数段不做处理

(2)若否,判断偶数段时间是否大于此歌未播放部分的时间:

    a.若小于等于,直接加上偶数时间段,并将该偶数段归零

    b.若大于,将偶数时间段减去此歌未播放部分的时间

:将处理过的偶数段的时间进行计算,一共循环列表几次,判断是否恰好循环整列表

(1)是,总和只加上循环次数乘以这首歌单曲播放完毕的时间

(2)否,判断剩余时间长度是否包含Ayna喜欢的歌,若包含,总和加上循环次数乘以这首歌单曲播放完毕的时间+播放这首歌的时间

AC代码:

#include<cmath>
#include<cstdio>
#include<algorithm>
#include<iostream>
#include <cstring>
using namespace std;
int main()
{
    int cd,i;
    cin>>cd;
    for(int k=1;k<=cd;k++)
    {   int sum2=0;
        cout<<"CD #"<<k<<":"<<endl;
        int cds,f;
        int a[25];
        cin>>cds>>f;
        for(i=0;i<cds;i++){
            cin>>a[i];
            sum2+=a[i];
        }
        int n;
        cin>>n;
        while(n--){
            int m;
            int sum=0;
            cin>>m;
            int b[25];
            for(i=0;i<m;i++){
                cin>>b[i];
            }
            for(i=0;i<m;i++){
                if(i%2==0){
                    sum+=b[i];
                }
                if(i%2==1){
                    int sheng=b[i-1]%a[f-1];
                    if(sheng!=0){
                        b[i]-=a[f-1]-sheng;
                        if(b[i]>0){
                             sum+=a[f-1]-sheng;
                        }else{
                             sum+=b[i]+a[f-1]-sheng;
                             b[i]=0;
                        }
                    }
                    sheng=b[i]/sum2;
                    sum+=sheng*a[f-1];
                    sheng=b[i]%sum2;
                    if(sheng-sum2+a[f-1]>0){
                        sum+=sheng-sum2+a[f-1];
                    }
                }
            }
            cout<<sum<<endl;
        }
        cout<<endl;
    }
    return 0;
}

B. Phoneme Palindromes

这道题的意思是根据输入的p对认为相等的字母,判断输入的字符串是否为回文。

做题思路:

利用<map>建立两个字母的对应,这样就将所有可以相互替换的字母都统一替换成相同字母,然后判断是否回文即可。

AC代码:

#include<iostream>
#include<cstring>
#include<map>
using namespace std;
int main(){
  int n,p,q,i,j,m,x,y;
  char a,b,s[100];
  cin>>n;
  for(i=1;i<=n;i++){
    cout<<"Test case #"<<i<<":" <<endl;
    cin>>p;
    map<char,char>mp;
    for(j=0;j<26;j++)
    {
      char c='a'+j;
      mp[c]=c;
    }
    for(j=0;j<p;j++){
      cin>>a>>b;
      mp[a]=mp[b]=a;
    }
    cin>>q;
    for(j=0;j<q;j++){
      cin>>s;
      cout<<s<<" ";
      m=strlen(s);
      int p=0;
      for(x=0;x<m;x++){
        s[x]=mp[s[x]];
      }
      for(x=0;x<=m/2;x++){
        if(s[x]!=s[m-x-1]){
          p=1;
          break;
        }
      }
      if(p==0){
        cout<<"YES"<<endl;
      }
      else{
        cout<<"NO"<<endl;
      }
    }
  cout<<endl;
  }
  return 0;
}

ICPC训练周赛 Benelux Algorithm Programming Contest 2019的更多相关文章

  1. 2020.3.21--ICPC训练联盟周赛Benelux Algorithm Programming Contest 2019

    A Appeal to the Audience 要想使得总和最大,就要使最大值被计算的次数最多.要想某个数被计算的多,就要使得它经过尽量多的节点.于是我们的目标就是找到 k 条从长到短的链,这些链互 ...

  2. ICPC训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019

    I题 求 a 数组平方的前缀和和求 a 数组后缀和,遍历一遍即可 AC代码 #include<iostream>#include<cmath>using namespace s ...

  3. 03.14 ICPC训练联盟周赛,Preliminaries for Benelux Algorithm Programming Contest 2019

    A .Architecture 题意:其实就是想让你找到两行数的最大值,然后比较是否相同,如果相同输出'possible',不同则输出'impossible' 思路:直接遍历寻找最大值,然后比较即可 ...

  4. 2020.3.14--训练联盟周赛 Preliminaries for Benelux Algorithm Programming Contest 2019

    1.A题 题意:给定第一行的值表示m列的最大值,第m行的值表示n行的最大值,问是否会行列冲突 思路:挺简单的,不过我在一开始理解题意上用了些时间,按我的理解是输入两组数组,找出每组最大数,若相等则输出 ...

  5. Benelux Algorithm Programming Contest 2019

    J. Jazz it Up!题目要求,n*m的因子中不能含有平方形式,且题目中已经说明n是一个无平方因子的数, 那么只要m是无平方因子的数,并且n和m没有共同的因子即可.要注意时间复杂度!代码:#in ...

  6. Preliminaries for Benelux Algorithm Programming Contest 2019

    A. Architecture 如果行最大值中的最大值和列最大值中的最大值不同的话,那么一定会产生矛盾,可以手模一个样例看看. 当满足行列最大值相同条件的时候,就可以判定了. 因为其余的地方一定可以构 ...

  7. Benelux Algorithm Programming Contest 2014 Final(第二场)

    B:Button Bashing You recently acquired a new microwave, and noticed that it provides a large number ...

  8. 2014 Benelux Algorithm Programming Contest (BAPC 14)E

    题目链接:https://vjudge.net/contest/187496#problem/E E Excellent Engineers You are working for an agency ...

  9. 计蒜客 28319.Interesting Integers-类似斐波那契数列-递推思维题 (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 I)

    I. Interesting Integers 传送门 应该是叫思维题吧,反正敲一下脑壳才知道自己哪里写错了.要敢于暴力. 这个题的题意就是给你一个数,让你逆推出递推的最开始的两个数(假设一开始的两个 ...

随机推荐

  1. d3.js ---画坐标轴

    画坐标轴 //使用d3的svg的axis()方法生成坐标轴 var x_axis = d3.svg.axis().scale(scale_x), y_axis = d3.svg.axis().scal ...

  2. 利用iTunes给MP3添加专辑插图

    利用iTunes给MP3添加专辑插图 打开iTunes 准备好没有专辑插图的mp3文件和插图 将准备好的mp3文件拖入iTunes 右键菜单选择专辑信息选项 在专辑信息里面选择插图 点击左下角的添加插 ...

  3. python自动化第二课 - python基础

    1.标识符(identitifier),识别身份 定义:在编程语言中,标识符就是用户编程时使用的名字,用于给变量.常量.函数.语句块等命名 标识符命令规范: 1)英文,数字以及下划线(_)但不能以数字 ...

  4. win10 安装虚拟机提示 主IP地址显示网络信息不可用

    问题:在虚拟机详情下面显示 主ip地址:网络信息不可用 解决办法: 先root用户[root@dfhf~]#cd ..[root@dfhf/]#cd /etc/sysconfig/network-sc ...

  5. Mac OS X 10.13上 安装odoo 11.0开发环境

    0.准备假设homebrew已经安装好没安装的需要先安装,见下面链接http://brew.sh/ 1.安装PostgreSQL$ brew tap homebrew/services$ brew i ...

  6. vuex 业务使用

    1 创建变量 cityVuex.js export default { state: { cityArr: [] }, mutations: { setCityArr (state, arr) { s ...

  7. java-接口(新手)

    //创建的一个包名. package jiekou; //接口方法. //创建一个接口并且起名字. public interface JK { //抽象的返回值.(具体功能未定义,需要自己定义) ab ...

  8. oracle中的创建过程,函数,包

    一.创建存储过程 存储过程是在oracle中存取完成特定业务逻辑的代码块.存储过程是命名块,匿名块不存在数据库中,命名块会存储到数据库中,匿名块每次运行都需要提前编译,命名块一次存储,只会编译一次.命 ...

  9. Java并发编程之CAS第一篇-什么是CAS

    Java并发编程之CAS第一篇-什么是CAS 通过前面几篇的学习,我们对并发编程两个高频知识点了解了其中的一个—volatitl.从这一篇文章开始,我们将要学习另一个知识点—CAS.本篇是<凯哥 ...

  10. Journal of Proteomics Research | 自动的、可重复的免疫多肽数据分析流程MHCquant

    题目:MHCquant: Automated and reproducible data analysis for immunopeptidomics 期刊:Journal of Proteome R ...