Baidu A Star 2007 competition May 26

来源:互联网 发布:数据可视化 人工智能 编辑:程序博客网 时间:2024/05/17 15:17

AStar2007百度之星程序设计大赛:

My code as below for Item one ,May 26,2007, Not finish.....
#include<iostream>
#include <vector>
using namespace std;

int main()
{
 
 int  n;
 int n_maxfruitNo = 0;
 
 vector<string> vs_fruit;
 vector<int> vn_start;
 vector<int> vn_stop;
 char ch_buff[200];
 string s1;
 
 vector<string>  vs_concurrent;
 
 cin >> n;
 
 int n_temp;
 int i;
 for(i=0; i<n; i++)
 {
  cin >> n_temp;
  vn_start.push_back(n_temp);
  
  cin >> n_temp;
  vn_stop.push_back(n_temp);
  
  cin.getline(ch_buff, 200, '/x0a');
  s1 = ch_buff[200];
  // s1.find_first_of('/x20');  
  vs_fruit.push_back(s1); 
 }
 
 
 string str_concurrent;
 for(i=0; i<n; i++)
 {
  str_concurrent = vs_fruit[i];
  for(int j=i+1; j<n; j++)
   if(vn_start[j] <= vn_stop[i])
   {
    str_concurrent += '/x20';
    str_concurrent += vs_fruit[j];   
   }  
   vs_concurrent.push_back(str_concurrent);
 }
 
 int n_fruitNo;
 
 for (i=0; i<n; i++)
 {
  n_fruitNo = 0;
  
  string str_fruit1;
  string str_fruit_concurrent_i = vs_concurrent[i];
  
  //Begin:extract first fruit
  int j = 0;
  while(str_fruit_concurrent_i[j] && str_fruit_concurrent_i[j]!= '/x20' ) 
  {
   str_fruit1 += str_fruit_concurrent_i[j];
   ++j;
  }
  if(str_fruit_concurrent_i[j] == '/x20')
  {
   str_fruit_concurrent_i.erase(0,j+1);
  }
  else
  {
   str_fruit_concurrent_i.erase(0,j);
  } 
  j = 0;
  //End:extract first fruit
  bool b_Concurrent = false;
  
  int k;
  for(k=0; k<str_fruit1.size(); k++)
  {
   str_fruit_concurrent_i.find()

  }
  while(str_fruit1)
  
  
  
  
  
  
  if(n_fruitNo > n_maxfruitNo) n_maxfruitNo = n_fruitNo;
  if(n_maxfruitNo>=5) break;
 }
 
 if(n_maxfruitNo>=5) cout <<"Yes/x0a";
 else cout <<"No/x0a";
 
 return 0;
}

 

1.水果开会时段
 每个百度工程师团队都有一笔还算丰裕的食品经费,足够每天购置多种水果。水果往往下午送达公司前台。前台的姐姐们只要看到同时出现五种或以上的水果,就称之为“水果开会”。


从搜索引擎切词的语法角度,只要两种水果的名字中有一个字相同就属于同样的类别。例如“小雪梨”和“大雪梨”是同一种水果,而“核桃”和“水蜜桃”也被认为是同一种水果。尤其要指出的是,如果有三种水果x, y, z同时在前台出现,且x和y是同一种水果,y和z也是同一种水果的时候,x和z在此时也被认为是同一种水果(即使x和z并不包含相同的字)。现在前台的姐姐们想知道,今天是否有“水果开会”——五种或更多的水果同时在前台出现。


输入格式
输入的第一行只有一个整数n,表示购置水果的组数。接下来的n行表示水果的到达时间、取走时间(时间用1200到1900之间的正整数表示,保证取走时间大于到达时间)。剩下的字符串以空格分割每一种水果。如“1400 1600 雪梨 水蜜桃”,表示下午两点到四点(包含两点和四点这两个时间点),雪梨和水蜜桃会在前台等待开会。每种水果名称由不超过十个汉字组成。

输出格式
输出仅一行,包含一个字符串Yes或No,分别表示今天水果开会与否。

输入样例1 例
3
1200 1400 雪梨 柠檬
1300 1400 西瓜 苹果
1400 1800 花生 水蜜桃


输出样例1 例
Yes


输入样例2 例
3
1200 1400 雪梨 柠檬
1400 1500 哦 大梨 呀
1500 1800 咦 大梨


输出样例2 例
No

样例解释
在样例1中,时刻1400有六种水果在前台;在样例2中,由于雪梨和大梨在任何时刻都是同一种水果,最多只有四种水果同时在前台。

评分规则


程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分;

要求程序能按照输入样例的格式读取标准输入数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分;

该题共有10个测试数据集,每组数据均满足n<=10,每个时段最多有10个水果,一共不超过50个水果;

该题目20分。