积累模拟经验 题目描述 维护一个二进制数,支持如下操作 "+" 该数加 11 "-" 该数减 11 "*" 该数乘 22 "\" 该数除 22 并下取整 保证操作过程中不会出现负数 输入格式 第一行 n,m 表示原数和指令的长度 第二行 一个 01 串,从高位到低位表示一个二进制数 第三行 指令 输出格式 输出操作后的数,二进制,无前导 0 题目分析 延迟处理进退位 #include<bits/stdc++.h>…
统计方案数,要么组合数,要么递推(dp)了. 这是有模拟赛历史以来爆炸最狠的一次 T1写了正解,也想到开long long,但是开错了地方然后数组开大了结果100->0 T3看错题本来简单模拟又给我搞成0分 T5差分约束本来很简单但是又被我胡搞炸掉了..... 本题T4,难到爆炸的T2把我困住了..... 先讲讲考试看道题的想法: 思考了一会吗,推出几个结论,然后准备写了,感觉可以短时间A掉,结果被T2困住,一小时只优化掉了一个没啥用的n..(n^5logn的复杂度用爱过题) 然后现在来讲讲正解…
Tag 计数+LIS, 二分+ST表, 计数+记搜 A. 改造二叉树 Description 题面 Solution 如果目标序列非严格递增,或者说目标序列是不下降的,那么答案就是 \(n\) 减去最长不下降子序列的长度. 比如这种情况:\(2\ 3\ 1\ 4\),\(LIS\) 为 \(2\ 3\ 4\),答案求出来为 \(1\),但由于整数的限制,应该要修改 \(2\) 次.即直接 \(LIS\) 求出的答案是在非严格递增的情况下的答案. 现在要求目标序列严格递增,一个常见的将严格递增整数…
Tag 递推,状压DP,最短路 A. 篮球比赛1 题面 \(Milky\ Way\)的代码 #include <cstdio> const int N = 2000, xzy = 1e9 + 7; int a[N], f[N][N], g[N][N], n, m = 1023, ans; //f[i][j]表示前i个数的xor和为j的方案数 //g[i][j]表示后n-i+1个数的and和为j的方案数 int main() { freopen("basketball1.in"…
折纸 题解 考试时无限接近正解,然而最终也只是接近而已了 考虑模拟会爆炸,拿手折纸条试一试,很简单 考你动手能力 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define A 3100000 ll cj[A],questions[A]; ll len,l,r,n,QAQ; int main(){ scanf("%lld%lld",&len,&QAQ); l=0,r…
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容斥 于是我得到$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{j\times(k-1)}^{k-1} \times w[j]$ 但还是不对 现在思考第一个式子为什么不对 我们枚举矩阵选数 1 2 3 1 2 3 1 2 3 这样我们C的话概率会很鬼$\frac {4}{…
抽代的成分远远大于OI的成分 首先把一个点定为原点,然后我们发现如果我们不旋转此时答案就是所有位置的\(\gcd\) 如果要选择怎么办,我们考虑把我们选定的网格边连同方向和大小看做单位向量\(\vec e\) 那么此时我们把坐标系变成复平面,每个点都可以表示成\((a+bi)\vec e\)的形式 当\(a,b\)均为整数时,它其实是个高斯整数的形式,那么我们可以把带余除法推广到高斯整数环 一些具体的姿势详见:高斯整数余数的一个问题 然后直接推广出辗转相除即可,利用不等式放缩容易得出此时一定是最…
计算几何板子题(我才没有拷板子的说--) 众所周知,三角形的重心坐标是\((\frac{x_1+x_2+x_3}{3},\frac{y_1+y_2+y_3}{3})\) 然后我们发现如果我们有一个点集\(P=\{\vec a+\vec b+\vec c|\vec a\in A,\vec b \in B,\vec c\in C\}\),那么就可以直接查询\((3\times x_,3\times y)\)在不在这个点集里得到答案 其实这样的点集在计算几何上是有名字的,就是传说中的闵可夫斯基和 通俗…
点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三个和尚(点此看题面) 第一眼看完毫无想法. 仔细思考,可以发现一个性质:只要原数数位之和\(sum\)不能被\(3\)整除,就说明无解. 然后就很简单了,只要使输出的\(3\)个数数位之和全部为\(\frac{sum}3\)即可. 代码如下: #include<bits/stdc++.h> #de…
点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Digits(点此看题面) 比赛时写数位\(DP\)写挂了,最后交了个裸暴力.(后来发现写挂是因为没考虑借位的情况) 好吧,其实数位\(DP\)也是可以过的,但是,好像有个更简单的方法. 对于每一位,我们可以直接枚举出相加与这一位上数字相等的两个数字(总共只有\(4\)种情况),然后求解即可. 分类讨论这…