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. np.savetxt()——将array保存到txt文件,并保持原格式

    问题:1.如何将array保存到txt文件中?2.如何将存到txt文件中的数据读出为ndarray类型? 需求:科学计算中,往往需要将运算结果(array类型)保存到本地,以便进行后续的数据分析. 解 ...

  2. RNN(1) ------ “理解LSTM”(转载)

    原文链接:http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这 ...

  3. adboost方法(转载)

    转载链接:http://blog.csdn.net/google19890102/article/details/46376603 一.集成方法(Ensemble Method)     集成方法主要 ...

  4. Linux系统7z文件解压

    获取p7zip_16.02_src_all.tar.bz2 1.解压 tar jxvf p7zip_16.02_src_all.tar.bz2 2.编译 cd p7zip_16.02 make &am ...

  5. jvm系列五、jvm垃圾回收机制、jvm各种参数及调优

    转载自:http://yufenfei.iteye.com/blog/1746914 尊重原创. 一.GC有两种类型:Scavenge GC 和Full GC 1.Scavenge GC 一般情况下, ...

  6. 【转】#ifdef __cplusplus+extern "C"的用法

    时常看到别人的头文件中,有这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #en ...

  7. 通达OA系统故障解决案例记录

    案例1: 现象:在人员访问量大的时候OA系统经卡死,并且经常宕机,需要启动apache服务 优化配置如下: D:\MYOA\conf\http.conf 修改参数如下: <IfModule mp ...

  8. Android通讯:通话

    Android通讯之通话功能的实现: 在Android中,android.telephony.TelephonyManager对象是开发者获取当前通话网络相关信息的窗口,通过TelephonyMana ...

  9. appium运行报错java.net.SocketException: socket write error

    这个错我调了 快两天一点头绪没有,脚本正常跑没问题,但是就是控制台输出信息报错,没法定位问题在哪.报错如图: 虽然这个报错不影响测试结果,但是本人有强迫症,一定要查出究竟: 我的尝试: 1.那天试验, ...

  10. jquery里面的$.each()方法

    $.each可以迭代jquery对象和数组 $(selector).each()专注于jquery对象的遍历