不想说啥了,比赛期间智商全程下线

A

设$f[i][j]$表示前$i$个位置,前缀和为$j$的方案数,转移的时候该位置放了什么,以及该位置之前的和是多少。

发现第二维可以前缀和优化。

不用管代码里的fib是什么,当时傻了在xjb分析下界。。。。

时间复杂度:$O(nk)$

/**/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<vector>
#include<set>
#include<queue>
#include<cmath>
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/hash_policy.hpp>
#define Pair pair<int, int>
#define MP(x, y) make_pair(x, y)
#define fi first
#define se second
#define int long long
#define LL long long
#define ull unsigned long long
#define rg register
#define pt(x) printf("%d ", x);
//#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1<<22, stdin), p1 == p2) ? EOF : *p1++)
//char buf[(1 << 22)], *p1 = buf, *p2 = buf;
//char obuf[1<<24], *O = obuf;
//void print(int x) {if(x > 9) print(x / 10); *O++ = x % 10 + '0';}
//#define OS  *O++ = ' ';
using namespace std;
//using namespace __gnu_pbds;
const int MAXN = 1e6 + 10, INF = 1e9 + 10, mod = 998244353;
const double eps = 1e-9;
inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}
int f[21][MAXN], s[MAXN], fib[MAXN];
main() {int N = read(), K = read();//k个位置 总和为n fib[1] = 1; fib[2] = 1;for(int i = 3; i <= N; i++) fib[i] = fib[i - 1] + fib[i - 2];for(int i = 1; i <= N; i++) f[1][i] = 1, s[i] = (s[i - 1] + f[1][i]) % mod;for(int i = 2; i <= K; i++) {for(int j = 1; j <= N; j++) {//    for(int k = fib[i - 1]; k <= j / 2; k++) (f[i][j] += f[i - 1][k]) %= mod;f[i][j] = s[j / 2] % mod;if((j / 2 >= fib[i - 1]) && (fib[i - 1] >= 1)) f[i][j] = (f[i][j] - s[fib[i - 1] - 1] + mod) % mod;            }s[0] = 0;for(int j = 1; j <= N; j++) s[j] = (s[j - 1] + f[i][j]) % mod;}printf("%d", f[K][N] % mod);return 0;
}
/*
15 3
*/

A

B

起点和终点都是已知的,那么对于其他的节点,一定是从根节点走到该节点再往回走。

这样我们记录下根节点到其他节点路径的并,在这之中唯一不需要经过两次的是该节点到根的路径,减去即可

由于每个点只会经过一次,因此时间复杂度为:$O(n+m)$

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}
int N, M, dep[MAXN], fa[MAXN], vis[MAXN];
vector<int> v[MAXN];
void dfs(int x, int _fa) {dep[x] = dep[_fa] + 1;fa[x] = _fa;for(int i = 0; i < v[x].size(); i++) {int to = v[x][i];if(to == _fa) continue;dfs(to, x);}
}
int main() {N = read(); M = read();for(int i = 1; i <= N - 1; i++) {int x = read(), y = read();v[x].push_back(y); v[y].push_back(x);}dep[0] = -1; dfs(1, 0);vis[1] = 1;int tot = 0, ans = 0;for(int i = 1; i <= M; i++) {int x = read(), tmp = x;while(!vis[x]) tot++, vis[x] = 1, x = fa[x];printf("%d\n", 2 * tot - dep[tmp]);}return 0;
}
/*
*/

B

C

神仙题Orz

题目里有个很良心的部分分

这就提示我们跟二进制拆分有点关系了

序列上的问题好像很难搞,我们扔到环上去(这是怎么想到的啊Orz)

构造一个这样的环

上下两个$0$不管进化几次肯定都是$0$(左右对称)

考虑其他位置,观察每一项展开后的式子不难发现(发现不了。。)

对于位置$i$,如果$a[i]$进化了$2^d$后变为$c[i]$,那么$c[i] = a[i - 2^d] + a[i+2^d]$

做完了。。

#include<cstdio>
#include<cstring>
#define int long long
using namespace std;
const int MAXN = 1e6 + 10;
inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}
int T, N;
char s[MAXN];
int a[MAXN], b[MAXN];
main() {T = read(); N = read();// for(int i = 1; i <= N; i++) a[i] = read();scanf("%s", s + 1);for(int i = 1; i <= N; i++) a[i] = s[i] - '0', a[N * 2  + 2 - i] = a[i]; N = N * 2 + 2;for(int j = 61; j >= 0; j--) {if(T & (1ll << j)) {int base = (1ll << j) % N;for(int i = 0; i <= N; i++) b[i] = a[(i - base + N) % N] ^ a[(i + base) % N];memcpy(a, b, sizeof(a));}}for(int i = 1; i <= N / 2 - 1; i++) printf("%d", a[i]);return 0;
}
/*
2 5
10010
*/

C

ZR18提高5解题报告相关推荐

  1. NOIP1998-2018 CSP-S2 2019 2021提高组解题报告与视频

    CSP-S 2020 讲题录屏 CSP-S 2020 讲题录屏_哔哩哔哩_bilibili 冠军说题--ACM世界冠军吴卓杰,带你复盘2020 CSP-S2 冠军说题--ACM世界冠军吴卓杰,带你复盘 ...

  2. NOIP2016 提高组 解题报告

    说明:由于我能力的限制,文章中的做法不一定是最优秀的算法,但官方数据全部测试通过,使用的全部知识全部是NOIP提高组的知识,请组织放心查看. 感谢 GoodQt 的指导与帮助 DAY1 T1 玩具谜题 ...

  3. 解题报告(五)组合计数(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  4. 解题报告:线性规划与网络流24题

    目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...

  5. USACO Section1.5 Superprime Rib 解题报告

    sprime解题报告 -- icedream61 博客园(转载请注明出处) -------------------------------------------------------------- ...

  6. 解题报告 Toy Bricks

    Toy Bricks [题目描述] Ray又在NPC问题了:这里有一个箱子,还有若干个玩具. 我们可以假设玩具的数量是没有上限的.我们还知道这个箱子是不规则的,或者可以说,他的外形比较像一个矩形,但是 ...

  7. 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(

    我发现自从我开始写博客以后OI成绩上升很明显啊orzzz,继续保持继续保持(然而昨晚上开夜车到十二点,感觉这次没发挥好)(下次没考好就尴尬了)(所以一定要考好!),嗯这次考得还是很不错的,也深入思考了 ...

  8. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  9. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  10. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

最新文章

  1. Java面试笔试题大汇总一(最全+详细答案)
  2. 微信助力活动表结构设计
  3. 利用Reachability实现网络状态监听
  4. win10启动项_科普:为什么重装Win7系统后,速度比Win10系统慢很多?
  5. gazebo 直接获取传感器数据_【ROS-Gazebo】IMU插件使用与数据采集——以四足机器人pigot为例...
  6. 十年架构师:我是这样手写Spring的,用300行代码体现优雅之道
  7. 三、索引优化(4)索引碎片
  8. 问题:如何将多个文件里内容都提取出来
  9. 20、淘宝技术这十年
  10. android html5小游戏源代码下载,HTML5小游戏源代码大全
  11. MySQL 根据身份证号查询个人信息
  12. Excel正确输入身份证号码
  13. 【独角兽️】FinTech之蚂蚁金服 • 支付 + 理财
  14. 托管c++ (CLI) String^ 、 std::string 、 std::ostringstream的相互转化
  15. alert promt confirm js 用法
  16. 斯坦福 机器学习-第四章学习理论
  17. 腾讯云、阿里云都“服”了,云容灾你还迟疑什么?
  18. BUGKU_WEB_never give up
  19. 深度之眼Paper带读笔记1:Deep learning
  20. Bellman-Ford algorithm

热门文章

  1. 回顾 | Apache Flink 1.9 版本新特性强势预告!(内含PPT下载链接)
  2. 人工智能python的缺点_浅谈人工智能的优缺点及使用环境
  3. java解析excel 哪个好_java解析excel
  4. oracle存档模式,Oracle学习系列之如何开启归档模式
  5. 大脑构造图与功能解析_EXCEL函数中Indirect才是构造函数之王,其他函数只能靠边站...
  6. php 字符串中 数组变量,PHP返回变量或数组的字符串表示:var_export()
  7. weui 加载提示_WeUI与WeUI.JS配合切换进入页面显示加载动画
  8. 一、在Linux下,Nginx初安装及简单配置
  9. 机器学习实现计算不规则图形面积_【名师课堂】苏教数学五年级上2.11校园绿地面积...
  10. 从0开始实现自动化运维工具(一)