20190907友塔游戏,网易互娱,20190905HULU

友塔游戏

1.

20190907友塔游戏,网易互娱,20190905HULU_第1张图片

样例的输出是

2.8284271

#include
#include
#include
#include
#include
#include
#include
using namespace std;
int n;
int main(){
    scanf("%d",&n);
    double r,pi,ang;
    ang=360.0/n;
    ang=(180-ang)/2;
    r=0.5/cos(ang/180*3.1415926);
    //cout<

2.

20190907友塔游戏,网易互娱,20190905HULU_第2张图片

20190907友塔游戏,网易互娱,20190905HULU_第3张图片

 

20190907友塔游戏,网易互娱,20190905HULU_第4张图片

3.

20190907友塔游戏,网易互娱,20190905HULU_第5张图片

20190907友塔游戏,网易互娱,20190905HULU_第6张图片

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int m,n;
int mig[201][201];
bool flag[201][201];
struct node {
    int x,y,z;
    node(int _x, int _y, int _z) : x(_x), y(_y), z(_z) {}
};
struct cmp{
    bool operator()(const node a,const node b)const{
        return a.z>b.z;
    }
};
int main(){
    int s;
	scanf("%d %d",&m,&n);
    for(int i=0;i,cmp> pq;
    memset(flag,false,sizeof(flag));
    pq.push(node(0,0,0));
    node cur(0,0,0);
    int ans,x,y;
    while(!pq.empty()){
        cur=pq.top();
        pq.pop();
        if(cur.x==m-1&&cur.y==n-1){
            ans=cur.z;
            break;
        }
        if (flag[cur.x][cur.y])
            continue;
        flag[cur.x][cur.y] = true;
        for (int j = 0; j < 4; j++) {
            x = cur.x + dirx[j];
            y = cur.y + diry[j];
            if (x < 0 || x >= m || y < 0 || y >= n)
                continue;
            if (flag[x][y])
                continue;
            if (mig[x][y] != 0)
                pq.push(node(x, y, cur.z+mig[x][y]));
            else
                continue;
        }
    }
	printf("%d\n",ans);
	//system("PAUSE");
	return 0;
}

4.

20190907友塔游戏,网易互娱,20190905HULU_第7张图片

20190907友塔游戏,网易互娱,20190905HULU_第8张图片

HULU

1.

n个人围成一圈报数,从1开始,报到m的人淘汰,下一个人从1开始继续报数。。。

a[i]=1表示是好人,a[i]=0表示是坏人

w[i]表示每个人被选为起点的权重

求最后剩好人的概率,保留小数点后5位

#include
#include
#include
#include
#include
#include
#include
using namespace std;
int n,m;
vector a;
vector w;
int main(){
    int s;
	scanf("%d %d",&n,&m);
	for(int i=0;i>s;
		a.push_back(s);
	}
    double sum=0;
    for(int i=0;i>s;
		w.push_back(s);
        sum=sum+s;
	}
	double ans=0;
    int f=0;
    for(int i=2;i

2.

数组中所有子集中最大值的和

n = int(input().strip())
arr = list(map(int, input().strip().split()))
mod = 10**9+7

def he(n):
	return n*(n+1)//2

def solve(arr):
	global mod
	n = len(arr)
	if n == 0:
		return 0
	if n == 1:
		return arr[0]
	max_value = max(arr)
	max_value_i = arr.index(max_value)
	total = he(n)
	left, right = he(max_value_i), he(n-1-max_value_i)
	total = (total - left - right) % mod
	contribution = (total * max_value) % mod
	return (solve(arr[:max_value_i]) + fun(solve[max_value_i+1:]) + contribution) % mod

print(solve(arr))

3.

广度优先遍历求解迷宫问题

#define MAXN 5000
bool a[MAXN][MAXN];
bool vis[MAXN][MAXN];
struct node {
    int x,y,z;
    node(int _x, int _y, int _z) : x(_x), y(_y), z(_z) {}
};
int main() {
    int n, tmp;

    cin >> n;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &tmp);
            if (tmp)
                a[i][j] = true;
            else
                a[i][j] = false;
        }
    }
    int dirx[] = {-1, 1, 0, 0};
    int diry[] = {0, 0, -1, 1};
    memset(vis, false, sizeof(vis));
    deque dq;
    node cur(0, 0, 0);
    dq.push_back(node(0, 0, 0));
    int x, y;
    int ans;
    while (!dq.empty()) {
        cur = dq.front();
        dq.pop_front();
        if (cur.x == n - 1 && cur.y == n - 1) {
            ans = cur.z;
            break;
        }
        if (vis[cur.x][cur.y])
            continue;
        vis[cur.x][cur.y] = true;

        for (int j = 0; j < 4; j++) {
            x = cur.x + dirx[j];
            y = cur.y + diry[j];
            if (x < 0 || x >= n || y < 0 || y >= n)
                continue;
            if (vis[x][y])
                continue;

            if (a[x][y] == false)
                dq.push_front(node(x, y, cur.z));
            else
                dq.push_back(node(x, y, cur.z + 1));
        }
    }
    printf("%d\n", ans);
}

网易互娱

1.

判断一个十进制数的二进制是不是回文的

t个用例


#include 
#include 
int main()
{
    int b,i,j,c,m;
    double sum;
    int a[20];
    int t;
    scanf("%d",&t);
    while(t--){
        while(scanf("%d",&b)!=EOF){
            m=b;
            c=0;
            sum=0;
            while(b!=0){
                i=b%2;
                a[c]=i;
                c++;
                b=b/2;
            }
            c--;
            for(j=0;j<=c;j++){
                sum=sum+a[j]*pow(2,c-j);
            }
            if(sum-m==0)
                printf("YES\n");
            else
                printf("NO\n");
        }
    }
    return 0;
}

2.

20190907友塔游戏,网易互娱,20190905HULU_第9张图片

20190907友塔游戏,网易互娱,20190905HULU_第10张图片

 一个二叉树的每一层的节点的权值和都严格小于下一层的节点权值和,称为递增树

判断t个二叉树是否为递增树

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int t;
int m,n;
int node[1000][3];
int father[1000];
int res[500];
int deep(int i,int d){
    res[d]+=node[i][0];
    int l=0,r=0;
    if(node[i][1]!=-1)
    l=deep(node[i][1],d+1);
    if(node[i][2]!=-1)
    r=deep(node[i][2],d+1);
    if(node[i][1]==-1&&node[i][2]==-1)
    return d;
    return max(l,r);
}
int main(){
	scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        int root;
        for(int i=0;i=res[i+1]){
                flag=false;
                break;
            }
        }
        if(flag)
        printf("YES\n");
        else
        printf("NO\n");
    }
	//system("PAUSE");
	return 0;
}

3.

20190907友塔游戏,网易互娱,20190905HULU_第11张图片

小明喜欢喝咖啡,一个月1到30号,总有那么几天喝咖啡,但是他要控制自己,所以给自己设置喝咖啡的间隔天数k,另外,一个月还有m天举行比赛,他都会喝咖啡庆祝,这m天的间隔都大于k,求每个月他最多有几天喝咖啡。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int t;
int k,m;
int shu[31];
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d %d",&k,&m);
        for(int i=0;i(k+1))
                ans=ans+(shu[i]-pre-1-k)/(k+1);
            }
            pre=shu[i];
            cout<0){
            if(30-pre>=(k+1))
            ans=ans+(30-pre)/(k+1);
        }
        printf("%d\n",ans);
    }
    //system("PAUSE");
    return 0;
}

4.

20190907友塔游戏,网易互娱,20190905HULU_第12张图片

20190907友塔游戏,网易互娱,20190905HULU_第13张图片

20190907友塔游戏,网易互娱,20190905HULU_第14张图片

20190907友塔游戏,网易互娱,20190905HULU_第15张图片

20190907友塔游戏,网易互娱,20190905HULU_第16张图片

20190907友塔游戏,网易互娱,20190905HULU_第17张图片

20190907友塔游戏,网易互娱,20190905HULU_第18张图片

20190907友塔游戏,网易互娱,20190905HULU_第19张图片

20190907友塔游戏,网易互娱,20190905HULU_第20张图片

 

你可能感兴趣的:(笔试)