F 没看所以摆了 .

看拜月教教主 LHQ 在群里代打恰钱 /bx

A. Technical Support (*800)

SoyTony 强啊 .

维护一个计数器,扫一遍遇到 \(\tt Q\) 加一,遇到 \(\tt A\) 减一,每次要小于 0 了就赋成 0,看一下最后计数器是否等于 0 即可 .

正确性显然 .

B. Kevin and Permutation (*800)

构造比较显然,不太好说,直接放代码 .

int main()
{
int T, n; scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
for (int i=n; i>=1; i--)
{
if (i & 1 ^ 1) printf("%d ", 1+(i-1)/2);
else printf("%d ", 1+i/2+n/2);
}
puts("");
}
return 0;
}

C. Make Nonzero Sum (C1 *1300, C2 *1500)

C1, C2 是一样的 .

首先任何一种拆分方案都可以化成等价的只用长度为 1 和 2 的区间的方案 .

就是对于偶数,两两分,对于奇数再分一个 1 出来即可 .

这样就证明了用 1, 2 构造方案如果构不出来一定无解 .

然后先求一下序列之和然后贪心地选一些不相邻的幸运元素乘上 \(-1\) 即可完成构造 .

听 SoyTony 说似乎比较难写?那我放下代码 .

const int N = 222222;
int n, a[N];
int main()
{
int T; scanf("%d", &T);
while (T--)
{
scanf("%d", &n); int s = 0;
for (int i=1; i<=n; i++) scanf("%d", a+i), s += a[i];
int k=0;
string ans;
char tmp[114514];
for (int i=1; i<=n; i++)
{
if ((s * a[i+1] > 0) && (i != n)){sprintf(tmp, "%d %d\n", i, i+1); ++k; ++i; s -= 2 * a[i];}
else{sprintf(tmp, "%d %d\n", i, i); ++k;}
ans += tmp;
}
if (s){puts("-1"); continue;}
else printf("%d\n%s", k, ans.c_str());
}
return 0;
}

D. Factorial Divisibility (*1600)

感性理解一下,直接暴力合并判断 .

具体的,

const int N = 522222;
int n, k, a[N], z[N];
int main()
{
scanf("%d%d", &n, &k);
for (int i=1; i<=n; i++) ++z[read<int>()];
for (int i=1; i<k; i++)
{
z[i+1] += z[i] / (i+1);
if (z[i] % (i+1)){puts("No"); return 0;}
}
puts("Yes");
return 0;
}

E. Wish I Knew How to Sort (*2000)

令序列中有 \(c\) 个 \(0\),目前前 \(c\) 个数有 \(x\) 个 \(1\),然后要排序就需要 \(x\) 次有效交换 .

减少一个 \(1\) 的概率是 \(\dfrac{x^2}{\dbinom n2}\)

令 \(dp_i\) 还剩 \(i\) 次有效交换的的期望,则

\[dp_{i-1}=\frac{i^2}{\frac{n(n-1)}{2}}\times f_i+\frac{\frac{n(n-1)}{2}-i^2}{\frac{n(n-1)}{2}}\times dp_{i-1}+1
\]

移项,经过化简可以得到答案是 \(\displaystyle\dbinom n2\sum_{i=1}^x\dfrac1{i^2}\) .

暴力算一下就是 \(\Theta(n)\) 的 .

最新文章

  1. 使用SQL Server 扩展事件来创建死锁的时间跟踪
  2. extjs combobox
  3. Intellij IDEA工具Java web 环境搭建
  4. 使用tornado的gen模块改善程序性能
  5. CENTOS7 添加自定义快捷键(启动TERMINAL,显示桌面等)
  6. FATAL: ActionView::Template::Error (application.css isn&#39;t precompiled):
  7. linux异步通信之epoll【转】
  8. Javascript中new
  9. Python中else语句块(和if、while、for、try搭配使用)
  10. [转]oracle误删数据的恢复
  11. 代码格式化工具Astyle配置
  12. 标签(Tag)的各种设计方案
  13. Jquery datepicker 时间插件使用 js 时间相加,相减
  14. Eclipse增强代码提示插件Code Recommenders安装,顺便说说Eclipse插件安装方法
  15. 生鲜配送管理系统_升鲜宝V2.0 价格组功能 操作说明_15382353715
  16. Mysql 数据库增删改查
  17. Winform里面的缓存,MemoryCache使用
  18. HTML JavaScript语法练习
  19. CSS图标文字不对齐
  20. 第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS

热门文章

  1. Docker 04 容器命令
  2. openstack 安装neutron网络服务安装 报错:Unknown operation &#39;enabled&#39;
  3. 一文搞懂EMAS Serverless小程序开发|电子书免费下载
  4. tqdm和zip组合使用时无法显示进度条-解决办法
  5. 美丽的神话 flac 成龙/金喜善 美丽的神话 mp3 韩红/孙楠
  6. 【MATLAB】学习记录2-数组与向量
  7. window桌面背景图片
  8. ELK技术-Logstash
  9. VS Code中Markdown常用插件
  10. KingbaseES 数据库Windows环境下注册失败分析