【网易9.9笔试题】

来源:互联网 发布:钢结构网络进度计划表 编辑:程序博客网 时间:2024/06/15 23:23
一、重排数列
判断数列重排之后是否可以满足A[i]A[i+1]是4的倍数


想复杂了。。。也不用动态规划,直接统计数中4的倍数,不是4的倍数偶数和奇数的个数就好了。
满足cnt2==0时,cnt4>=cnt1-1
或者cnt2!=0时,cnt4>=cnt1
时就满足,否则不满足
作者:雨baby链接:https://www.nowcoder.com/discuss/39219?type=0&order=0&pos=6&page=3来源:牛客网#include <bits/stdc++.h> using namespace std; int n;int main() {    int t;    scanf("%d", &t);    while(t--) {        scanf("%d", &n);        int cnt4 = 0;        int cnt2 = 0;        int cnt1 = 0;        for(int i = 0; i < n; i++) {            int x;            scanf("%d", &x);            if(x % 4 == 0) cnt4++;            else if(x % 2 == 0) cnt2++;            else cnt1++;        }        if(cnt2 == 0) {            if(cnt4 >= cnt1 - 1)                printf("Yes\n");            else                printf("No\n");        } else {            if(cnt4 >= cnt1)                printf("Yes\n");            else                printf("No\n");        }    }    return 0;}

2、游历魔法王国:
魔法王国一共有n个城市,编号为0-n-1,n个城市之间的道路连接起来恰好构成一棵树。小易现在在0号城市,每次行动会从当前城市走到与其相邻的一个城市,小易最多行动L次。
输入第一行包括两个整数n,L,分别表示城市个数和行动次数,第二行包括n-1个整数parents[i],表示i+1号城市和parents[i]间有一条道路连接
参考牛客。。。
贪心。找出最长的那条树链长度,然后就可以判断出L是否足够走完最长的树链,贪心讨论下就好。

作者:雨baby链接:https://www.nowcoder.com/discuss/39219?type=0&order=0&pos=6&page=3来源:牛客网#include <bits/stdc++.h> using namespace std; const int maxn = 50 + 5;int n, L;int parent[maxn];int dp[200];int main() {    scanf("%d%d", &n, &L);    for(int i = 0; i < n - 1; i++) scanf("%d", &parent[i]);    int mx = 0;    for(int i = 0; i < n - 1; i++) {        dp[i + 1] = dp[parent[i]] + 1;        mx = max(mx, dp[i + 1]);    }    int d = min(L, mx);    cout << min((n), 1 + d + (L - d) / 2) << endl;    return 0;}