期待已久暑假的重头戏终于算是打响了第一枪吧...第一把不出所料的被吊打了...被满场的数学题和自己的菜鸡英语疯狂支配。补题的话,估计只能量力而行了吧 —— 一个题解都推不出来、标程都看不懂的鶸。

A B C D E F G H I J

目前来说再补题可能只会做 C、H...也可能就这样了

比赛地址: https://ac.nowcoder.com/acm/contest/881#question

【A】 Equivalent Prefixes 单调栈

定义两个数组“相等”的概念:\([1, m]的范围内任取子区间[l, r]都满足区间最小值所在的位置(下标)相同\)。那么给定两个数组,问m的最大取值是多少。

读题把队友全演了...前两发wa都是题读错了,然后后面怎么都走不出原来的想法。后面队友完全推倒重写单调栈可算是过了。然后题解说的笛卡尔树也是一头雾水,于是...单调栈重写了一遍。以下为赛后补题代码:

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;const int maxn = 1e5+5;int a[maxn], b[maxn];int main() {int n;while(~scanf("%d", &n)) {for(int i = 1; i <= n; i++) {scanf("%d", &a[i]);}for(int i = 1; i <= n; i++) {scanf("%d", &b[i]);}int flag = 1;stack<int> sa, sb;for(int i = 1; i <= n; i++) {while(!sa.empty() && a[i] < a[sa.top()]) {sa.pop();}sa.push(i);while(!sb.empty() && b[i] < b[sb.top()]) {sb.pop();}sb.push(i); if(sa.size() != sb.size()) {printf("%d\n", i-1);flag = 0;break;}}if(flag == 1) {printf("%d\n", n);}}return 0;
}

【B】 Integration 数学

众所周知:\(\int^{\infty}_{0} \frac{1}{1+x^2} dx = \frac{\pi}{2}\) 。然后给你 n 个数,求:
\[\frac{1}{\pi} \int^{\infty}_{0} \frac{1}{\prod^{n}_{i=1}(a_i^2+x^2)} dx\]

然后得到的大概会是个分数,需要把 \(\frac{p}{q}\) 的形式化成 \(p*q^{-1} mod (1e^9+7)\)。

高数60+菜鸡飘过,推不出来也不怪我对吧...

令:
\[c_i = \frac{1}{\prod_{j\neq i}(a_j^2 - a_i^2)}\]

则:
\[\frac{1}{\prod(a_i^2 + x^2)} = \sum \frac{c_i}{a_i^2+x^2}\]

而:
\[\int^{\infty}_{0}\frac{c_i}{a_i^2+x^2}dx = \frac{c_i}{2a_i}\pi\]

题解万岁

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;const int maxn = 1e3+5;ll _c[maxn];
ll a[maxn];ll q_pow(ll a, ll b) {ll ans = 1;while(b) {if(b & 1) {ans = ans * a % mod;}a = a * a % mod;b >>= 1;}return ans;
}int main() {int n;while(~scanf("%d", &n)) {ll ans = 0;for(int i = 0; i <= n; i++) {_c[i] = 1;}for(int i = 1; i <= n; i++) {scanf("%lld", &a[i]);}for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {if(i == j) {continue;}_c[i] = _c[i] * (a[j]*a[j]%mod - a[i]*a[i]%mod + mod) % mod;}_c[i] = _c[i] * 2ll * a[i] % mod;ans = (ans + q_pow(_c[i], mod-2)) % mod;}printf("%lld\n", ans);}return 0;
}

【C】 Euclidean Distance 数学

思路和题解均为转载 侵删
https://blog.csdn.net/Dillonh/article/details/96501358

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;const int maxn = 1e4+5;ll a[maxn];bool cmp(ll a, ll b) {return a > b;
}ll gcd(ll a, ll b) {return b == 0 ? a : gcd(b, a%b);
}int main() {int n, m;while(~scanf("%d%d", &n, &m)) {for(int i = 1; i <= n; i++) {scanf("%lld", &a[i]);}sort(a+1, a+1+n, cmp);int id = n;int rst = m;for(int i = 1; i < n; i++) {if(i*(a[i]-a[i+1]) > rst) {id = i;break;}rst = rst - i*(a[i]-a[i+1]);}ll x = 1ll * (id*a[id]-rst) * (id*a[id]-rst);for(int i = id+1; i <= n; i++) {x = x + 1ll*id*a[i]*a[i];}ll y = 1ll * (id * m * m);ll z = gcd(x, y);x = x / z;y = y / z;if(x == 0 || y == 1) {printf("%lld\n", x);}else {printf("%lld/%lld\n", x, y);}}return 0;
}

【E】 ABBA 动态规划DP

有一个长度为 \(2(n+m)\)的字符串,它的子序列可以拆分成:“n 个AB、m 个BA”。问总共有多少种排序方式。

emmm...可能还是 dp 刷的少了,想到是 dp 但是没想到是按 A、B 的个数进行转移。

\(dp[i][j] 表示前缀有 i 个 A、 j 个 B\) 然后跑 \(n^2\) 每次都要按 A、B 插入进行转移,边界需要处理比较麻烦。

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;const int maxn = 2e3+5;int n, m;
int dp[maxn][maxn];     // dp[i][j] 表示前缀有 i 个 A、 j 个 Bint main() {while(~scanf("%d%d", &n, &m)) {int l = n+m;for(int i = 0; i <= l+1; i++) {for(int j = 0; j <= l+1; j++) {dp[i][j] = 0;}}dp[0][0] = 1;for(int i = 0; i <= l; i++) {for(int j = 0; j <= l; j++) {if(i <= n-1 || i-n <= min(j, m)-1) {// 因为 i 从 0 开始,所以最大只能到 n-1;后边也同理dp[i+1][j] = (dp[i+1][j] + dp[i][j]) % mod;}if(j <= m-1 || j-m <= min(i, n)-1) {dp[i][j+1] = (dp[i][j+1] + dp[i][j]) % mod;}}}printf("%d\n", dp[l][l]);}return 0;
}

【F】 Random Point in Triangle 数学(暴力)

给定三角形的三点,现在有一个点 P 会随机落在三角形内,问 期望值 \(E = max\{S_{PAB},S_{PBC},S_{PCA}\}\),输出的答案需要乘以 36。

这个乘 36 就给的很精髓了...因为数据太大,所以不能直接用海伦公式(反正我WA了),所以就用 longlong 和割补法去消除误差。然后通过计算(随机数统计然后再猜一猜也行)发现答案应该是三角形面积的 \(\frac{11}{2}\)。别问为什么,问就是队友做的。

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;const int maxn = 5;struct node {ll x, y;bool operator < (const node &a) const {return x < a.x;}
}p[maxn];int main() {ll x1, x2, x3, y1, y2, y3;while(~scanf("%lld%lld%lld%lld%lld%lld", &p[1].x, &p[1].y, &p[2].x, &p[2].y, &p[3].x, &p[3].y)) {for(int i = 1; i <= 3; i++) {p[i].x += 100000000;p[i].y += 100000000;}sort(p+1, p+1+3);ll m, n;ll s1, s2, s3;m = p[1].y + p[2].y;n = p[2].x - p[1].x;s1 = m * n;m = p[3].y + p[2].y;n = p[3].x - p[2].x;s2 = m * n;m = p[3].y + p[1].y;n = p[3].x - p[1].x;s3 = m * n;    ll ans = abs(s1 + s2 - s3);printf("%lld\n", ans*11ll);  }return 0;
}

【J】 Fraction Comparision 暴力

给定两个分数,让你判断哪个更大。

显然直接除法的话...精度不够对吧,然后就想着用\(\_\_int128\)了。然后队伍里没一个会读入的,然后就先读入 longlong ,计算的时候在强转就行了。

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <numeric>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;int main() {ll x, a, y, b;while(~scanf("%lld%lld%lld%lld", &x, &a, &y, &b)) {__int128 ans1 = (__int128)x*b, ans2 = (__int128)y*a;if(ans1 > ans2) {printf(">\n");}else if(ans1 == ans2){printf("=\n");}else {printf("<\n");}}return 0;
}

相信我,我一定会补题的【咕咕咕】。

转载于:https://www.cnblogs.com/Decray/p/11210886.html

暑假N天乐【比赛篇】 —— 2019牛客暑期多校训练营(第一场)相关推荐

  1. 2019牛客暑期多校训练营(第一场场)_I题Points Division(线段树+DP维护区间最大值)

    题目链接: https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点的坐标为(xi,yi),有两个权值ai,bi. 现在要你将它分成A,B两部分, ...

  2. 2019牛客暑期多校训练营(第五场)C generator 2 (BSGS)

    2019牛客暑期多校训练营(第五场)C generator 2 思路 x0=x0x_0 = x_0x0​=x0​ x1=a∗x0∗bx_1 = a * x_0 * bx1​=a∗x0​∗b x2=a∗ ...

  3. 2019牛客暑期多校训练营(第四场)----E- triples II

    首先发出题目链接: 链接:https://ac.nowcoder.com/acm/contest/884/E 来源:牛客网 涉及:位运算,容斥定义,dp 点击这里回到2019牛客暑期多校训练营解题-目 ...

  4. 2019牛客暑期多校训练营(第三场)H.Magic Line

    2019牛客暑期多校训练营(第三场)H.Magic Line 题目链接 题目描述 There are always some problems that seem simple but is diff ...

  5. 暑假N天乐【比赛篇】 —— 2019牛客暑期多校训练营(第三场)

    这场相对来说友好一点,本来前几天就补差不多了,然后忘记发了... 以下题解包括:\(A \ \ \ B \ \ \ F \ \ \ G \ \ \ H \ \ \ J\) \(D\) 题队友补了,我也 ...

  6. 暑假N天乐【比赛篇】 —— 2019牛客暑期多校训练营(第二场)

    最近几天都没写博客,真是没什么时间写了,专题卡着,一周四场比赛,场场爆零,补题都补傻了.第一场还差两题可能今天补掉吧,昨天的杭电也是完全没动,感觉...很烦 第二场牛客断断续续也是补了几天...大概一 ...

  7. 2019牛客暑期多校训练营(第一场)E-ABBA(dp)

    链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...

  8. 2019牛客暑期多校训练营(第一场)

    传送门 参考资料: [1]:官方题解(提取码:t050 ) [2]:标程(提取码:rvxr ) [3]:牛客题解汇总 A.Equivalent Prefixes(单调栈) •题意 定义两个数组 u,v ...

  9. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  10. 2019牛客暑期多校训练营(第八场)G Gemstones(模拟)

    链接:https://ac.nowcoder.com/acm/contest/888/G 来源:牛客网 题目描述 Gromah and LZR have entered the seventh lev ...

最新文章

  1. ​一个参数一张Excel表,玩转Pandas的read_excel()表格读取
  2. 某程序员总结大厂程序员性格:阿里出来的是人精!百度出来的脾气好!美图出来的一根筋!头条出来的心高气傲!京东出来的满嘴是兄弟!...
  3. python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退
  4. ITK:创建一个后向差分运算符
  5. markdown的11个语法
  6. 动态加载___import__动态加载技术
  7. mysql的表创建_MYSQL表创建
  8. ApacheCN 捐赠名单 2019
  9. Maven(2)--- 环境配置
  10. 快手直播伴侣因计算机丢失,在电脑上安装快手直播伴侣,却说因为计算机丢失MSVCP140.DOLL怎么办???...
  11. mysql8.0卡cpu_MySQL 8.0资源组有效解决慢SQL引发CPU告警
  12. Selenium ide及webDriver使用
  13. 公众号文章怎么批量下载导出?
  14. android维持登录状态
  15. Linux中磁盘读写速度测试
  16. 【linux】查看环境变量|getenv setenv设置获取环境变量
  17. 遥感图像彩色合成|以Landsat8数据为例
  18. matlab函数用法
  19. bim土建免费软件“为什么我选不到图元”6大图元讲解
  20. 用HTML和CSS3制作3D动画

热门文章

  1. KindEditor富文编辑器集成kityformula数学公式
  2. 新技术新框架层出不穷,作为技术人员应该怎么办?
  3. excel培训机构_毕马威股权投资估值与税务内部培训(2019)52页
  4. 彩灯控制器课程设计vhdl_vhdl语言设计一个8路彩灯控制器
  5. 清除指定域名下的cookie
  6. 游戏怎么做好防御才不怕攻击呢,必看。
  7. 浏览器播放视频没声音
  8. android xml文件放在哪里,android 创建 xml文件
  9. ERR_UNSAFE_PORT 非安全端口
  10. DIEN——biji