关闭
当前搜索:

[置顶] ACM模板整理(精心准备,持续更新中)

树状数组篇 单点更新,区间查询 #define lowbit(x) (x)&(-x) const int maxn=10005; int sum[10005]; void add(int x,int val) { while(x<maxn) { sum[x]+=val; x+=lowbit(x); } } int query(in...
阅读(147) 评论(0)

[置顶] Codeforces好题专栏(前三道)

为了上分,博主打算开一篇博客来记录下前三道遇到的好题....
阅读(147) 评论(0)

Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)C,D详解

C. Travelling Salesman and Special Numbers 思路:由题意可得,n最多有1000位,那么进行了第一次操作后,它就变成一个不大于1000的数,所以我们可以先预处理1000以内变成1的次数。 第二步,我们再分类讨论,设i是它当前位,i之前有x个1,y到1的操作数为k-1,Size是它的长度 如果第i位是1,那么ans+=第i位为0的所有满足题意的数。也就是...
阅读(5) 评论(0)

Codeforces Round #457 (Div. 2)D,E详解

D. Jamie and To-do List 题意:Jamie有许多事情要做,于是他把事情弄了一个优先级(数字越小优先级越高),现在有三个操作,1,set a x,(a是char*型,x是int型,下同),代表把a事情的优先级变成x。2,remove a,把a事情移除掉。3,query a,询问比a事情优先级高的事情有多少个。4,undo d,撤销前d个操作(不包括当前这个)。 思路:如果没...
阅读(17) 评论(0)

kuangbin专题三DancingLinks总结

该专题主要分成两个问题:一是精准覆盖问题,二是重复覆盖问题。概括来说精准覆盖问题就是01矩阵中选一些行行使每列有且仅有一个1,而重复覆盖问题就是选最少行使每列至少有一个1。只要想好如何建矩阵,剩下的就是套模板了。 精准覆盖问题: A - Treasure Map 要覆盖所有的格子,容易想到列为格子的编号,行则为地图的编号,这样就转换成了精准覆盖问题了。 代码如下: #include #i...
阅读(9) 评论(0)

kuangbin专题二搜索进阶总结

终于肝完了。。 专题二的题大都挺好的,但有些题意不太清楚,特此说明一下。。(几个月没写博客突然感觉不会写了。。) A - Eight 虽然是八数码问题,但常规的康托展开加bfs却会超时,这个时候就需要用更加高深的算法了,网上也有许多对八数码问题的解法,这里提一个比较特别的做法:打表。 已知最终的状态就是12345678X,那么我们可以用最终状态逆推所有可以到达他的状态,并且记录路径就行...
阅读(9) 评论(0)

kuangbin专题一简单搜索总结

E - Find The Multiple 题意:找一个能整除n的数m,对m的要求是只有0和1组成。n不超过200,m长度不超过100. 思路:很多人都写了一个假算法,就是在unsigned long long 的范围里面找就行了,虽然也A了,但博主想在这里提一下正确的思路。 首先用到了同余定理 即以任意x为起点,它的临界点为y=[x(mod n) * 10(mod n)](mod n)...
阅读(24) 评论(0)

2017哈尔滨ccpc部分题解

A题思路:最主要的点就是要得出这个结论: 设p[i]为以i为中心的回文半径-1,那么如果满足j-i<=min(p[i],p[j]),那么j就可以和i组成究极回文串。 所以由这个式子可以看出三点: 1,i < j 2,j-i < p[i] 3,j-i j+p[j],所以算可以和i组成究极回文串的时候得将所有满足j+p[j]的j算进去,再计算满足小于i+p[i...
阅读(70) 评论(0)

2013长春regional题目详解

和队友打模拟赛遗憾的打铁了,在这里总结一下题,还是太菜了。。 题目难度由易到难的顺序讲解。 C题队友wa了4发后A了,一开始题意都不太理解,但实际上就是求N个数组成的所有数中的就行了。仔细想想其实题目不是很难理解。 代码如下:#include #include #include #include using name...
阅读(48) 评论(0)

Codeforces Round #439 (Div. 2)E详解

题意:给出一个n行m列的矩形,现在有q个询问,输入t,r1,c1,r2,c2. 当t=1时,在r1行c1列格子上左边界到r2行c2列的下右边界划一个矩形边界。 当t=2时,将r1行c1列格子上左边界到r2行c2列的下右边界的矩形矩形边界删掉。 当t=3时,问能不能从r1行c1列这个格子到r2行c2列。能输出YES,否则输出NO. 思路:一开始想到的利用前缀和,但维护前缀和不知道怎么维护,从来...
阅读(94) 评论(0)

Codeforces Round #440 D详解

D. Something with XOR Queries 题意:现在有一个长度为n的序列p,该序列是0到n-1的数的排列。现在有一个序列b,它满足p[b[i]]=i.询问是输入两个值x,y。它会给出p[x]^b[y]的值,现在你最多可以询问2*n次,来判断出p的序列的每个元素,并输出。但现在即使你每个都问一遍都会有不确定因素,因此你还要输出有几个序列是满足回答的。。 思路:没想到这么简单,一开...
阅读(100) 评论(0)

Codeforces Round #442 (Div. 2)D详解

D. Olya and Energy Drinks 题意:给出n行m列的地图,.是可走的位置,#是不能走的位置,你1s可以沿一个方向走1到k个格子,问你从(x1,y1)到(x2,y2)的花的最小时间。 思路:将以前的走迷宫改一下就不会做了。。其实还是一样的bfs。但是要将vis[x][y] 从原来判断这个点是不是走过改成是不是由这个方向走过,如果由这个方向走过的话,你还枚举这个方向,其实是多于的...
阅读(88) 评论(0)

Codeforces Round #443 (Div. 2)D. Teams Formation详解

题意:...
阅读(84) 评论(0)

hdu5995 H - Guessing the Dice Roll

一道经典题目(套路),题意:有n个人都给出长度为m的序列,有一个骰子会一直摇,直到最后长度为m的序列出现了这n个人给出的序列,那个人就算赢了,求所有人赢的概率。 思路:首先用AC自动机存各个状态,用建立fail指针的方法来建立状态转移。然后用高斯消元建立方程组,方程解即是答案。 那么如何建立方程组呢。设结点为i,to=next[i][j],next[i][j]意为i状态摇到j后转移到的状态, 则...
阅读(105) 评论(0)

Codeforces Round #437B,C,D,E题目详解

B题题意:给你一个答案A,让你推出用M种硬币组成N元钱的方案数为A。 思路:构造题,其实我们很容易知道用1和2就可以构造出所有的数,然后再算一算就会发现构造出的数字的方案是有规律的。读者可以自己思考思考。#include using namespace std; int main() { int A; cin >> A; cout << 2 * A -...
阅读(175) 评论(0)

Manthan, Codefest 17 B-F题目详解

被这套题搞的突然失去梦想。。 B题题意:给你三个值p,q,r,在一段序列上选取3个值ai,aj,ak(1<=i<=j<=k<=n)使得ai*p+aj *q+ak *r最大。 思路:做的时候想歪了,但弄懂了一个之前一直疑惑的问题。。之后认真思考这道题时发现不是很难想,首先博主做的时候认定为一道dp题。 dp转移方程为:dp[j][i] = max(dp[j - 1][i], dp[j][i -...
阅读(163) 评论(6)

Codeforces Round #436 (Div. 2)E,F详解

鉴于太多人把D做出来了,实际上D就是道模拟简单题,所以本篇博客并没有D的题解。如果有需要的读者可以联系博主,博主会很热心的为你解释的(笑)。。 E题题解:Polycarp家着火了。。他家里有n个值钱的东西,每一个东西有一个营救需要的时间和一个烧毁需要的时间。问Polycarp能救出的东西的最大价值为多少,并输出营救顺序。 思路:裸的01背包问题。。如果不明白01背包问题可以看看紫书的动规专题。...
阅读(254) 评论(0)

Codeforces Round #435 (Div. 2)C,D,E,F题目详解

C题题意:用n个不同的数异或变成x。 思路:博主一开始的想法是一个偶数和它相邻的奇数异或值为1,那么我只要构造出许多个1,然后判断有奇数个1还是偶数个1就行了。如果是偶数个1,那么相当于前面异或值为0了,那么在加一个x就行了。同理奇数个1相当于前面异或值为1,那么最后一个数为x-1或者x+1(需判断一下哪个可行)。 依然觉得想法可行,但有许多细节要注意。下面介绍一个思路更加清晰的想法。 思路2...
阅读(309) 评论(0)

Codeforces Round #430(Div.2) C,D,E题目详解

C题题意:询问从1(根节点)到其他所有节点的最大gcd是多少,你可以在该路径中将其中一个节点的值改为0或者一个都不改来影响最终的结果,所有节点的最大gcd分开考虑。 思路:一开始想到dp,但从他的根到孩子并没有什么联接性,满足根的gcd最大并不代表同样孩子的gcd最大。所以不能dp。 换种简单的思路,从上而下,将所有结果都保存下来,然后加上该点的值的影响,看最终结果哪个最大。一个简单的dfs即...
阅读(72) 评论(0)

Codeforces Round #433(Div.2) C,D,E题目详解

C题题意:有n台飞机,起飞时间依次从1到n,但是现在会延期k分钟,也就是现在允许飞行的时间为k+1到k+n,每台飞机延期1分钟会有一个代价ci,并且不允许提前飞行,问如何安排飞行顺序使得代价最小。 思路:对于每台飞机来说,延期代价有大有小,那么延期对于代价大的来说,会影响更大,所以应该让代价大的飞机先选飞行时间。 按照上面的思路,先按照代价排序,然后让每个飞机都从自己原先起飞的时间往后遍历,看哪...
阅读(398) 评论(1)
34条 共2页1 2 下一页 尾页
    个人资料
    • 访问:4220次
    • 积分:387
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:1篇
    • 译文:0篇
    • 评论:9条
    文章分类
    最新评论