科大讯飞 编程题:选课,再次刷新了笔试题难度……

只能AC 30%,没提示时间超限,找不到哪里有问题………………
class course(object): 
    def __init__(self, time, name): 
        self.time = time 
        self.name = name 
def insert(l, cou): 
    if len(l) == 0:
        l.append(cou) 
    else: 
        for i in range(len(l)):     
            if cou.time > l[i]: 
                continue  
            else:           
                l.insert(i, cou) 
                break       
n = int(raw_input().split()[0])
cou_list = [] 
for i in range(n):
    t = raw_input().split()
    cou_list.append(course(int(t[0]), t[1]))
result_list = [] 
for i in range(len(cou_list)): 
    for j in range(i + 1, len(cou_list)): 
        if cou_list[i].time == cou_list[j].time:
            cou_list[i].name = cou_list[i].name + ' ' + cou_list[j].name
            insert(result_list, cou_list[i])     
if result_list == []: 
    print('YES')     
else: 
    for i in result_list: 
        print(str(i.time) + ' ' + i.name)    


全部评论
n = int(raw_input()) din = list() c = dict() ans = dict() for i in range(n):     k,v = raw_input().split(' ')     din.append((k,v)) for k,v in din:     if k in c.keys():         if k in ans.keys():             ans[k] = ans[k]+[v]         else:             ans[k] = [c[k]]+[v]     else:         c[k] = v if len(ans)==0:     print("YES") else:     for k in list(sorted(ans.keys())):         print(str(k)+' '+' '.join(ans[k]))
点赞 回复 分享
发布于 2017-09-16 17:15
这题很简单吧。。 #include <iostream> #include <vector> #include <string> #include <unordered_map> #include <cstdio> #include <unordered_set> using namespace std; int main() {     freopen("E:\input.txt","r",stdin);     int n,classid;     cin>>n;     vector<int> num(n);     unordered_map<int,vector<int> > mp;     for(int i=0;i<n;i++){         cin>>num[i]>>classid;         mp[num[i]].push_back(classid);     }     unordered_set<int> iset;     for(int i=0;i<n;i++){         if(mp[num[i]].size()>1)         {             if(iset.find(num[i])==iset.end()){             printf("%02d",num[i]);             for(int j=0;j<mp[num[i]].size();j++)             {                 printf(" %06d",mp[num[i]][j]);             }             printf("\n");             iset.insert(num[i]);             }         }     }     if(iset.size()==0) printf("YES\n"); }
点赞 回复 分享
发布于 2017-09-16 17:11
这题用python 几行就能ac啊 n = int(raw_put()) id_class = {} panding = '' for line  in range(n):     newline = raw_input().split('')         if newline[0] in id_class.keys():         panding = 'change'                 id_class[newline[0]] += [newline[1]]     else:         id_class[newline[0]] = [newline[1]] if panding == '':     print('YES') else:          new_sorted_data = sorted(id_class.items(),key = lambda x:x[0], reverse = False)     for i , j in new_sorted_data:         if len(j) != 1:             print(i+' '+' '.join(j)+'\n')
点赞 回复 分享
发布于 2017-09-16 17:09
treemap,自动排序,key是时间,vaue是list 有冲突时,list的长度大于1…
点赞 回复 分享
发布于 2017-09-16 17:40
我想知道是不是样例全是YES啊,把第一个样例过了,显示我输出错误
点赞 回复 分享
发布于 2017-09-16 17:35
#include <iostream> #include <vector> #include <map> using namespace std; int main(){ int n; cin >> n; map<string, vector<string> > m; string time, code; for(int i = 0;i < n;i++){ cin >> time >> code; if(m.find(time) == m.end()){ vector<string> v; v.push_back(code); m[time] = v; }else{ m[time].push_back(code); } } map<string, vector<string> >::iterator it = m.begin(); int flag = 1; for(;it != m.end();++it){ if(it->second.size() > 1){ flag = 0; cout << it->first; for(int i = 0;i < it->second.size();i++){ cout << " " << it->second[i]; } cout << endl; } } if(flag == 1){ cout << "YES" << endl; } return 0; } C++的,没记错的话应该是AC了,一开始忘了YES这一茬(我是被北方同学带偏了普通话的土生土长的广东人
点赞 回复 分享
发布于 2017-09-16 17:30
点赞 回复 分享
发布于 2017-09-16 17:27
老哥你没看清题,人家要按上课时间顺序输出
点赞 回复 分享
发布于 2017-09-16 17:17
#include<bits/stdc++.h> using namespace std; int main(){     multimap<string,string> mm;     map<string,int> index;     int n;     string shijian,ke;     bool ischongtu = false;     cin >> n;     for(int i = 0;i < n;i++){         cin >> shijian >> ke;         mm.insert(pair<string,string>(shijian,ke));         index[shijian]++;         if(index[shijian] > 1)             ischongtu = true;     }     if(!ischongtu)         cout << "YES" << endl;     else{         for(multimap<string,string>::iterator iter = mm.begin();iter != mm.end();){             int times = index[iter->first];             if(times > 1){                 cout << iter->first;                 while(times > 0){                     cout << " " << iter->second;                     iter++;                     times--;                 }                 cout << endl;             }else                 iter++;         }     }     return 0; }
点赞 回复 分享
发布于 2017-09-16 17:16
用mutimap呢
点赞 回复 分享
发布于 2017-09-16 17:12
import java.util.*; public class Main {     public static void handle(Map<Integer,List<Integer>> map,Queue<Integer> queue){         List<String> strings = new ArrayList<>();         while (!queue.isEmpty()){             StringBuilder sb = new StringBuilder("");             int id = queue.poll();             List<Integer> list = map.get(id);             if (list.size()>1){                 if (id<10){                     sb.append("0");                 }                 sb.append(id+" ");                 for (int i = 0; i < list.size() ; i++) {                     sb.append(list.get(i));                     if (i!=list.size()-1)                         sb.append(" ");                 }                 strings.add(sb.toString());             }         }         if (strings.isEmpty())             System.out.println("YES");         else             for (int i = 0; i < strings.size(); i++) {                 System.out.println(strings.get(i));             }     }     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int n = scanner.nextInt();         Map<Integer,List<Integer>> map = new HashMap<>();         Queue<Integer> queue = new PriorityQueue<>();         for (int i = 0; i < n; i++) {             int str = scanner.nextInt();             int id = scanner.nextInt();             if (map.containsKey(str)){                 map.get(str).add(id);             }else{                 List<Integer> list = new ArrayList<>();                 list.add(id);                 map.put(str,list);                 queue.add(str);             }         }         handle(map,queue);     } } 选课ac了,但是死在了第二题的循环输入上。。。。。求大佬讲解下怎么判断输入结束啊
点赞 回复 分享
发布于 2017-09-16 17:10
我看了一眼关了,这题是在逗我
点赞 回复 分享
发布于 2017-09-16 17:08

相关推荐

被加薪的哈里很优秀:应该继续招人,不会给你留岗位的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务