• F


     1 // worfzyq
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <vector>
     5 #include <algorithm>
     6 #include <map>
     7 #include <string>
     8 #include <set>
     9 using namespace std;
    10 typedef long long LL;
    11 const int MAX = 1e5+10;
    12 const int MOD = 1e9+7;
    13 int dp[110][1<<16],has[110];
    14 int prime[15]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
    15 int a[MAX];
    16 void init() {
    17     memset(has,0,sizeof(has));
    18     for(int i=1;i<=100;i++) {
    19         for(int j=0;j<15;j++) {
    20             if(i%prime[j]==0) {
    21                 has[i]|=(1<<j);
    22             }
    23         }
    24     }
    25 }
    26 int main() {
    27     //freopen("in.txt","w",stdout);
    28     init();
    29     int n,x;
    30     while(scanf("%d %d",&n,&x)==2) {
    31         for(int i=0;i<n;i++) {
    32             scanf("%d",&a[i]);
    33         }
    34         memset(dp,0,sizeof(dp));
    35         for(int i=0;i<n;i++) {
    36             for(int j=0;j<(1<<15);j++) {
    37                 dp[i+1][j]=max(dp[i+1][j],dp[i][j]);
    38                 if((j&has[a[i]])==0) {
    39                     dp[i+1][j|has[a[i]]]=max(dp[i+1][j|has[a[i]]],dp[i][j]+1);
    40                 }
    41             }
    42         }
    43         int ans=0;
    44         for(int i=0;i<(1<<15);i++) {
    45             ans=max(ans,dp[n][i]);
    46         }
    47         if(n&1) {
    48             if(ans>=n/2) {
    49                 if(x>=1) printf("YES ");
    50                 else printf("NO ");
    51             }
    52             else {
    53                 if(x>=n-ans*2) {
    54                     printf("YES ");
    55                 }
    56                 else {
    57                     printf("NO ");
    58                 }
    59             }
    60         }
    61         else {
    62             if(ans>=n/2) {
    63                 printf("YES ");
    64             }
    65             else {
    66                 if(x>=n-ans*2) {
    67                     printf("YES ");
    68                 }
    69                 else {
    70                     printf("NO ");
    71                 }
    72             }
    73         }
    74     }
    75     return 0;
    76 }
  • 相关阅读:
    抽象类和接口的区别
    排序之快速排序(quickSort)
    互联网协议入门(1)
    字符串的操作String
    Java笔试题之SQL语句(单表)
    求职之Java开发所需技能
    【更新完毕啦!】一篇完整的产品体验报告处女作
    阿里2015暑期实习生业务型产品笔试题(附部分参考答案)
    滴滴笔试题(附我的答案)
    【面试】蘑菇街产品运营二面&结果
  • 原文地址:https://www.cnblogs.com/acvc/p/4303967.html
Copyright © 2020-2023  润新知