编程2022-02 KTV

Posted YoungerChina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程2022-02 KTV相关的知识,希望对你有一定的参考价值。

描述

题目描述:

有n个人去KTV唱歌,每个人都有自己想唱的一些歌曲。已知该KTV每个房间都只有x个麦克风,同一首歌可以同时多人一起唱,但是同时唱的人不能超过x人,同一时刻只能唱一首歌。一共只有y首歌的时间,所有人想唱的歌都唱完或者y首歌唱完了他们就会离开。他们想知道在最优的安排策略下(让每个人尽量唱完自己想唱的歌),当他们离开时是否还有人有想唱的歌没有唱。输入保证每个人想唱的歌都不同。

输入描述:

第一行一个整数T,表示测试的数据组数1≤T≤10;

对于每组测试数据,第一行三个整数n,x,y,含义见题面,1≤n≤100,1≤x≤100,1≤y≤1000;

接下来n行按行从上到下顺序分别给出了第1到第n个人想唱的歌曲,其中每行开头一个整数a[i]表示第i个人想唱歌的数量,后面a[i]个整数,表示歌曲编号,1≤a[i]≤10。KTV可选歌曲总数不超过1000,即编号不大于1000。

输出描述:

对于每组测试数据,输出” NO”,表示离开时有人还有歌没唱完,否则输出” YES”。(不包括引号)。

思路

……

实现

#include<stdio.h>
#include<stdlib.h>

void insertSeq(int arr[], int size, int key)

  int index = 0;

  for(int i = 0; i < size; i++) 
    if(arr[i] >= key)
      index = i;
      break;
     else
      index++;
    
  
  for(int i = size; i > index; i--)
    arr[i] = arr[i - 1];
  
  arr[index] = key;
  //printf("\\narr[%d]:%d:%d\\n", index, key, size);

  return ;


int checkComplete(int arr[], int size, int x_pers, int y_songs)

  int i, flag = 0;
  int key_id;
  int need_songs = 0, repeat = 0;

  i = 0;
  while (i < size) 
    need_songs++;
    key_id = arr[i];
    repeat = 0;
    while(arr[i] == key_id) 
      repeat++;
      i++;
      if (repeat >= x_pers)
        break;
    
    //printf("while %d:%d:%d\\n", i, need_songs, repeat);
  
  if (need_songs <= y_songs)
    flag = 1;

  //printf("res:size=%d,%d:%d:flag=%d", size, need_songs, y_songs,flag);
  return flag;


int main()

  int T, n, x, y;
  int tempId, flag;
  int size = 0;
  int *arr_p, *arr_yp;

  scanf("%d", &T);
  for (int k = 0; k < T; k++) 
    size = 0;
    scanf("%d %d %d", &n, &x, &y);
    arr_p = (int *)malloc(n * sizeof(int));
    arr_yp = (int *)malloc(x * y * sizeof(int));
    for (int i = 0; i < n; i++) 
      scanf("%d", &arr_p[i]);
      for (int j = 0; j < arr_p[i]; j++) 
        scanf("%d", &tempId);
        insertSeq(arr_yp, size, tempId);
        size++;
      
    

    flag = checkComplete(arr_yp, size, x, y);
    printf("%s\\n", (flag == 1)? "YES":"NO");
    free(arr_p);
    free(arr_yp);
  

  return 0;

测试

 

---------------------------------------------------------------------------------------- 

计划:每周一道题,作为码农,无论是什么行业都不应该放弃编程

以上是关于编程2022-02 KTV的主要内容,如果未能解决你的问题,请参考以下文章

·介绍一些多种语言翻唱的歌(好的话附加50分)

求一首女生独唱的歌中有唱到do、do do do dore、mi、fa、sol、la、si

taylor swift有一首和一个男的合作唱的歌歌词里有i can’t live without

2022 - 2023 总结

2022 - 2023 总结

Jin Ge Jin Qu hao