nowcoder提高组2题解
T1
化一下试子就ok
code
#include<cstdio>
#include<algorithm>
inline long long read() {
long long x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9') {if(c == '-')f = -1; c = getchar(); }
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
long long n;
long long a[100007];
long long sum[100007];
long long sum2[100007];
int main() {
n = read();
for(long long i = 1;i <= n;++ i) a[i] = read(),sum[i] = sum[i - 1] + a[i],sum2[i] = sum2[i - 1] + a[i] * a[i];
for(long long i = 1;i <= n;++ i) {
long long s1 = sum2[i - 1] + sum2[n] - sum2[i];
long long s = sum[i - 1] + sum[n] - sum[i];
long long ans = (n - 1) * s1 - s * s ;
if(i != n) printf("%lld ",ans);
else printf("%lld",ans);
}
return 0;
}
T2
设\(g(n)\)为长为n的环的方案数
设\(f(n)\)为长为n的序列方案书
容易得到递推式
\(g(n) = f(n) - g(n - 1)\)
由于\(a_1>a_n\)的时候不好处理,我们直接把环转一下,让1位置为最小值
对于\(f(n)\)可以容斥求得
f_i = (-1)^{i} \sum_j\min(a[j+1...i]) \times f_j \times (-1)^{j-1}\]
考虑 i 转移到 i+1 时候:
\]
单调栈为维护一下就好了,单调栈维护
code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define pc putchar
#define gc getchar
inline int read() {
int x = 0,f = 1;
char c = gc();
while(c < '0' || c > '9') c = gc();
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = gc();
return x * f;
}
#define LL long long
const int mod = 1000000007;
void print(LL x) {
if(x < 0) {
pc('-');
x = -x;
}
if(x >= 10)print(x / 10);
pc(x % 10 + '0');
}
#define INF 0x3f3f3f3f3f3f3f3fLL
const int maxn = 4000007;
LL a[maxn],b[maxn];
int n;
inline void mo(LL &x,LL y) {
x = ((x + y ) % mod + mod) % mod;
}
LL st[maxn][3];
int main() {
n = read();
a[1] = read();
if(n == 1) {
print(a[1]);
}
int mn = 1;
for(int i = 2;i <= n;++ i) {
a[i] = read();
if(a[i] < a[mn]) mn = i;
}
for(int i = 1;i <= n;++ i) b[i] = a[(mn + i - 2) % n + 1];
int tp = 1;
memset(a,0,sizeof a);
LL ans = 0;
a[0] = n & 1 ? -1 : 1;
st[1][0] = INF,
st[1][1] = a[0];
for(int i = 1;i <= n;++ i) {
LL sum = 0;
for(;tp && b[i] < st[tp][0]; -- tp) mo(sum,st[tp][1]);
mo(a[i],-st[tp][2] - sum * b[i]);
st[++ tp][0] = b[i];
st[tp][1] = sum;
st[tp][2] = (sum * b[i] + st[tp - 1][2]) % mod;
st[++ tp][0] = INF;
st[tp][1] = a[i];
mo(ans,a[i]);
}
mo(ans,n & 1? - b[1]:b[1]);
print(ans);
}
T3
- 假设 \(\{1,2,\dots, n\}\in S\)
那么一定存在一个 \(i\) ,使得 \(\forall U\) 使得 \(i\in U\), 必有 \(U\in S\) .
(如果不存在,那么 \(\forall i, \exists i\in V_i, V_i\in T\) ,那么 \(\{1,2,\dots, n\}=\bigcup_i V_i \in T\),矛盾) - 假设 \(\{1,2,\dots, n\}\in T\)
那么一定存在一个 \(i\) ,使得 \(\forall U\) 使得 \(i\in U\), 必有 \(U\in T\) .
(如果不存在,那么 \(\forall i, \exists i\in V_i, V_i\in S\) ,那么 \(\{1,2,\dots, n\}=\bigcup_i V_i \in S\),矛盾)
\(2^0 , 2^1, \dots, 2^{n-1}\) ,
假设 \(K=2^{a_0}+2^{a_1}+\dots +2^{a_s}\)
咕咕咕
nowcoder提高组2题解的更多相关文章
- Nowcoder 提高组练习赛-R7
Nowcoder 提高组练习赛-R7 https://www.nowcoder.com/acm/contest/179#question 中间空了两场,因为实在是太难了... 第五场的第二题好像还比较 ...
- 【题解】NOIP2017 提高组 简要题解
[题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\ ...
- 【题解】NOIP2016 提高组 简要题解
[题解]NOIP2016 提高组 简要题解 玩具迷题(送分) 用异或实现 //@winlere #include<iostream> #include<cstdio> #inc ...
- Nowcoder 提高组练习赛-R1
https://www.nowcoder.com/acm/contest/172#question 单人报名300元,五人合报免费,于是就和学弟同学学长们组了一个三世同堂的队伍,高一的学长wzhqwq ...
- nowcoder 提高组模拟赛 最长路 解题报告
最长路 链接: https://www.nowcoder.com/acm/contest/178/A 来源:牛客网 题目描述 有一张 \(n\) 个点 \(m\) 条边的有向图,每条边上都带有一个字符 ...
- NOIP2017提高组day2T1题解(奶酪)
题目链接:奶酪 这道题还是很水的,在下拿了满分. 并没有用什么高级的算法,我讲一下基本思路. 我们把每个洞都视为一个节点. 我们读入相关数据后,就先进行预处理,通过每个节点的信息和题目的规定,建立一张 ...
- Nowcoder 提高组练习赛-R3
https://www.nowcoder.com/acm/contest/174#question 今天的题好难呀,只有94个人有分.然后我就爆零光荣 考到一半发现我们班要上物理课,还要去做物理实验( ...
- Nowcoder 提高组练习赛-R2
https://www.nowcoder.com/acm/contest/173#question T1:https://www.nowcoder.com/acm/contest/173/A 题意概述 ...
- nowcoder 提高组模拟赛 选择题 解题报告
选择题 链接: https://www.nowcoder.com/acm/contest/178/B 来源:牛客网 题目描述 有一道选择题,有 \(a,b,c,d\) 四个选项. 现在有 \(n\) ...
随机推荐
- Linux的7个运行级别
0:关机 1:单用户(找回丢失密码)此模式下所有用户不需要密码即可登录,可用于重置密码 2:多用户状态没有网络服务 3:多用户状态有网络服务 ★ 4:系统未使用保留给用户 5:图形界面 ★ 6:系统重 ...
- 【黑客免杀攻防】读书笔记5 - PE格式讲解
0x01 MS-DOS头 MS-DOS头部的字段重点关注e_magic与最后一个e_lfanew是需要关注的. 第一个e_magic字段的值为4D5A,作用是可以作为判断这个文件是否是PE文件. 最后 ...
- springboot系列七:springboot 集成 MyBatis、事物配置及使用、druid 数据源、druid 监控使用
一.MyBatis和druid简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.M ...
- python2.7源码或第三方包里埋藏的坑(持续更新)
1.psutil包,aix环境下,如果进程命令过长的话,程序无法取得完整的进程命令,测试代码如下 import psutil proc=psutil.Process(11534558) pidDict ...
- hdu 4348 To the moon (主席树区间更新)
传送门 题意: 一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 . (2)Q l r:查询当前时间戳区间[l,r]中所有数的和 . (3)H ...
- js实现弹窗居中
在一些页面中,我们总会遇到一些弹窗不居中的时候,还要根据浏览器的大小来调整弹窗的弹出位置, 之前我也遇到这样的问题,现在我把我知道的呈现给大家 css样式 .windowBox{ width:500p ...
- 转载:2.2.3 配置项的注释《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19628.html 如果有一个配置项暂时需要注释掉,那么可以加"#"注释掉这一行配置.例如: #pid ...
- 【转载】JavaScript中的属性:如何遍历属性
转载自:http://www.cnblogs.com/ziyunfei/archive/2012/11/03/2752905.html 在JavaScript中,遍历一个对象的属性往往没有在其他语言中 ...
- hdu4578线段树区间更新
/* 只有在区间中的数字不相同时才pushdown:往子区间传递数字再到子区间更新,同时该区间的flag置0 更新完左右子区间后进行pushup,如果左右子区间数字相同,那么把子区间合并,子区间数字置 ...
- 用PNChart绘制饼状图简介
写在前面 最近做的小Demo中有一个绘制饼状图的需求.在开始实现之前上网了解了一下现有的一些绘制图形的第三方库,相应的库还是有挺多的,PNChart便是其中一个.PNChart是一个90后的中国boy ...