A    深度学习

puts(n)

 #include <bits/stdc++.h>
using namespace std; int main()
{
double n;
while (scanf("%lf", &n) != EOF)
printf("%.10f\n", n);
return ;
}

B    异或求和

思路:  有一个$O(nlogn^2)$ 的做法,但是T了。

设$bit(x, i)$为 x在二进制下第i位为1还是0

考虑 $\sum_{1 <= i < j < k <= n}(a_i \oplus a_j)(a_j \oplus a_k)(a_i \oplus a_k)$

将最后一部分的 $(a_i \oplus a_k)$ 拆分成 $\sum_{l = 0}^{l = 29}(bit(a_i, l))(bit(a_k, l))$

那么我们再枚举j  就可以

T了的代码:

#include <bits/stdc++.h>
using namespace std; #define N 100010
#define ll long long ll MOD = (ll); int n;
int arr[N], prefix[][][][], suffix[][][][]; void Run()
{
while (scanf("%d", &n) != EOF)
{
for (int i = ; i <= n; ++i) scanf("%d", arr + i);
bitset <> b;
for (int i = ; i <= n; ++i)
{
b = arr[i];
for (int j = ; j >= ; --j)
for (int k = ; k >= ; --k)
++suffix[j][b[j]][k][b[k]];
}
b = arr[];
for (int j = ; j >= ; --j)
for (int k = ; k >= ; --k)
++prefix[j][b[j]][k][b[k]];
ll ans = ;
for (int i = ; i < n; ++i)
{
b = arr[i];
for (int j = ; j >= ; --j)
for (int k = ; k >= ; --k)
--suffix[j][b[j]][k][b[k]];
for (int j = ; j >= ; --j)
{
ll l = , r = ;
// enum 0 1
for (int k = ; k >= ; --k)
{ l = (l + ((1ll << k) * prefix[j][][k][b[k] ^ ]) % MOD) % MOD;
r = (r + ((1ll << k) * suffix[j][][k][b[k] ^ ]) % MOD) % MOD;
}
ans = (ans + (1ll << j) * l % MOD * r % MOD) % MOD;
l = , r = ;
// enum 1 0
for (int k = ; k >= ; --k)
{
l = (l + ((1ll << k) * prefix[j][][k][b[k] ^ ]) % MOD) % MOD;
r = (r + ((1ll << k) * suffix[j][][k][b[k] ^ ]) % MOD) % MOD;
}
ans = (ans + (1ll << j) * l % MOD * r % MOD) % MOD;
}
for (int j = ; j >= ; --j)
for (int k = ; k >= ; --k)
++prefix[j][b[j]][k][b[k]];
}
printf("%lld\n", ans);
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run();
return ;
}

C    异或计数

留坑。

D    最小生成树

思路:用最小的点权去连边

 #include <bits/stdc++.h>
using namespace std; #define N 100010
#define ll long long int n; int main()
{
while (scanf("%d", &n) != EOF)
{
ll res = , num, Min = 0x3f3f3f3f3f3f3f3f;
for (int i = ; i <= n; ++i)
{
scanf("%lld\n", &num);
Min = min(Min, num);
res += num;
}
printf("%lld\n", res + Min * (n - ));
}
return ;
}

E    乒乓球

留坑。

F    导数卷积

留坑。

G    区间权值

显然可以发现长度为l和n-l的权值相同,然后枚举每个长度l,发现出现次数为两端向中间增加,然后中间不变,最后O(n)扫一遍即可

 #include<bits/stdc++.h>

 using namespace std;

 typedef long long ll;

 const int maxn = (int)3e5 + ;
const ll MOD = 1e9 + ;
int n;
ll ans;
ll w[maxn];
ll val[maxn]; int main()
{
while(~scanf("%d", &n))
{
for(int i = ; i <= n; ++i)
{
scanf("%lld", val + i);
}
for(int i = ; i <= n; ++i)
{
scanf("%lld", w + i);
}
for(int i = ; i <= n; ++i)
{
val[i] += val[i - ];
val[i] %= MOD;
}
ans = ;
ll tmp = ;
for(int i = ; i <= n / ; ++i)
{
tmp += (val[n - i + ] - val[i - ] + MOD) % MOD;
tmp %= MOD;
ans += (tmp * w[i] % MOD + tmp * w[n - i + ] % MOD) % MOD;
ans %= MOD;
}
if(n & )
{
tmp += val[(n + ) / ] - val[n / ];
tmp %= MOD;
ans += tmp * w[(n + ) / ] % MOD;
ans %= MOD;
}
printf("%lld\n", ans);
}
return ;
}

H    树链博弈

思路:每层上都有偶数个黑点,后手必胜,否则,先手必胜

假设所有点都是白点,是先手必败态

如果先手必胜,那么走一步,走到先手必败态

如果是先手必败态,走一步,可以走到先手必胜态

 #include <bits/stdc++.h>
using namespace std; #define N 1010 int n;
int color[N], deep[N];
vector <int> G[N]; void DFS(int u, int fa, int deepth)
{
deep[deepth] += color[u];
for (auto v : G[u])
{
if (v == fa) continue;
DFS(v, u, deepth + );
}
} void Run()
{
while (scanf("%d", &n) != EOF)
{
for (int i = ; i <= n; ++i) scanf("%d", color + i);
for (int i = , u, v; i < n; ++i)
{
scanf("%d%d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
DFS(, , );
int res = ;
for (int i = ; i < n; ++i) if (deep[i] & ) res = ;
puts(res ? "First" : "Second");
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run();
return ;
}

I    连通块计数

分两种情况考虑,一种是含根,一种是不含根,分别计数

 #include <bits/stdc++.h>

 using namespace std;

 int main() {
long long ans, t ,x, i, n, MOD;
scanf("%lld\n",&n);
MOD = ;
ans = ; t = ;
for (i = ; i <= n; ++i) {
scanf("%lld\n",&x);
ans = (ans + (x * x + x) / ) % MOD;
t = (t * (x + )) % MOD;
}
ans = (ans + t) % MOD;
printf("%lld\n",ans);
return ;
}

J    寻找复读机

按题意模拟即可

 #include <bits/stdc++.h>
using namespace std; #define N 1010 int n, m;
int used[N], vis[N];
vector <int> ans;
char s[N][]; int main()
{
while (scanf("%d%d", &n, &m) != EOF)
{
memset(vis, , sizeof vis);
memset(used, , sizeof used);
ans.clear();
for (int i = , x; i <= m; ++i)
{
scanf("%d %s", &x, s[i]);
if (i == ) vis[x] = ;
else if (strcmp(s[i], s[i - ]) != ) vis[x] = ;
used[x] = ;
}
for (int i = ; i <= n; ++i) if (!vis[i])
ans.push_back(i);
if (!ans.size()) puts("");
for (int i = , len = ans.size(); i < len; ++i) printf("%d%c", ans[i], " \n"[i == len - ]);
}
return ;
}

牛客国庆集训派对Day4 Solution的更多相关文章

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

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

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

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

  3. 牛客国庆集训派对Day2 Solution

    A    矩阵乘法 思路: 1° 牛客机器太快了,暴力能过. #include <bits/stdc++.h> using namespace std; #define N 5000 in ...

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

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

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

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

  6. 牛客国庆集训派对Day1 Solution

    A    Tobaku Mokushiroku Kaiji 水. #include <bits/stdc++.h> using namespace std; ], b[]; void Ru ...

  7. 牛客国庆集训派对Day3 Solution

    A    Knight 留坑. B    Tree 思路:两次树形DP,但是要考虑0没有逆元 可以用前缀后缀做 #include <bits/stdc++.h> using namespa ...

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

    A    璀璨光滑 留坑. B    电音之王 蒙特马利大数乘模运算 #include <bits/stdc++.h> using namespace std; typedef long ...

  9. 牛客国庆集训派对Day6 Solution

    A    Birthday 思路:设置一个源点,一个汇点,每次对$源点对a_i, b_i , a_i 对 b_i 连一条流为1,费用为0的边$ 每个点都再连一条 1, 3, 5, 7, ....的边到 ...

随机推荐

  1. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

  2. STM32F103X datasheet学习笔记---Flexible static memory controller (FSMC)

    1.前言 FSMC模块能够与同步或异步存储器和16位PC存储器卡接口,它的主要作用是: 将AHB传输信号转换到适当的外部设备协议 满足访问外部设备的时序要求 所有的外部存储器共享控制器输出的地址.数据 ...

  3. Win7 启动修复

    先让我们看一下windows7的启动过程的常识:电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取活动主分 ...

  4. shell script中read的用法

    1.read基本读取 #!/bin/bash #testing the read command echo -n "Enter you name:" #echo -n 让用户直接在 ...

  5. 『转载』Matlab中fmincon函数获取乘子

    Matlab中fmincon函数获取乘子 一.输出结构 [x,fval,exitflag,output,lambda] = fmincon(......) 二.结构说明 lambda结构 说     ...

  6. jumperserver3.0的安装部署

    适用于jumperserver版本:v0.3.1-2  官网:http://www.jumpserver.org/ 系统:centos7.2 基本安装 备注:如果是centos系统最好使用基本安装,否 ...

  7. zabbix系列(五)zabbix3.0.4 探索主机Discovery自动发现主机详细图文教程

    Zabbix 自动发现(Discovery)功能使用 随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的运维人员需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添 ...

  8. tomcat环境多个jdk版本自定义使用JDK版本及路径

    windows环境: 多个应用使用tomcat并且有不同版本的jdk,为避免重复可以在启动文件中指定JDK的版本 如新安装的JDK6在C:\Program Files\Java\jdk1.7.0_79 ...

  9. HTML常用特殊字符

    网页特殊符号HTML代码大全   HTML特殊字符编码大全:往网页中输入特殊字符,需在html代码中加入以&开头的字母组合或以&#开头的数字.下面就是以字母或数字表示的特殊符号大全. ...

  10. python 全栈开发,Day107(CRM初始,权限组件之权限控制,权限系统表设计)

    一.CRM初始 CRM,客户关系管理系统(Customer Relationship Management).企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方式,其目的是协助企业管理销 ...