网易互娱 笔试题分享 3AC+一道40%(其余超时)

第一题
#include<set>
#include<stdio.h> 
#include<iostream>
#include<bits/stdc++.h>
using namespace std;

int trans(int n) //10转2 ,返回1的个数 
{
	int result=0,temp=n,i=1,count=0;
	while(temp)
	{
		if(temp%2==1)count++;
		result+=i*(temp%2);
		temp=temp/2;
		i=i*10;
	}
	return count;
}

void tongJi(int N)
{
	int a[102],results,temp;
	set<int> lable;
	for(int i=0;i<N;i++)
	{
		cin>>a[i];
		temp=trans(a[i]);
		lable.insert(temp);
	}
	results=lable.size();
	cout<<results<<endl;
}

int main()
{
	int T,N;
	cin>>T;//输入样例个数
	for(int i=0;i<T;i++)
	{
		cin>>N;//输入每个样例中的个数
		tongJi(N);
	}
	return 0;
}
第二题
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <math.h>
#include <string>
#include <queue>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int min(int a, int b, int c)
{
 int r;
 if(a >= b) r = b;
 else r = a;
 if(r >= c) r = c;
 return r; 
}
int main() {
    int T, m, t, m1, t1, m2, t2;
    cin >> T;
    while(T--)
    {
     int sum = 0;
     cin >> m >> t >> m1 >> t1 >> m2 >> t2;
     int x = t1, y = t2;
     int flag = 0;
     while(t!=0)
     {
      if(flag == 0)
      {
       int a = min(t1, t2, t);
       sum += a * (m1-m2);
       if(sum < 0) sum = 0;
       else if(sum > m) sum = m;
       t1 -= a;
       t2 -= a;
       t -= a;
       if(t1 == 0 && t2!=0) 
       {
        flag = 2;
        t1 += x; 
       }
       else if(t2 == 0 && t1 != 0)
       {
        flag = 1;
        t2 += y;
       }
       else if(t1==0&&t2==0)
       {
        flag = 3;
        t1 += x;
        t2 += y;
       }
      }
      else if(flag == 1)
      {
       int a = min(t1, t2, t);
       sum += a * (m1);
       if(sum < 0) sum = 0;
       else if(sum > m) sum = m;
       t1 -= a;
       t2 -= a;
       t -= a;
       if(t1 == 0 && t2!=0) 
       {
        flag = 3;
        t1 += x; 
       }
       else if(t2 == 0 && t1 != 0)
       {
        flag = 0;
        t2 += y;
       }
       else if(t1==0&&t2==0)
       {
        flag = 2;
        t1 += x;
        t2 += y;
       }
      }
      else if(flag == 2)
      {
       int a = min(t1, t2, t);
       sum += a * (-m2);
       if(sum < 0) sum = 0;
       else if(sum > m) sum = m;
       t1 -= a;
       t2 -= a;
       t -= a;
       if(t1 == 0 && t2!=0) 
       {
        flag = 0;
        t1 += x; 
       }
       else if(t2 == 0 && t1 != 0)
       {
        flag = 3;
        t2 += y;
       }
       else if(t1==0&&t2==0)
       {
        flag = 1;
        t1 += x;
        t2 += y;
       }
      }
      else if(flag == 3)
      {
       int a = min(t1, t2, t);
       t1 -= a;
       t2 -= a;
       t -= a;
       if(t1 == 0 && t2!=0) 
       {
        flag = 1;
        t1 += x; 
       }
       else if(t2 == 0 && t1 != 0)
       {
        flag = 2;
        t2 += y;
       }
       else if(t1==0&&t2==0)
       {
        flag = 0;
        t1 += x;
        t2 += y;
       }
      }
     }
     cout << sum << endl;
    } 
    return 0;
}


第三题
#include<bits/stdc++.h>

using namespace std;

int count(string str) 
{
    int left = 0, right = 0, change = 0, res = 1;
    for (int i = 0; i < str.length(); i++)
    {
        if (str[i] != 'N')
        {
            if (change < 2)
            {
                change++;
                right++;
            }
            else
            {
                while (left <= right && str[left] == 'N') 
     left++;
                left++;
                right++;
            }
        }
        else right++;
        res = max(res, right - left );
    }
    return res;
}

int main()
{
 int T;
 cin >> T;
 while(T--)
 {
  string str;
  cin >> str;
  for(int i = 0; i < str.length(); ++i)
  {
   if(str[i] < 'A' || str[i] > 'Z')
    return 0;
  }
  cout << count(str) << endl;
 }return 0; 
}

第四题  只通过了40%,其余超时,求大神分享代码呀~~~
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int  a[200001];

void ansQun(int h,int n)//h是这次洪水的高度,n是发电站的个数 
{
	int temp,flag=0,count=0;
	for(int i=0;i<n;i++)
	{
		if(h>=a[i])
		{
			flag=0;
		}
		else //没被淹没的 
		{
			if(flag==0)//还没有记录,要计算之 
			{
				flag=1;count++;
			}
		}
	} 
	cout<<count<<endl; 
}

int main() {
    int n, q, h;
    cin >> n;//输入发电基站的个数 
    for(int i=0;i<n;i++) cin >> a[i];//每个电站的海拔 
    cin >> q;//洪水个数 
    for(int i=0;i<q;i++)
	{
		cin>>h;
		ansQun(h,n);
	} 
    return 0;
}



#网易互娱##笔试题目#
全部评论
妹子这么强吗 我第四题看都没看就交了
点赞 回复 分享
发布于 2019-08-11 18:22
楼楼你收到面试通知了吗
点赞 回复 分享
发布于 2019-08-17 09:47
收到后续的面试通知了嘛
点赞 回复 分享
发布于 2019-08-14 17:21
……为啥我只有三道题……
点赞 回复 分享
发布于 2019-08-14 16:41
请问第一道题中,第二行的输入不是各个用例分别有多少个数组成吗,这样的话不是应该先把所有用例的个数存储完毕后,才能够开始逐一对每个用例进行转换二进制的方法调用吗?我看楼主你写的好像是先根据第一个用例中的数字个数进行一次循环,完毕后再处理第二个用例。
点赞 回复 分享
发布于 2019-08-11 21:26
第二题可以不用这么长,有些条件重复了应该。
点赞 回复 分享
发布于 2019-08-11 18:31
第四题的改进考虑了好多角度: 1. 对低于最小高度和高于最大高度的情况直接输出结果 2. 保存每个发电站被淹和不被淹两种情况对应可以跳至的下一个检查点,比如对高度为[1,2,3]的发电站,如果1都不会被淹,那2、3都可以跳过检查,用两个数组分别记录被淹和不被淹的情况 3. 记录每次洪水高度到hash表中,如果有重复洪水高度直接查表 4. 对发电站的高度进行排序,然后对每次洪水的高度,通过二分查找找到刚好可以淹没的发电站高度,计算洪水为改高度的结果并保存至hash表,如果hash表中已有结果可以直接返回 (最后才想到,没写完) 前三种方案都试了还是40%,第四种没时间写了,不知道能不能解决,有没有哪位大佬全ac的说一下第四题到底是怎么个思路……
点赞 回复 分享
发布于 2019-08-11 18:06
第一题有没有自己测试的用例都能行,一提交就是%0的同学啊,求问这是哪里出了问题
点赞 回复 分享
发布于 2019-08-11 17:55
第四题写了两小时,看不到出错的用例也太难找瓶颈了…
点赞 回复 分享
发布于 2019-08-11 17:44
第四题有人AC的吗?
点赞 回复 分享
发布于 2019-08-11 17:40
楼主,如果第一题二进制函数的while 条件改变为temp/2对结果会有影响吗?
点赞 回复 分享
发布于 2019-08-11 17:39
第一题可以直接temp&(temp-1)
点赞 回复 分享
发布于 2019-08-11 17:39
楼主你第一题没超时吗
点赞 回复 分享
发布于 2019-08-11 17:37
这才是真正的大佬~
点赞 回复 分享
发布于 2019-08-11 17:30

相关推荐

不愿透露姓名的神秘牛友
07-10 12:10
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 15:08
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
评论
4
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务