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\) ...
随机推荐
- MoveIt! 源安装
rosdep update sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install python-wstool pytho ...
- Dubbo服务容错(整合hystrix)
简介:Hystrix旨在通过控制那些访问远程系统.服务和第三方库的节点从而对延迟和故障提供更强大的容错能力,Hystrix具备拥有回退机制和断路器功能的线程和信号隔离.请求缓存和请求打包以及监控和配置 ...
- springboot系列十四、自定义实现starter
一.starter的作用 当我们实现了一个组建,希望尽可能降低它的介入成本,一般的组建写好了,只要添加spring扫描路径加载spring就能发挥作用.有个更简单的方式扫描路径都不用加,直接引入jar ...
- SSH原理与运用:远程登录
一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会 ...
- windows系统下安装tomcat及配置
1.安装测试 1.安装 推荐使用免安装版的Tomcat(放在没有中文和空格的目录下),前提是已经安装了JDK并配置了环境变量. 2.测试 双击startup.bat,浏览器输入url:localhos ...
- 读SRE Google运维解密有感(一)
前言 这几天打算利用碎片时间读了一下"SRE Google运维解密"这本书,目前读了前几章,感觉收获颇多,结合自己的工作经历和书中的要点,写一些感悟和思考 SRE 有关SRE我就不 ...
- Spring boot教程mybatis访问MySQL的尝试
Windows 10家庭中文版,Eclipse,Java 1.8,spring boot 2.1.0,mybatis-spring-boot-starter 1.3.2,com.github.page ...
- 根据条件返回相应值 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) [功能]根据条件返回相应值 [参数]c1, c2, ...,cn,字符型/数值型/日期型,必须类型相同或null 注 ...
- selenium webdriver+python基本操作
# -*- coding:utf-8 -*-#导入模块from selenium import webdriver from selenium.common.exceptions import NoS ...
- cf807 c 二分好题
能够二分判定的前提是能找到一个单调关系,有时候需要将不是单调关系的数据转换成另外的具有单调关系的数据 #include<bits/stdc++.h> using namespace std ...