摘要:
sscanf(字符串地址,””,存储位置),可以从字符串中格式化读入。 strstr,可以在字符串中找字符串,返回地址(被找的,要找的) strcat,字符串中加内容(被加的,加的) fgets()会把字符串末尾的\n存进去,gets不会 sprintf()是存在的,作用是写到字符串里 阅读全文
摘要:
取模的时候记得+个mod再%,以免出现负数 没有return 0的代码无法正常生成活动文件,在VSCODE中,会直接推出代码为-1 scanf在使用的时候,如果是%c或者说有其他的控制字符(非空白)的时候,不会忽略掉间隔之间的回车和空格,会留在缓冲区。 而且scanf在推出后不会清空缓冲区,下一个s 阅读全文
摘要:
Archie的OI总结 当一件自己投入其中很久的事情结束的时候,当然要总结一下。 感谢信息学竞赛,让我可以在高考前有机会来一次总结。 本文将会包括:Archie的高二上学期OI记 Archie的感谢 Archie的总结 鸣谢 感谢scz,lzc二位班主任对本彩笔竞赛之路的支持。 感谢jcl,drl, 阅读全文
摘要:
Mikuuu 准备投身于ACM的潮流中,失踪人口回归啦! 这个题目的思路还是非常有趣的,因为我们可以注意到,两个可能成为答案兴趣点之间的最短路不应该经过了第三个点,如果经过了,显然和第三个点之间的最短路会更小,则原来的两个点之间不应该成为答案。 考虑到这一点,我们可以想到建枚举每一条边,找到这一条边 阅读全文
摘要:
Link 首先我们研究全是0的情况,显然的,每次操作2最多可以得到1分。 那么显然的,不如直接一次操作一一次操作二,这样是最优的。 然后再研究初始数组,很难用很快的方式得到应该从什么时候开始第一次操作二。 不过可以注意到,第一次操作2最多可以得到n分,那么我们再\(2n+1\)天以后进行第一次操作二 阅读全文
摘要:
Easy Version Hard Version Hard Version的做法可以从Easy Version 用数据结构优化得到。 首先我们想一下,什么情况需要进行操作?显然是\(a_i!=b_i\)的时候,并且当\(a_i>b_i\)的时候将会无解。 那么当\(a_i<b_i\)的时候,应该怎 阅读全文
摘要:
Link 这是一个需要欧拉反演的题目 首先,可以知道只和数字之间的大小有关,数列的顺序无关,那么就可以首先排一个序方便解决该问题。 根据欧拉函数的性质,知道\(n=\sum_{d|n}\phi{(n)}\) 那么我们每次先确定中间的数\(a_j\),然后根据公式,得他它得贡献是\(\sum_{i=1 阅读全文
摘要:
Link 一道很有意思的min-max博弈 用树上dp来解决,那么显然的,当前节点是谁取的会影响答案,\(dp2_{i,j}\)表示取当前阶段,被Alice/Bob取走的结果, 并且这个题是取子树上任意的节点,那么还需要保存子树上的信息,故使用\(dp_{i,j}\)记录下子树中的Alice/Bob 阅读全文
摘要:
LInk 首先我们可以注意到,两个数的gcd要不是它们当中较小的那一个要不是它本身。 所以对于一个特定的 \(r\),\(gcd_{i=p}^r,1<=p<=r\)来说,答案不会超过32种。 并且因为gcd的性质,答案一定是成块且递减的。 所以我们可以直接记录下对于每一个\(r\),答案都有哪些,从 阅读全文
摘要:
[无link] 现给出一个字符串,它为一个环,可以从任意位置分开后顺时针构成一个整数,求构造的最大整数是多少? 对于该问题,我们在遍历更新的时候,如果比较了大于1次才得出大小关系,我们应该从最后一次比较的位置继续,反之,应该从第一次比较的下一个位置继续比较。 对于该策略证明: 1 如果只比较一次,显 阅读全文
摘要:
C 这么小的数据范围,想必胡搞就可以了。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,m,k; struct cll{ int p; int 阅读全文
摘要:
不考虑重复元素下 循环条件l<=r mid=(left+right)>>1 (1)如果a[mid]=target return mid (2)如果a[mid]<target 搜索 [mid+1,right] (3)如果a[mid]>target 搜索 [left,mid-1] 如果循环推出仍然没有找 阅读全文
摘要:
对于不定方程\(ax+by=c\)有正数解的充分必要条件是\(c|gcd(a,b)\),证明请看裴蜀定理 那么显然的,我们只要能解出方程\(ax+by=gcd(a,b)\)然后把解\(\times \frac{c}{gcd(a,b)}\)即可 如何解这个新的方程呢?我们知道\(gcd(a,b)\), 阅读全文
摘要:
Link C 分类讨论贪心 显然的,正面考虑怎么拼团会很麻烦,所以我们从另一个视角考虑,求出可能的最大团数,然后看一看怎么踢人能够使落单的最少。 当K为偶数的时候,显然最大团数就是\((n+m*2)/k\),而当K为奇数的时候,显然男生抱团需要至少一个男生,女生抱团也需要至少一个男生,最大团数就是\ 阅读全文
摘要:
Link 此题目可以从两个方向考虑,正着和倒着,倒着考虑比较容易,首先把所有的数放到一块,如果是'<'或者'>',就是去掉最左边或者最右边的数,这样显然只有一种可能,答案不变。 如果是'?',那么显然可以去掉中间的任意一个,所以答案就是\(\times l-2\),那么对于\(s_n-i\)位置的\ 阅读全文
摘要:
生成格雷码有三种方法, 一:首先是从全0格雷码开始,依次执行 1.将最低位反转 2.将最右边的1左边的第一位反转 二:递归镜像构造 1:1位格雷码是 0,1 2:$(n+1)$位格雷码中的前 $2^n$个码字等于$n$位格雷码的码字,按顺序书写,加前缀 0 3:(n+1)位格雷码中的后 $2^n$个 阅读全文
摘要:
定义平衡\(2k+1\)进制数码为\(-k,-(k-1),,,0,,,k-1,k\),请求出一个十进制数的\(2k+1\)进制表示。 对于该问题,解决的思路是首先算出普通的\(2k+1\)进制下的表示,然后分别对每一位进行考虑. 1:这一位的数属于 \(0-k\) 不用管 2:这一位的数属于\(k+ 阅读全文
摘要:
Link A 很简单 B sort+struct+cmp函数 C 排个序举行 D 显然的,我们可以从最小的开始进行合并,合并的越多越好。但是可以注意到\(S_i\)的跨度相当的大,这怎么办呢? 我们可以使用STl中的map来解决,每一次取出map.begin()出来并且将其删除来解决。 E 一个很简 阅读全文
摘要:
luogu HDU 最近在复习数位dp 数位dp,就是在一些计数问题的时候按照一位一位的顺序依次计算,通常可以采用记忆化搜索的方式 这两道题就是很典型的数位dp 数位dp通常要记录是不是顶着上限,有没有前导零,到了哪一位以及一些特殊的条件要求。 数位dp通常要把某个区间的问题转变成两个区间的差来方便 阅读全文
摘要:
Link 这个题有一个很特殊的点,就是最大值不会超过28,可以想一下最多可以合并多少次。 那么常规的区间dp是不能使用的,就要采用特殊的形式, 因为很难的确定应该怎么转移,那么就换一种思路,转移的对象变成另外一个端点。 \(dp_{i,j}\) 表示\(i\)在左边,达到\(j\)的话的右端点位置 阅读全文
摘要:
Link 首先我们想这样的问题,为什么强调是\(2^x\) 呢?我们记平均值是 \(avg\),然后可以注意到,应该有一下式子被满足 \(a_i-2^{x_i}+2^{y_i}=avg\),移项,可以得到\(a_i-avg=2^{y_i}-2^{x_i}\),而这个式子中\(x_i\)和\(y_i\ 阅读全文
摘要:
Link 首先想一下,如果又一列的 \(MEX\) 是 \(n\) 会有什么样的要求?需要这一样有 \(0~n-1\) 的所有数字并且没有\(n\) 当我们知道这一点以后问题就很好解决了. 我们应该构造数列的时候,满足第一行的\(MEX\)为 \(0\) ,第 \(i\) 行的 \(MEX\) 为\ 阅读全文