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 = \sum_j f_j \times \min(a[j+1... i]) \times (-1)^{i-j-1} \\
f_i = (-1)^{i} \sum_j\min(a[j+1...i]) \times f_j \times (-1)^{j-1}\]

考虑 i 转移到 i+1 时候:

\[\min(a[j+1...i]) \to \min(a[j+1...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题解的更多相关文章

  1. Nowcoder 提高组练习赛-R7

    Nowcoder 提高组练习赛-R7 https://www.nowcoder.com/acm/contest/179#question 中间空了两场,因为实在是太难了... 第五场的第二题好像还比较 ...

  2. 【题解】NOIP2017 提高组 简要题解

    [题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\ ...

  3. 【题解】NOIP2016 提高组 简要题解

    [题解]NOIP2016 提高组 简要题解 玩具迷题(送分) 用异或实现 //@winlere #include<iostream> #include<cstdio> #inc ...

  4. Nowcoder 提高组练习赛-R1

    https://www.nowcoder.com/acm/contest/172#question 单人报名300元,五人合报免费,于是就和学弟同学学长们组了一个三世同堂的队伍,高一的学长wzhqwq ...

  5. nowcoder 提高组模拟赛 最长路 解题报告

    最长路 链接: https://www.nowcoder.com/acm/contest/178/A 来源:牛客网 题目描述 有一张 \(n\) 个点 \(m\) 条边的有向图,每条边上都带有一个字符 ...

  6. NOIP2017提高组day2T1题解(奶酪)

    题目链接:奶酪 这道题还是很水的,在下拿了满分. 并没有用什么高级的算法,我讲一下基本思路. 我们把每个洞都视为一个节点. 我们读入相关数据后,就先进行预处理,通过每个节点的信息和题目的规定,建立一张 ...

  7. Nowcoder 提高组练习赛-R3

    https://www.nowcoder.com/acm/contest/174#question 今天的题好难呀,只有94个人有分.然后我就爆零光荣 考到一半发现我们班要上物理课,还要去做物理实验( ...

  8. Nowcoder 提高组练习赛-R2

    https://www.nowcoder.com/acm/contest/173#question T1:https://www.nowcoder.com/acm/contest/173/A 题意概述 ...

  9. nowcoder 提高组模拟赛 选择题 解题报告

    选择题 链接: https://www.nowcoder.com/acm/contest/178/B 来源:牛客网 题目描述 有一道选择题,有 \(a,b,c,d\) 四个选项. 现在有 \(n\) ...

随机推荐

  1. EXT3.3.1在IE9 IE10click事件 失效怎么解决

    各位Ext君有福了. var treePanel = new Ext.tree.TreePanel({ id:'treePanel_'+(menuIndex++),//让菜单id可控 title: t ...

  2. py-faster-rcnn + opencv3.0.0 + ubuntu16.04配置(CPU模式)

    最近开始做行人检测,因此开始接触faster-rcnn,这里贴上配置教程(亲测可行),不过是基于cpu的,蓝瘦... 参考博客:http://www.tuicool.com/articles/nYJr ...

  3. ARMV8 datasheet学习笔记3:AArch64应用级体系结构

    1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...

  4. AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI【转】

    转自:https://blog.csdn.net/absurd/article/details/80958279 AWTK = Toolkit AnyWhere AWTK是吸取了FTK和CanTK的精 ...

  5. linux统计某个特定文件名的大小总和【原创】

    [hch@EAISRVBJ2 log]$find ./ -name "test_chs_00*"|xargs du -ck|grep total|awk 'BEGIN{sum=0} ...

  6. was监控脚本编写时的注意点

    server = AdminConfig.getid('/Cell:myCell012/Node:myNode12/Server:server1/') 不可缺少斜杠,不然会报错 如果没法登录管理控制台 ...

  7. 『转载』hadoop 1.X到2.X的变化

    表1新旧hadoop脚本/变量/位置变化表 改变项 原框架中 新框架中(Yarn) 备注 配置文件位置 ${hadoop_home_dir}/conf ${hadoop_home_dir}/etc/h ...

  8. 性能测试十三:linux常用命令

    常用的linux命令: 目录类/ 根目录. 当前目录.. 上级目录cd / 进入根目录cd .. 进入上级目录ls 查看当前目录下的所有文件ll 查看当前目录下所有文件的详细信息pwd 显示当前目录的 ...

  9. 2017-2018-2 20155309南皓芯《网络对抗技术》Exp2 后门原理与实践

    实验要求 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主机操作Shell, 任务计划启动 (0.5分) (3)使用MSF meterpreter( ...

  10. [转] 通过jQuery Ajax使用FormData对象上传文件

    FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用For ...