链接:https://www.nowcoder.com/acm/contest/204/A
来源:牛客网

深度学习
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
Special Judge, 64bit IO Format: %lld

题目描述

小 A 最近在研究深度学习,他自己搭建了一个很牛逼的神经网络,现在他手头一共有 n 组训练数据,一开始他会给自己的神经网络设置一个 batch size,假设为 B (1≤ B≤ n) ,每次训练他都会从手头的 n 组训练数据中抽取不同的 B 组数据,然后扔到神经网络去训练。
然而小 A 的服务器并不是特别支持并行,所以运行时间和 B 成正比,每一次训练都会花费 B 秒的时间。
现在小 A 发现这样每次随机选数据的话,从概率上讲要训练好多次才能使得每组训练数据都被选中过。小 A 是一个炼丹的新手,他觉得只要所有训练数据都被选中过,那么这个模型就会很牛逼,所以只要某次训练后,如果所有训练数据都被选中过,那么他就会停止进行训练。
现在他想合理地设置 B ,使得训练总时间的期望值尽可能地短,你只需要求出这个最小的期望值。

输入描述:

第一行一个正整数 n

输出描述:

输出一个实数,表示最小的期望值,本题有spj,只要和标准答案的标准误差在 10-3 以内就算正确

示例1

输入

复制

1

输出

复制

1.000000

备注:

1≤ n ≤ 40

思路:浪费时间的总和是大于等于n的,所以求的最小的就是n。
 #include<bits/stdc++.h>
using namespace std; int main()
{
double n;
scanf("%lf",&n);
printf("%.6f\n",n);
return ;
}

链接:https://www.nowcoder.com/acm/contest/204/D
来源:牛客网

最小生成树
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
64bit IO Format: %lld

题目描述

小 A 有一张 n 个点的带权无向图,这张无向图非常特别,首先第 i 个点有一个点权 ai,之后这张无向图是一张完全图,且边 (u,v) 的权值为 au+av
现在小 A 想找一个这张图的边权之和最小的生成树,需要你来帮帮他

输入描述:

第一行一个正整数 n
第二行 n 个整数 a

1

,a

2

…a

n

输出描述:

输出边权和最小的生成树的边权之和
示例1

输入

复制

3
1 2 3

输出

复制

7

备注:

1≤ n≤ 10

5

0≤ a

i

≤ 10

9

思路:把n-1个点都和根结点相连,求出n-1条边的总和即可。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
ll a[maxn];
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
}
sort(a+,a+n+);
ll sum=;
for(int i=;i<=n;i++)
{
sum+=a[]+a[i];
}
printf("%lld\n",sum);
return ;
}

链接:https://www.nowcoder.com/acm/contest/204/G
来源:牛客网

区间权值
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
64bit IO Format: %lld

题目描述

小 Bo 有 n 个正整数 a1..an,以及一个权值序列 w1…wn,现在他定义
现在他想知道 的值,需要你来帮帮他
你只需要输出答案对 109+7 取模后的值

输入描述:

第一行一个正整数 n
第二行 n 个正整数 a

1

..a

n

第三行 n 个正整数 w

1

..w

n

输出描述:

输出答案对 10

9

+7 取模后的值
示例1

输入

复制

3
1 1 1
1 1 1

输出

复制

10

备注:

1≤ n≤ 3x 10

5

1≤ a

i

≤ 10

7

1≤ w

i

≤ 10

7

 
思路:前缀和。有对称性。把式子展开找出w1~wn的各个和ai的乘积和。
代码:
 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=3e5+;
const int mod=1e9+;
int n,pnt;
ll a[maxn],w[maxn],suma[maxn],sumb[maxn];
ll sumc[maxn];
int main()
{
scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%lld",&a[i]);
suma[i]=suma[i-]+a[i];
suma[i]%=mod;
}
for(int i=; i<=n; i++)
scanf("%lld",&w[i]);
sumb[]=suma[n];
for(int i=; i<=n; i++)
{
if(n-i+>i-)
{
sumb[i]=sumb[i-]+(suma[n-i+]-suma[i-]);
sumb[i]%=mod;
}
else
{
pnt=i-;
break;
}
}
sumb[n]=suma[n];
for(int i=n-; i>=pnt+; i--)
{
sumb[i]=sumb[n-i+];
}
ll ans=;
for(int i=; i<=n; i++)
{
ans+=(sumb[i]%mod*w[i]%mod)%mod;
ans%=mod;
}
ans%=mod;
printf("%lld\n",ans);
return ;
}

链接:https://www.nowcoder.com/acm/contest/204/I
来源:牛客网

连通块计数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
64bit IO Format: %lld

题目描述

小 A 有一棵长的很奇怪的树,他由 n 条链和 1 个点作为根构成,第 i 条链有 ai 个点,每一条链的一端都与根结点相连。
现在小 A 想知道,这棵长得奇怪的树有多少非空的连通子树,你只需要输出答案对 998244353 取模的值即可

输入描述:

第一行一个正整数 n
第二行 n 个正整数 a

1

…a

n

输出描述:

输出答案对 998244353 取模后的值
示例1

输入

复制

2
1 1

输出

复制

6

备注:

1≤ n≤ 10

5

1≤ a

i

≤ 10

7

 

思路:分为两部分:含有根结点+不含根结点的各个部分和。

代码:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
ll a[maxn];
ll b[maxn];
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
b[i]=a[i]+;
}
sort(b+,b+n+);
ll he=;
for(int i=;i<=n;i++)
{
he=(he*b[i])%;
}
for(int i=;i<=n;i++)
{
he=(he+(a[i]*(a[i]+)/%()))%;
}
printf("%lld\n",he);
return ;
}

链接:https://www.nowcoder.com/acm/contest/204/J
来源:牛客网

寻找复读机
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
64bit IO Format: %lld

题目描述

某个 QQ 群里一共有 n 个人,他们的编号是 1..n,其中有一些人本质上是复读机。
小 A 发现,如果一个人的本质是复读机,那么他每次发的消息一定跟群里的上一条消息一样,特别地第一个发消息的人一定不是复读机。
现在小 A 搞到了一份聊天记录,他想请你找出所有可能是复读机的群友

输入描述:

第一行两个正整数 n,m,表示群里的人数和聊天记录的总条数
接下来 m 行按时间顺序给出聊天记录,每行有一个正整数 x 和一个小写字母字符串 S,表示群友 x 发了消息 S

输出描述:

输出一行,将所有可能是复读机的群友的编号按照从小到大排序后输出,每两个编号之间隔一个空格
示例1

输入

复制

3 5
1 gugugu
2 gugugu
1 gugu
3 tingzhifudu
2 tingzhifudu

输出

复制

2

备注:

1≤ n≤ 10

3

1≤ m≤ 10

3

1≤ |S|≤ 100

思路:用map,strcpy,strcmp,然后找谁不是复读机,输出是复读机的即可。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
map <int ,int> a;
char s[],tmp[];
int x;
int main()
{
int n,m;
scanf("%d %d",&n,&m);
scanf("%d %s",&x,&s);
a[x]=;
strcpy(tmp,s);
for(int i=;i<=m;i++)
{
scanf("%d %s",&x,&s);
if(strcmp(s,tmp)!=)
{
a[x]=;
}
strcpy(tmp,s);
}
for(int i=;i<=n;i++)
{
if(a[i]==)
{
printf("%d ",i);
}
}
return ;
}

链接:https://www.nowcoder.com/acm/contest/204/H
来源:牛客网

树链博弈
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
64bit IO Format: %lld

题目描述

给定一棵 n 个点的树,其中 1 号结点是根,每个结点要么是黑色要么是白色
现在小 Bo 和小 Biao 要进行博弈,他们两轮流操作,每次选择一个黑色的结点将它变白,之后可以选择任意多个(可以不选)该点的祖先(不包含自己),然后将这些点的颜色翻转,不能进行操作的人输
由于小 Bo 猜拳经常输给小 Biao,他想在这个游戏上扳回一城,现在他想问你给定了一个初始局面,是先手必胜还是后手必胜

输入描述:

第一行一个正整数 n
第二行 n 个整数 w

1

..w

n

,w

i

∈ {0,1},w

i

=1 表示第 i 个结点一开始是黑点,否则是白点
接下来 n-1 行,每行两个正整数 u,v 表示一条树边 (u,v)

输出描述:

如果先手必胜,输出First ,否则输出Second
示例1

输入

复制

2
1 0
1 2

输出

复制

First

备注:

1≤ n≤ 1000

思路:DFS找出每一个点所在的层数,若果每一层的黑色为偶数则输出“Second”。
代码:
 #include <bits/stdc++.h>
using namespace std;
const int Max = 3e6+;
vector <int> ma[Max];
int du[Max],deep[Max];
bool visited[Max];
int color[Max];
int n;
#define rep(i,s,n) for(int i=s;i<=n;i++)
#define per(i,n,s) for(int i=n;i>=s;i--) void DFS(int u, int dp){
deep[u]=dp;
visited[u]=true;
int len=ma[u].size();
rep(i,,len-){
int to=ma[u][i];
if(!visited[to]){
DFS(to,++dp);
dp--;
}
}
} int main(){
scanf("%d",&n);
rep(i,,n){
scanf("%d",&color[i]);
}
int u,v;
rep(i,,n-){
scanf("%d %d",&u,&v);
ma[u].push_back(v);
ma[v].push_back(u);
}
DFS(,);
bool ok=;
rep(i,,n){
if(color[i]){
du[deep[i]]++;
}
}
rep(i,,n){
if(du[i]%==){
ok=;
break;
}
}
if(ok){
printf("Second\n");
}
else{
printf("First\n");
}
return ;
}

牛客网国庆集训派对Day4题目 2018年的更多相关文章

  1. 牛客网国庆集训派对Day6 题目 2018年

    链接:https://www.nowcoder.com/acm/contest/206/A来源:牛客网 Birthday 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576 ...

  2. 牛客网国庆集训派对Day5 题目 2018年

    链接:https://www.nowcoder.com/acm/contest/205/L来源:牛客网参考博客:https://blog.csdn.net/HTallperson/article/de ...

  3. 牛客网国庆集训派对Day3题目 2018年

    链接:https://www.nowcoder.com/acm/contest/203/D来源:牛客网 Shopping 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...

  4. 牛客国庆集训派对Day4 J-寻找复读机

    链接:https://www.nowcoder.com/acm/contest/204/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  5. 牛客国庆集训派对Day4 I-连通块计数(思维,组合数学)

    链接:https://www.nowcoder.com/acm/contest/204/I 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  6. 2018 牛客国庆集训派对Day4 - H 树链博弈

    链接:https://ac.nowcoder.com/acm/contest/204/H来源:牛客网 题目描述 给定一棵 n 个点的树,其中 1 号结点是根,每个结点要么是黑色要么是白色 现在小 Bo ...

  7. 牛客国庆集训派对Day4.B.异或求和(按位统计)

    题目链接 刷牛客一战到底做到的,感觉还挺有趣... \(Description\) 求给定\(n\)及序列\(A_i\),求\[\sum_{i\lt j\lt k}(A_i\oplus A_j)(A_ ...

  8. 牛客国庆集训派对Day4 Solution

    A    深度学习 puts(n) #include <bits/stdc++.h> using namespace std; int main() { double n; while ( ...

  9. 线性基求交(2019牛客国庆集训派对day4)

    题意:https://ac.nowcoder.com/acm/contest/1109/C 问你有几个x满足A,B集合都能XOR出x. 思路: 就是线性基求交后,有几个基就是2^几次方. #defin ...

随机推荐

  1. windows下beautifulsoup使用lxml解析使用报错

    s4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need ...

  2. 不安分的android开发者(小程序初尝试,前后台都自己做)

    前言 作为一个稍微有点想法的程序员来说,拥有一个自己开发,自己运营,完全属于自己的应用,应该是很多人的梦想.刚毕业那会,自己的工作是做游戏,于是也和朋友业余时间开发一些小游戏玩玩,可是终究不成气候,而 ...

  3. telerik WinForm主题切换

    通过按钮或Form_Load中切换: ThemeResolutionService.ApplicationThemeName = "Windows 7"; //具体的主题名,不同的 ...

  4. 2017-2018-1 20155231 课堂测试 (ch06)

    2017-2018-1 20155231 课堂测试 (ch06) 1 (单选题|1分) 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A .1 B .1/4 C ...

  5. Linux下开发python django程序(Form表单对象创建和使用)

    1.在setting.py文件中修改节点,注释掉其中一行 MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'dj ...

  6. Scikit-Learn机器学习入门

    现在最常用的数据分析的编程语言为R和Python.每种语言都有自己的特点,Python因为Scikit-Learn库赢得了优势.Scikit-Learn有完整的文档,并实现很多机器学习算法,而每种算法 ...

  7. POJ-2299 Ultra-QuickSort (树状数组)

    题目链接:Ultra-QuickSort 题意: 给出了一个序列,序列中有n个数,现在每次操作能交换相邻的两个数,要求操作几次可以将这个序列转换为一个从小到大排序的序列. 题解: 我的解法是先把所有的 ...

  8. 洛咕 P2467 [SDOI2010]地精部落

    同波浪,简单dp. 高度从1到n插入山脉,设f[i][j][k]表示插入了i个山脉,组成了j段,边界上有k个山脉的方案数. 那么新插入的山脉只会:插入在边界上且自己是一段.插入在边界上且与最左边的段相 ...

  9. 十二、基于Django实现RBAC权限管理

    一.RBAC概述 RBAC(Role-Based Access Control,基于角色的访问控制),通过角色绑定权限,然后给用户划分角色. 从企业的角度来说,基本上是按照角色来划分职能.比如,CEO ...

  10. 黑白表格样式教师求职简历免费word模板

    10款精黑白表格样式教师求职简历免费word模板,也可用于其他专业和职业,个人免费简历模板,个人简历表免费,个人简历表格. 声明:该简历模板仅用于个人欣赏使用,请勿用于商业用途,谢谢. 下载地址:百度 ...