摘要: It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can write down all the non-empty prefixes of this string. For example:s: "abab"The prefixes are: "a", "ab", "aba", "abab"For each 阅读全文
posted @ 2014-02-06 14:17 acvc 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 做codeforces以来题目最水的一次A题:Fox and Number Game题意:就是用一堆数字来回减,直到减到最小值为止,再把所有最小值加,求这个值sol: 简单数论题目,直接求所有数字的最大公约数即可ps: 以前cf出过这道题目啊,出题人没救了 5分钟300人过1#include2#include3#include4usingnamespacestd;5constintMAX=1000;6intnum[MAX];7intgcd(inta,intb)8{9returnb==0?a:gcd(b,a%b);10}11intmain()12{13intn;14while(scanf(&qu 阅读全文
posted @ 2014-02-04 14:57 acvc 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 题意:支持增删,查操作,最后的序列式递增的。做法:主要是如何维护mod5的sum值,这里左儿子可以不用管,关键是右儿子的处理,可以假设右儿子有t个节点,左儿子有cnt个节点,则令(t+cnt)MOD 5= i 则tmod5=(i-cnt MOD 5)MOD 5 ,所以剩下的就是维护每个节点的节点总数以及相应的和就好了。1#include2#include3#include4typedeflonglongll;5usingnamespacestd;6#definelzu>1;21build(lz);build(rz);22}23}24voidadd(intu,intl,intr,intx, 阅读全文
posted @ 2014-02-02 22:37 acvc 阅读(397) 评论(1) 推荐(0) 编辑
摘要: 题意:给定三个操作添加删除查询大于a的的第k大值----树状数组的逆向操作给定a利用BIT查询有多少值比a小,这样比a大的k大值就应该有k+sum(a)个小于他的值因此可以二分枚举k大值看看是不是满足条件。这里有一点需要注意,就是二分出答案时当前答案的的数量一定大于1因为这个wa了一次详见代码:1#include2#include3#include4usingnamespacestd;5constintMAX=100000+10;6constintinf=0x3f3f3f3f;7intc[MAX],n,use[MAX];8intlowbit(intx)9{10returnx&(-x); 阅读全文
posted @ 2014-01-29 21:13 acvc 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个矩阵有查询有添加操作。hit :很明显是二维树状数组(第一道二维fenwick哈) 横向纵向维护两个树状数组所以是二维,详见代码1//二维树状数组2#include3#include4#include5usingnamespacestd;6constintMAX=1024+10;7intc[MAX][MAX];8intn;9intlowbit(intx)10{11returnx&(-x);12}13voidadd(intx,inty,intd)14{15for(inti=x;i=1;i-=lowbit(i))27{28for(intj=y;j>=1;j-=lowbi 阅读全文
posted @ 2014-01-26 23:03 acvc 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 树状数组简单题(第一道树状数组哈)唯一有点意思的是这道题目需要离散化。详见代码题意: 求一组数的逆序数1//离散化+树状数组2#include3#include4#include5usingnamespacestd;6constintMAX=500000+10;7structnode8{9intval,pos;10}v[MAX];11intnum[MAX],n,c[MAX];12intcmp(nodea,nodeb)13{14returna.val0)32{33ans+=c[x];34x-=lowbit(x);35}36returnans;37}38intmain()39{40longlong 阅读全文
posted @ 2014-01-26 22:58 acvc 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 数论好题题目要求:求给定序列的素因子如果在给定区间内该数字个数加1;思路:打表时求出包含给素数因子的数的个数,详见代码1#include2#include3#include4usingnamespacestd;5constintMAX=10000000+10;6intvis[MAX],sum[MAX],num[MAX];7intmain()8{9inta,l,r,n,m;10scanf("%d",&n);11memset(vis,0,sizeof(vis));12memset(sum,0,sizeof(sum));13for(inti=0;i<n;i++)14 阅读全文
posted @ 2014-01-25 12:11 acvc 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1intvis[MAX];2voidgetp(){3for(inti=2;i<maxn;++i){4if(vis[i]==0){5p[cnt++]=i;6for(intj=i;j<maxn;j+=i){7a[j][vis[j]++]=i;8}9}10}11}样题:Codeforces Round #226 (Div. 2)C题枚举质因子后二分素数的位置 阅读全文
posted @ 2014-01-25 03:07 acvc 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题意:给定区间和判定那个说法是错误的带权并查集需要判环2//主要是权值压缩类似于LA3027。3//注意区间左或右端点要减14#include5#include6#include7usingnamespacestd;8constintMAX=200000+10;9intpa[MAX],d[MAX],ans;10intmake(intn)11{12for(inti=0;i0)41{42ans=0;make(n);43for(inti=0;i<m;i++)44{45scanf("%d%d%d",&a,&b,&w);46Union(a-1,b,w); 阅读全文
posted @ 2014-01-24 16:40 acvc 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 题意描述:有一个类似滚轮式的密码锁放在一排共n个,有m种操作每次操作一个区间,且此次操作后的所有密码相同,问最多能形成多少种密码解决:将区间分为可变部分和不可变部分,没当有可变部分时候总区间数要减去一。因为在可变 区间内第一个滚轮一定是固定的(可以转)并查集合并区间后做下快速幂就好了1//组合数学+快速幂+并查集2//统一区间内的组合数指数在原先基础上要减去13//证明可以枚举开始的字母因为是循环的所以第一个字母唯一4//注意边界重叠的情况,初始化要从0开始56#include7#include8#include9typedeflonglongll;10usingnamespacestd;11 阅读全文
posted @ 2014-01-24 16:31 acvc 阅读(326) 评论(0) 推荐(0) 编辑