【XJOI】NOIP2020模拟训练题2 总结】的更多相关文章

得分情况: 估分: 30(T1)+100(T2)+0(T3)=130; 实际: 30(T1)+60(T2)+10(T3)=100;   QAQ 是我高看自己了   T1  友好数对: 题意: 如果一个数a能由一个数b旋转得到,那么我们称为友好数对,如12345和45123为友好数对,12345和54321不为友好数对.给出两个正整数L,R,求有多少友好数对,满足L<=a    (说实话没看懂后面这什么玩意) 输入格式: 第一行一个整数T,表示数据组数,每组数据两个正整数L,R. 输出格式: 对于…
比赛链接 友好数对 暴力枚举\([L,R]\)之间的所有数,将每个数进行"旋转",看是否符合题意. 注意"旋转"的次数,并不一定是数字位数.只要旋转回到了初始数就应该跳出,否则会重复计算. #include<bits/stdc++.h> int T,L,R; int F(int x) { int Len=0; while(x){x/=10;Len++;} return Len; } int main() { scanf("%d",&a…
题目链接:XJOI - NOI2015-13 - C 题目分析 使用神奇的线段树合并在 O(nlogn) 的时间复杂度内解决这道题目. 对树上的每个点都建立一棵线段树,key是时间(即第几次操作),动态开点. 线段树的节点维护两个值,一个是这段时间内的 1 操作个数,另一个是这段时间内变化的黑色节点权值和. 在处理所有操作的时候,每棵线段树都是仅代表树上的一个点,因此线段树的每个节点维护的就是这段时间内以这个点为 a 的 1 操作个数和这段时间内这个点的黑色节点权值和(这个点 x 由黑变白就 -…
题目链接:XJOI - NOI2015-13 - B 题目分析 通过神奇的观察+打表+猜测,有以下规律和性质: 1) 删除的 n 个数就是 1~n. 2) 当 c = 2 时,如果 n + 1 是偶数,答案是 lcm(n + 1, (n + 1) / 2 * 3) = 3(n + 1),如果 n + 1 是奇数,答案是 lcm(n + 2, (n + 2) / 2 * 3) = 3(n + 2). 注意特判 n = 2 和 n = 4 的情况,这些情况下 (n + 1) / 2 * 3 或 (n…
题目链接:XJOI NOI2015-13 A 题目分析 首先,题目定义的这种矩阵有一个神奇的性质,第 4 行与第 2 行相同,于是第 5 行也就与第 3 行相同,后面的也是一样. 因此矩阵可以看做只有 3 行,从上到下就是 1 2 3 2 3 2 3 ...... 然后我们使用分块,将每一行分成 sqrt(m) 大小的块. 然后维护 A[i][j] —— 第一行前 i 块中,数字 j 的出现次数. 同时维护 B[i][j] —— 第二行前 i 块中,数字 j 的出现次数. 这里要将第一行的数字进…
题目链接:XJOI - NOI2015-07 - B 题目分析 题意:过一个点 P 的所有直线,与点集 Q 的最小距离是多少?一条直线与点集的距离定义为点集中每个点与直线距离的最大值. 题解:二分答案,对于一个二分的距离,我们可以求出对于每个点的可用的极角范围,然后判断 n 个点的极角范围有没有交即可. 听起来非常简单..结果我发现细节很麻烦.. 因为,极角的范围是环形的,如果限定在 [-PI, PI] 的范围内,跨越 -PI = PI 这条线的极角范围就很难处理. 然后两个环上的范围的交可能是…
第一题 组合计数 分析: 从前往后一位一位的计算 先算第一位比t小的数目,再算第一位与t[1]相同,第2位比t小的个数以此类推 先预处理一个数组h,h[i]表示从1~it串与s串不同的位数 对于第i位, 由于1~i-1与s串一样,故i~n中与s串不同的个数有k-h[i-1]个,设v=k-h[i-1]. F(i)表示’a'到t[i]中与s[i]不相同字母个数(不包括t[i]), 当s[i]>=t[i]则 第i位开始比t小的数目ANS[i]=F(i)*C(n-i,v-1)*(25)^(v-1) 当s…
第一题 分析: 开始想的是贪心,取每列均值最大一段. 应该是01分数规划,具体看代码 代码: program gold; var a:..]of int64; n,i,m,j,x:longint; function max(x,y:real):real; begin if x>y then max:=x else max:=y; end; function cheak(x:real):boolean; var i,j:longint; s,ans:real; begin ans:=; to n…
题意简述 \(n\)是正整数,其四个最小的因子分别为\(d_1,d_2,d_3,d_4\). 求对于所有的\(n \le m\)满足 \[d_1^2+d_2^2+d_3^2+d_4^2=n \] 的\(n\)的个数. 分析 这是一道数竞题,下面来求\(n\). 显然\(d_1=1\),则\(n=1+d_2^2+d_3^2+d_4^2\). 若\(n\)是奇数,则其因子都是奇数,其平方和为四个奇数相加为偶数,矛盾.故n为偶数,\(d_2=2\),则\(n-5=d_3^2+d_4^2\). 此时,\…
组合 首先可以考虑一个状态合法的条件,可以发现的是最后得到的矩阵一定是至少有一行或是有一列全$0$或$1$,如果把这一列或这一行删掉那么将剩下的子矩阵拼接起来又是一个子问题,同样的也是至少有一列或一行全$0$或$1$,那么这样不断删下去,最终能够删完的是合法的状态 但利用这个去做这道题会有很多方案算重,考试的时候也只想到了这里,没有发现更深一层的性质 考虑怎样的状态是删不完的,就是当前找不到一行或列全是$0$或$1$,那么矩阵中一定存在子矩阵的四个角上为 0 1或是1 0 1 0 0 1 那么这…