• 【题解】数组游戏


    数组游戏
    【问题描述】
    题意很简单,给你长度为N的数组 a[i] (i <= N),其中 a[i]不是 1 就是2。
    然后给你Q组询问,每次询问一个数x,问是否存在l, r (l <= r)使得

    成立,对于每个询问,你只要输出Y(存在)或者 N(不存在)。
    【输入格式】
    第一行包含两个正整数N、Q,意义见题目描述。
    第二行包含n 个正整数,第i个数表示 a[i]。
    接下来有Q行,每行有一个正整数x,表示一组询问。
    【输出格式】
    输出Q行,每行Y或者 N,表示是否存在。
    【样例输入】

    4 4
    1 2 1 2
    3
    1
    4
    7
    【样例输出】
    Y
    Y
    Y
    N
    【数据规模及约定】

    对于70%的数据,N <= 500,Q<=100
    对于90%的数据,N <= 100,000, Q <= 100
    对于100%的数据,N<=1,000,000,Q <=1,000,000

    对于本题,自然可以暴力过百分之七十,这道题也自然可以找规律。

    如果7可以组成,组成7的a[l]和a[r]可能是1,1或2,1或2,2或2,1,可以发现,无论哪种情况,我们

    都可以通过去掉边上的数,使拼成5,于是得出结论,小于等于能拼出的最大单数的单数,是可以拼成的,

    小于等于能拼出最大双数的双数,也是可以拼成的.

    所以,我们可以找出最大单数和最大双数,如果全部想加是单数,那么找出最左边的p,a[p]=1,

    和最右边的q,a[q]=1,最大双数=max(a[p+1]...a[N],a[1]+a[2]+...a[q-1]);

     1 #include <iostream>
     2 #include <fstream>
     3 #include <cstdlib>
     4 #include <cstring>
     5 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
     6 using namespace std;
     7 
     8 ifstream fin("game.in");
     9 ofstream fout("game.out");
    10 
    11 int cnt_sum,cnt_he;
    12 int zhui[1000005];
    13 
    14 int main(int argc, char** argv) {
    15 fin>>cnt_sum>>cnt_he;
    16 int zuo=1000002,you=0;
    17 zhui[1000002]=2000002;
    18 int shuang=0,dan=0;
    19 for(int x=1;x<=cnt_sum;x++){
    20 int a;fin>>a;
    21 zhui[x]=zhui[x-1]+a;    
    22 if(a==1){
    23  zuo=min(x,zuo);
    24  you=max(x,you);
    25  }
    26 }
    27 shuang=zhui[cnt_sum];
    28 dan=max(zhui[cnt_sum]-zhui[zuo],zhui[you-1]);
    29 if(shuang%2!=0){
    30  int d=shuang;
    31  shuang=dan;
    32  dan=d;    
    33 }
    34 
    35 for(int x=1;x<=cnt_he;x++){
    36 int a;fin>>a;
    37 if(a%2==0){
    38  if(a<=shuang)fout<<"Y"<<endl;    
    39  else fout<<"N"<<endl;    
    40  }    
    41 else{
    42  if(a<=dan)fout<<"Y"<<endl;
    43  else fout<<"N"<<endl;    
    44  }
    45 }
    46     
    47 return 0;
    48 }
  • 相关阅读:
    git push 小结
    在GitHub上创建代码仓库
    本人在CSDN上的技术博客访问量突破了10万次,特此截图留念
    和菜鸟一起学linux总线驱动之i2c死锁问题
    《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件
    Access text files using SQL statements by DB Query Analyzer
    git分享:Git_MinaPro
    git分享:Git_DataPro
    vimgrep 搜索总结
    HTML+CSS+JavaScript网页制作从新手到高手
  • 原文地址:https://www.cnblogs.com/Ateisti/p/4941704.html
Copyright © 2020-2023  润新知