Type00A

2013年3月18日

动态逆序对-inverse

摘要: 题目描述:逆序对定义:i<j且a[i]>a[j],则算是一个逆序对。有n个数,是1-n的一种排列,m次删除操作,每次删一个数,问每次删数前有好多个逆序对。输入n,m,接下来是n个数和m个数。样例:Input:5 41 5 3 4 25 1 4 2Output:5221思路:首先说一下,这道题时限是3秒。暴力做法,首先用归并排序nlogn的时间算出初始状态下的逆序对个数。然后每次操作,如删a[k],把[1,k-1]的数比a[k]大的统计出来cnt1,把[k+1,n]的数比a[k]小的统计出来cnt2,让当前总数减去cn1,cnt2,即是剩下的逆序对数,时间复杂度nlogn+M*N,可 阅读全文

posted @ 2013-03-18 21:11 Type00A 阅读(326) 评论(0) 推荐(0)
POJ2891 Strange Way to Express Integers

摘要: 【问题描述】Elina 在读一本LRJ写的书,书里介绍了一种表示非负整数的奇怪方法,这种方法是:选出k个不同的正整数a1, a2, …, ak。对某个非负整数m,分别模ai(1 ≤ i ≤ k)得到余数ri。如果a1, a2, …, ak选得恰当,m就可以被确定,于是这些数对(ai, ri)就可用来表示m。Elina说:“从m来计算这些数对非常容易,但从这些数对要算出m,该怎么做呢?”【输入格式】多组数据,每组格式为:第1行:一个整数k第2..k+1行:每行2个整数ai, ri (1 ≤ i ≤ k)【输出格式】对每组数据,输出m。如果有多解,输出最小解。如果无解,输出-1【输入样例】28 7 阅读全文

posted @ 2013-03-18 21:10 Type00A 阅读(105) 评论(0) 推荐(0)
NOI2005维护序列

摘要: 做这道题需要一定的铺垫,因为综合性非常高。推荐先做Tyvj1729和SPOJGSS6。写完这两道题后,再做这道题,就是砍瓜切菜了。若果不能砍瓜切菜,那就洗洗睡吧!树中的每个节点维护的信息:struct node{ node *fa,*ch[2]; int v; //当前节点的值 int size; //以当前节点为根的子树有几个节点 int sum; //以当前节点为根的子树的所有节点和 int lazychange; //lazychange==-INF不需要修改,否则表示修改的数 int lazyreverse; //lazyreverse==0不需要翻转,==1需要翻转 int max_ 阅读全文

posted @ 2013-03-18 21:08 Type00A 阅读(171) 评论(0) 推荐(0)
古代猪文

摘要: 一道非常好的数学题,需要运用很多数学定理。题目描述:MOD=999911659sigma(C(n,i))其中(i|n)的结果为P ,求G^P%MOD。N<=10^9,G<=10^9快速幂,欧拉定理,Lucas定理,中国剩余定理,模逆元,费马小定理或扩展欧几里得G^P 可以用快速幂G^P %MOD = G^(P%(MOD-1)) %MOD 欧拉定理则问题转化成了求sigma(C(n,i)) %(MOD-1) 想到用Lucas定理,但(MOD-1)太大注意到MOD-1 = 999911658 = 2*3*4679*35617先求sigma(C(n,i)) %2……r1 sigma(C( 阅读全文

posted @ 2013-03-18 21:07 Type00A 阅读(118) 评论(0) 推荐(0)