NOIP2016普及组T4(魔法阵)题解
题目信息
题目传送门
解题思路
在此图中,A表示xa,B表示xb,C表示xc,D表示xd,那么这四个点就能组成一个魔法阵。
令k = xd - xc。
根据题目条件可得:
- xb - xa = 2k
- xc - xb > 6k
综上,可求出:
1 ≤ k ≤ n / 9
所以我们可以枚举k和d的位置,这样就可以确定C和D的值了。
定义sumi为第i中方案数(算完了记录后马上改变),那么:
- sumd = suma * sumb * sumc
- sumc = suma * sumb * sumd
同理,我们继续枚举a的位置,确定A和B的值,可得:
- suma = sumb * sumc * sumd
- sumb = suma * sumc * sumd
对于每一个xi,我们输出对应的az[i], bz[i], cz[i]和dz[i]即可。
时间复杂度:O(n2),即O((n / 9) 2)
代码实现
#include <bits/stdc++.h>
using namespace std;
const int N = 40005, M = 15005;
int x[N], z[N][5], sum[M];
int main() {int n, m;cin >> n >> m;for (int i = 1; i <= m; ++i) {cin >> x[i];++sum[x[i]];}for (int k = 1; k * 9 < n; ++k) {int pre = 0;int a, b, c, d;// 枚举dfor (d = k * 9 + 2; d <= n; ++d) {a = d - 9 * k - 1;b = d - 7 * k - 1;c = d - k;// 前缀和pre += sum[b] * sum[a];z[c][3] += sum[d] * pre;z[d][4] += sum[c] * pre;}pre = 0;// 枚举afor (a = n - k * 9 - 1; a >= 1; --a) {b = a + 2 * k;c = a + k * 8 + 1;d = a + k * 9 + 1;pre += sum[c] * sum[d];z[a][1] += sum[b] * pre;z[b][2] += sum[a] * pre;}} for (int i = 1; i <= m; ++i) {cout << z[x[i]][1] << ' ' << z[x[i]][2] << ' ' << z[x[i]][3] << ' ' << z[x[i]][4] << '\n';}return 0;
}
NOIP2016普及组T4(魔法阵)题解相关推荐
- C++——NOIP2016普及组 t4——魔法阵
题目描述 六十年一次的魔法战争就要开始了,大魔法师准备从附近的魔法场中汲取魔法能量. 大魔法师有 m 个魔法物品,编号分别为 1,2,...,m .每个物品具有一个魔法值,我们用 xi 表示编号为 ...
- 【2016NOIP普及组】T4:魔法阵 试题解析
[16NOIP普及组]魔法阵 时间限制: 1000 ms 内存限制: 262144 KB [题目描述] 六十年一次的魔法战争就要开始了,大魔法师准备从附近的魔法场中汲取魔法量. 大魔法 ...
- NOIP2016普及组复赛第一题的AC程序加题解pascal
P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔.商店不允许 ...
- NOIP2016 普及组 总结+题目吐槽+代码+简单题解
提高组回来之后,像往年一样,做了一下普及组的题 先吐槽一下 T1 这题一眼看上去以为可以用不同种类的铅笔,没想到只能用一种种类,我240B搞定 #include<cstdio> int m ...
- 【做题记录】[NOIP2016 普及组] 魔法阵
P2119 魔法阵 2016年普及组T4 题意: 给定一系列元素 \(\{X_i\}\) ,求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 . \[\begin{cases}X_ ...
- P1909 [NOIP2016 普及组] 买铅笔
P1909 [NOIP2016 普及组] 买铅笔 提交308.01k 通过130.89k 时间限制1.00s 内存限制125.00MB 提交答案加入题单复制题目 做题计划(首页) 个人题单 团队题单 ...
- 洛谷——P1909 [NOIP2016 普及组] 买铅笔
P1909 [NOIP2016 普及组] 买铅笔 题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 33种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不 ...
- NOIP2018(普及组 ) 赛后感想 题解
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可. 文章目录 NOIP2018(普及组 ) 赛后感想 & 题解 #1. 标题统计 #2. 龙虎斗 #3. 摆渡车 Lemma ...
- NOIP2012 普及组 T4 文化之旅
文化之旅 (NOIP2012 普及组 T4 ) 题目描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文 ...
- P2058 [NOIP2016 普及组] 海港
题目背景 NOIP2016 普及组 T3 题目描述 小 K 是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小 K 对这些到达海港的船只非常感兴趣,他按照时间记 ...
最新文章
- Spring Cloud第五章:服务网关Zuul
- 給曾經的三年,寫點什么吧。-紀念華軟
- 操作iframe里面的标签内容
- 吴恩达给 74 岁老父亲发证了!8 年完成 146 门课程!
- java 正则表达式的使用
- 互联网日报 | 6月7日 星期一 | 华为已捐献鸿蒙全部基础能力;芝麻信用7年免押金4000亿;奈雪的茶通过港交所上市聆讯...
- krpano html5略缩图边框颜色,krpano加载场景缩略图列表
- VirtualBox一类系统只能出现一个?
- 小米手机第三方卡刷软件_小米4第三方recovery刷入教程 小米4卡刷必备程序
- QTTabBar 汉化 给资源管理器添加标签、文件批量重命名依据扩展名选中等功能
- urlpatterns的写法和patterns函数
- [转载]8种防盗链的方法
- 怎么批量给多个 PPT 添加自定义的水印?
- 读书笔记:在改变的时代改变自己
- 为什么亿万资产的投资者依旧对加密货币长期走势持乐观态度?
- 网易实习面经中的算法题(java版本含注释)
- Mobius 莫比乌斯
- 战地1如何修改服务器,战地1修改服务器地址
- sideEffects导致的全局样式消失
- 联想拯救者 R7000 Ubuntu 16.04 系统和显卡驱动安装踩坑教程