NOIP 模拟 $22\; \rm d$】的更多相关文章

题解 \(by\;zj\varphi\) 对于一个数,如果它二进制下第 \(i\) 位为 \(1\),那么 \(\rm x\) 在这一位选 \(1\) 的贡献就是和它不同的最高为为 \(i\) 的数的个数 这个东西很好搞,整一个 \(\rm 01trie\) 就行,每会插入的时候直接统计即可 但是如何求第 \(p\) 位,二分,但每回二分时 \(2^k\) 搜索一遍就超时了,\(\rm meet\;in\;the\;middle\) 发现每一位是相互独立的,也就是说它们之间是不会互相影响的,所以…
题解 对于这个 \(abs\) 就是求大于 \(r\) 的最小值,小于 \(r\) 的最大值,建权值线段树或平衡树. 因为是 \(k\) 个点的联通块,就是求它们的 \(lca\) 到它们的链,可持久化线段树就行 在这里,只需要儿子继承父亲即可,因为要求一条链. 在搜前趋时,右儿子有就搜右儿子,搜出一个答案后就停止,这样可以做到每次最多搜 \(log\) 个区间,只有一个区间会继续向下搜,所以总的也是 \(log\) 总复杂度 \(\mathcal O\rm (klogn)\) Code #in…
题解 很好的贪心题 考虑去掉的矩形一定是几个 \(a\) 最小的,几个 \(b\) 最小的,枚举去掉几个 \(a\),剩下的去掉 \(b\) 先对 \(a\) 排序,用小根堆维护 \(b\) ,记录哪些已经在 \(a\) 中删了,这些在 \(b\) 中就需要跳过 但跳过时也需要记录一下曾经跳过,因为以后在放回 \(a\) 时,如果它在 \(b\) 中出现过,直接填坑即可 Code #include<bits/stdc++.h> #define ri register signed #defin…
noip模拟22 solutions 哈哈哈,这次暴力打满直接190,其实不到哈哈哈,187.. 这次的题暴力极其好打,但是正解确实不简单... 打了好久才改完这个题,改完的时候爽暴了 这些一个字母的题就非常的迷人,题面很短,题目很难,但是拿分还是挺简单的 · T1 d 就这个题考场一小时切掉,还是慢了点 这个就是一个排序加上,疯狂弹, 就是一个按照a排序,一个按照b排序 我们知道一定要删去小的,所以我们就.... 我们先删掉m个a中的a较小的矩形,然后我们就开始一个一个往回拿. 肯定我们要拿回…
这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照下来.他想让这一段中每个人的身高成等比数列,展示出最萌身高差,但他发现这个太难办到了,于是他决定放低要求,让等比数列的每两项之间可以是不连续的(例如 2,4,16--).可他依然找不到满意的,便再次妥协,使这个等比数列可以是乱序的. 现在请在其中你找出最长的符合要求的一段,使得将这一段排序后为某个公…
5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Prime() { for(int i=2;i<=M;i++) { if(!b[i]) pri[++tot]=i; for(int j=1;j<=tot&&i*pri[j]<=M;j++) { b[i*pri[j]]=true; if(!(i%pri[j])) break; }…
又是炸掉的一次考试 T1.方程的解 本次考试最容易骗分的一道题,但是由于T2花的时间太多,我竟然连a+b=c都没判..暴力掉了40分. 首先a+b=c,只有一组解. 然后是a=1,b=1,答案是c-1,不解释. 对于最大的数据,我们可以用exgcd求出一组特解,之后的通解为x+(b/gcd)*k, y+(a/gcd)*k. 求出正整数解的个数即可. 注意有很多特判,慢慢调试就好(改这题的时间比我改T3的时间都长) #include<bits/stdc++.h> #define m 65535…
NOIP模拟1,到现在时间已经比较长了.. 那天是6.14,今天7.18了 //然鹅我看着最前边缺失的模拟1,还是终于忍不住把它补上,为了保持顺序2345重新发布了一遍.. #   用  户  名   Censoring 记忆的轮廓 雨天的尾巴 总分 1 板B 87 03:20:06 0 03:23:09 100 03:20:42 187 03:23:09 2   100 03:20:20 0 03:20:49 50 03:26:26 150 03:26:26 2   100 03:19:16…
题解 \(by\;zj\varphi\) 首先发现一共最多只有 \(2^d\) 种道路,那么可以状压,(不要 \(dfs\),会搜索过多无用的状态) 那么设 \(f_{i,j,k}\) 为走 \(i\) 步,走到 \(j\),状态为 \(k\) 是否可行,那么转移就是 \(\mathcal O\rm (n^22^n)\),过不了 有一种技巧,叫 \(\rm meet\;in\;the\;middle\),从中间折半,设 \(f_{i,j,k}\) 表示由 \(1\) 出发,走 \(i\) 步到…
期望得分:30+90+100=220 实际得分:30+0+10=40 T1智障错误:n*m是n行m列,硬是做成了m行n列 T2智障错误:读入三个数写了两个%d T3智障错误:数值相同不代表是同一个数 既眼瘸又脑残,NOIP这样后悔去吧! T1 n*m网格,有S种颜色. 按从上到下,从左到右的顺序涂色. 相邻的相同色块可得一份,问最大得分 n,S<=100000,m<=4 只有最多4列 1列:顺着涂 2列:先涂可以涂偶数个 3列:先涂%3=0的,然后一个%3=1和一个%3=2的组合,剩余的顺着涂…