E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
CQOI
CQOI
2016 密钥破解 pollard-rho
鬼畜的大整数分割算法泼辣的肉,纯属人品优化,然而能跑的飞快。反正很强的一个鬼东西 学习链接已经狗带了,不过网上大把/************************************************ Author:BPM136 CreatedTime:2016/4/2420:41:18 FileName:A.cpp **********************************
BPM136
·
2016-04-24 22:00
数论
逆元
泼辣的肉
4521: [
Cqoi
2016]手机号码|数位DP
数据范围这么小..感觉暴力可过啊..DP也是随便设计状态F[i][j][k][s][l]表示前i位,最后一位是j最后一位连续出现k次(如果k已经等于3那么就一直不变)s表示4,8的出现状态l表示前缀是否和原数的前缀相同转移就是枚举下一位转移,也很简单..#include #include #include #include #include #include #include #include #
ws_yzy
·
2016-04-24 16:00
数位dp
[bzoj4520][
Cqoi
2016]K远点对
4520:[
Cqoi
2016]K远点对TimeLimit:30SecMemoryLimit:512MBSubmit:292Solved:150[Submit][Status][Discuss]Description
FZHvampire
·
2016-04-24 09:54
kd-tree
【BZOJ1260】[
CQOI
2007]涂色paint 【区间DP】
【题目链接】设dp[i][j]表示[i,j]这段字符串经过粉刷的最小次数。分两种情况转移:(1)str[i]==str[j]那么str[i]有可能在粉刷str[j]的时候被粉刷了,此时dp[i][j]=dp[i+1][j];对str[j]也同理,有dp[i][j]=dp[i][j-1]。(2)str[i]!=str[j]那么枚举中间位置k,将[i,k]和(k,j]分别粉刷,有dp[i][j]=dp
BraketBN
·
2016-04-23 15:00
bzoj2618【
CQOI
2006】凸多边形
2618:[
Cqoi
2006]凸多边形TimeLimit: 5Sec MemoryLimit: 128MBSubmit: 878 Solved: 450[Submit][Status][Discuss
AaronGZK
·
2016-04-20 23:00
半平面交
bzoj
【
CQOI
2016】密钥破解
DescriptionSolution要求什么题目看起来挺复杂的,但是理一理思路,只有四个要求:1、能快速提取一个大整数的因数;2、会求逆元;3、会打快速幂;4、会打快速乘。首先后面三个都是数论十分基础的操作。但是第一个是怎么回事?怎么分解?有一个算法叫做Pollard’sRho算法想说,这个算法真的非常的神奇。一个random算法,复杂度O(玄学),实际上普遍概率O(n14)太厉害了。这道题的乘
Facico
·
2016-04-20 22:48
数论
省选
随机算法
Pollard算法
[bzoj4524][
CQOI
2016]伪光滑数
题目描述做法先把质数都筛进数组p。我们设f[i,j]表示分解后最大质数为p[i],分解的结果是j项的数的集合。为了顺利的推出f[i,j]我们还要设g[i,j]表示f的前缀和。先让我们重定义一些符号:1、a+b返回集合a与集合b的并(a与b均为集合)2、a*b表示集合a内所有数乘上b(a为集合,b为一个数)那么转移是这样的:f[i,j]=∑jk=1g[i−1,j−k]∗p[i]kg[i,j]=g[i
WerKeyTom_FTD
·
2016-04-20 19:44
一般动规与递推
可并堆
[bzoj4524][
CQOI
2016]伪光滑数
题目描述做法先把质数都筛进数组p。我们设f[i,j]表示分解后最大质数为p[i],分解的结果是j项的数的集合。为了顺利的推出f[i,j]我们还要设g[i,j]表示f的前缀和。先让我们重定义一些符号:1、a+b返回集合a与集合b的并(a与b均为集合)2、a*b表示集合a内所有数乘上b(a为集合,b为一个数)那么转移是这样的:f[i,j]=∑jk=1g[i−1,j−k]∗p[i]kg[i,j]=g[i
WerKeyTom_FTD
·
2016-04-20 19:00
【
CQOI
2009】中位数
Description给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。Solution好久没有见到这么短的题目了。一看到维护中位数b就要想到把<b的变为-1,>b的变为1,然后若有一段区间和为0,那么这一段的区间的中位数就是b了。设b的位置为j。那么很明显打一个存值域的桶就好了,设sum[i]为和是i的区间的有多少个(必
Facico
·
2016-04-20 18:43
DP
省选
CQOI
2016 不同的最小割 分治最小割(最小割树)
我们有某些结论,本质不同的最小割一共有n-1个。在这颗最小割树上,我们有两种点集,一种是源点点集,一种是汇点点集我们做一次dinic后被增广到的地方就属于源点点集,否则属于汇点点集。这两个点集之间我们任意选的s和t之间的连边就是最小割的大小然后我们分治递归两个子树来构建这颗最小割树性质还有任意两个点之间的路径的最小权值就是这两点的最小割然后这就成为了分治最小割的裸题了/**************
BPM136
·
2016-04-20 16:54
树
网络流
CQOI
2016 不同的最小割 分治最小割(最小割树)
我们有某些结论,本质不同的最小割一共有n-1个。在这颗最小割树上,我们有两种点集,一种是源点点集,一种是汇点点集我们做一次dinic后被增广到的地方就属于源点点集,否则属于汇点点集。这两个点集之间我们任意选的s和t之间的连边就是最小割的大小然后我们分治递归两个子树来构建这颗最小割树性质还有任意两个点之间的路径的最小权值就是这两点的最小割然后这就成为了分治最小割的裸题了/**************
BPM136
·
2016-04-20 16:00
分治
最小割
最大流
最小割树
[bzoj4522][
CQOI
2016]密钥破解
题目描述快速分解做pollard_rho算法后模拟题意。#include #include #include #definefo(i,a,b)for(i=a;i1)returnp; }while(r1!=r2); } } intmain(){ scanf("%lld%lld%lld",&e,&n,&c); mo=n; p=pollard_rho(n); q=n/p; r=(p-1)*(q-1);
WerKeyTom_FTD
·
2016-04-20 12:00
CQOI
2016 K远点对 计算几何
辣鸡计算几何,写的我意识模糊我们知道每次的最远点一定在凸包上面于是我们就可以每次搞出来凸包,然后卡壳最远点,保存一些点乱搞一发就可以了最开始想用堆维护结果委的不行/************************************************ Author:BPM136 CreatedTime:2016/4/1919:07:13 FileName:B.cpp **********
BPM136
·
2016-04-20 09:00
计算几何
[分治最小割] BZOJ 4519 [
Cqoi
2016]不同的最小割
最多有N-1种zuixiaoge分治最小割裸题#include #include #include #include #include #defineVG[p].v #definecl(x)memset(x,0,sizeof(x)) usingnamespacestd; namespacehash_map{ structnode{ intx;intnext; }G[10005]; inthead
u014609452
·
2016-04-19 18:00
【
CQOI
2016】密钥破解
题目大意选取两个不同的质数p,q令N=p×q,r=(p−1)(q−1)选取一个小于r的整数e,且e与r互质计算整数d满足e⋅d≡1(%r)有以下两则性质:1.ne≡c(%N)2.cd≡n(%N)现在已知e,N,c求n,dDataConstraint对于30%的测试数据,N≤106对于50%的测试数据,N≤1014对于100%的测试数据,N≤262题解对于30%的数据,直接暴力做一下。对于50%的数
Akakii
·
2016-04-19 18:45
PollardRho
bzoj 4524: [
Cqoi
2016]伪光滑数
看到求第k大,k很小,首先应该想到k路归并。利用可持久化可并堆进行dpg[i][j]表示前i个素数,用了j个质因子可以表示的数的集合g[i][j]=sigma(g[i-1][j-k]*p[i]^k)sigma表示集合的并,乘法用打标记实现。然后k路归并,按照使用了的质因子个数分类。令mx[j]表示取j个质因子的情况下可以取得最大素数用堆维护g[mx[j]][j]的最大值,每次出堆后在对应的可并堆里
heheda_is_an_OIer
·
2016-04-19 15:00
BZOJ 4523
CQOI
2016 路由表 字典树
读入稍微有点麻烦。。BZOJ的大数据好评233。原来的样例是:11 A0.0.0.0/8 Q1.2.3.411 A1.0.0.0/9 A1.128.0.0/10 A1.0.0.0/10 A1.0.0.0/8 Q1.2.3.415 A1.2.0.0/16 A1.2.3.1/32 Q1.2.3.457 Q1.2.3.157很显然是字典树了吧。对于每个A,转换为二进制串后截取前缀l插入字典树,在终态上标
huanghongxun
·
2016-04-19 15:00
trie
字典树
bzoj
CQOI
省选
[BZOJ 3932][
CQOI
2015]任务查询系统
将一个任务拆成两个点,排序后查询某个点上k小值的和用可持久化线段树做一做就可以了TAT以后写主席树一定要离散。。RE不止。。(其实是爆内存了。。)特别注意容易写渣的地方是引用root[]数组。。我怎么会直接就引用了下标呢QAQ。。不长记性!#include#definemaxn500010usingnamespacestd;intn,m;structoperation{ints,tp,v,cnt;
__Horizon__
·
2016-04-19 07:33
数据结构--线段树
BZOJ 4524
CQOI
2016 伪光滑数 暴力
若一个大于1的整数M的质因数分解有k项,其最大的质因子为ak,并且满足akk≤N,ak#includeusingnamespacestd;typedeflonglongll;structData{llv;intp,l,k;Data(){}Data(lld,inta,intb,intc):v(d),p(a),l(b),k(c){}};booloperatorq;intp[]={0,2,3,5,7,1
huanghongxun
·
2016-04-18 22:55
BZOJ
省选
堆
BZOJ 4524
CQOI
2016 伪光滑数 暴力
若一个大于1的整数M的质因数分解有k项,其最大的质因子为ak,并且满足akk≤N,ak #include usingnamespacestd; typedeflonglongll; structData{llv;intp,l,k;Data(){}Data(lld,inta,intb,intc):v(d),p(a),l(b),k(c){}}; booloperatorq; intp[]={0,2,3
huanghongxun
·
2016-04-18 22:00
堆
优先队列
bzoj
CQOI
省选
BZOJ 3504
CQOI
2014 危桥 最大流
因为是双向的,因此来回an次和单向走2*an次是等价的。。然后构图跑最大流即可。危桥容量2,普通的容量inf。然后流的方向可能有问题。。如果a1跑到b2就搞笑了。倒过来做一下就好听说是SHOI2016Day2T3。。。。#include #include #include usingnamespacestd; constintinf=0x3f3f3f3f,N=55,M=100005; inth[N
huanghongxun
·
2016-04-18 20:00
网络流
最大流
CQOI
bzoj
省选
[Contest]
Cqoi
2016 题目汇总
把最近做的
cqoi
汇总一下按做的顺序排好了密钥破解:Rho大整数分解————————————线割分是我>wwwww<———————————————– K远点对:void
u014609452
·
2016-04-18 20:00
[堆 思路题] BZOJ 4524 [
Cqoi
2016]伪光滑数
可持久化可并堆+DP:http://blog.csdn.net/liuguangzhe1999/article/details/51132255我也不想这个有趣的方法就这么绝迹了呢但是我不会打堆:http://blog.csdn.net/dropd/article/details/51138254#include #include #include #include usingnamespaces
u014609452
·
2016-04-18 20:00
[Trie树 单调栈] BZOJ 4523 [
Cqoi
2016]路由表
建一棵字典树,记一下时间然后就是在字典树上匹配因为匹配长度是单调增的,所以维护一个时间的单调递增栈#include #include #include #include #definecl(x)memset(x,0,sizeof(x)) usingnamespacestd; typedeflonglongll; inlinecharnc() { staticcharbuf[100000],*p1
u014609452
·
2016-04-18 20:00
[数位DP] BZOJ 4521 [
Cqoi
2016]手机号码
题解:http://www.cnblogs.com/ccz181078/p/5379967.html数位DP和喜闻乐见的前缀和#include #include #include usingnamespacestd; typedeflonglongll; inlinecharnc() { staticcharbuf[100000],*p1=buf,*p2=buf; if(p1==p2){p2=(
u014609452
·
2016-04-18 18:00
[Rho大整数分解] BZOJ 4522 [
Cqoi
2016]密钥破解
这种裸题就是Rho的直接应用长点记性啊,linux下RAND_MAX=2^31狂T啊啊#include #include #include #include #include #include usingnamespacestd; typedeflonglongll; typedefpairabcd; inlinecharnc() { staticcharbuf[100000],*p1=buf,
u014609452
·
2016-04-18 18:00
[
cqoi
2016]伪光滑数 解题报告
这题有点意思。。考虑对于i个质因子,最大的质因子至多为j能生成的数。我们需要每次在其中取最大值,显然它可以用可持久化左偏树来维护。有leftist(i,j)=leftist(i−1,j)∗j[ji≤n]+leftist(i,j−1)然后我们再用一个堆来维护所有可持久化左偏树的根的最小值。==膜拜一下大爷的做法(妈的为什么我做法总是这么傻逼!!):左偏树的话时间复杂度当然是O(KlogK+(Alog
TA201314
·
2016-04-18 16:00
heap
左偏树
BZOJ4524: [
Cqoi
2016]伪光滑数
可持久化可并堆QWQ传送门:http://blog.csdn.net/liuguangzhe1999/article/details/51132255听说这位大神AK了省选%%%主要思想就是讲一个可并堆当做一个状态然后转递给后面的状态#include #include #include #include #include usingnamespacestd; #definelllonglong c
liutian429073576
·
2016-04-17 16:00
BZOJ4520: [
Cqoi
2016]K远点对
一开始打的二分答案QWQ后来发现T了只好暴力了QAQ#include #include #include #include #include #include #include #include usingnamespacestd; #definelllonglong #defineullunsignedlonglong boolflag; charc; inlinevoidread(ll&a)
liutian429073576
·
2016-04-15 15:00
CQOI
2016 day2 模拟赛总结
T1N=pqr=(p-1)(q-1)ed=1(modr)c^d=n(modN)第一步rho,第二步直接算第三步exgcd,第四步快速幂强行算就可以了exgcd忘开longlong100->30T2蜜汁题意读懂过后发现建字典树然后随便维护个单调栈搞搞就OK了时间nlognT3每次考虑把最大的出堆,把次大的入堆hash去重这样是31*k*log的很慢对不对,我们考虑把31搞到可持久化线段树里面这样每次
lcrtest
·
2016-04-14 16:00
数学
hash
字典树
单调栈
xianduanshu
CQOI
2016 bzoj4520 K远点对
题意传送门已知平面内N个点的坐标,求欧氏距离下的第K远点对。题解题目越简单做起来越难恩题意即题解。想到K远点对做不起,只能做最远点对。于是果断最远点对,K=1做出来。然后考虑怎么实现第K远。想到可以每次求凸包然后旋转卡壳求最远点对然后删除。问题又出现了:删除的点仍有可能对K远点对作出贡献。但是,第K远一定是每个点前K远合并之后的第K远。所以,我们将删除的点与所有点求距离,存下来,然后重复这一操作。
liuyunhui246
·
2016-04-14 09:00
OI-计算几何
CQOI
2016 bzoj4523 路由表
题意传送门这个题我真的是想请语文家教了QAQ题意极其难懂……而且重庆场上给的样例并没有bzoj这么大……各种理解样例都说得通……而且那个Hint也是后来问了之后才有的……大概就是求从1开始匹配的过程中,在[L,R]以内变化的次数。定义匹配指A串作为Q串的前缀。定义变化指已知串作为给定串的匹配变长。题解因为涉及到匹配,可以容易地想到Trie。因为涉及到区间的查询,可以容易地想到可持久化Trie。关键
liuyunhui246
·
2016-04-14 08:00
OI-题解
CQOI
2016 bzoj4522 密钥破解
题意Description一种非对称加密算法的密钥生成过程如下:1.任选两个不同的质数p,q2.计算N=pq,r=(p−1)(q−1)3.选取小于r,且与r互质的整数e4.计算整数d,使得ed≡1(modr)5.二元组(N,e)称为公钥,二元组(N,d)称为私钥当需要加密消息M时(假设M是一个小于N的整数,因为任何格式的消息都可转为整数表示),使用公钥(N,e),按照ne≡c(modN)运算,可得
liuyunhui246
·
2016-04-14 07:00
OI-题解-素数分解
CQOI
2016 bzoj4521 手机号码
题意:给定区间[L,R],求区间内满足以下条件的数的个数1.不能同时含有4,82.必须至少三位相邻位的数码相同例如11125877157满足条件而11148521234,11010110110不满足。题解在下面题解:这个一眼数位动规。用递推写我认为需要勇气……所以我是记搜的。想想需要哪些属性?因为当前位的状态肯定和是否出现4、8有关,所以我们设isF,isE来表示是否出现4,是否出现8。又因为我需
liuyunhui246
·
2016-04-13 22:00
数位动规-OI-题解
bzoj 1818(树状数组)
1818:[
Cqoi
2010]内部白点TimeLimit: 10Sec MemoryLimit: 64MBSubmit: 719 Solved: 351[Submit][Status][Discuss
M_AXSSI
·
2016-04-13 16:00
【kd-tree】BZOJ4520
CQOI
2016K远点对
传送门平生第一次在bzoj上排到了rank1,截图留恋之所以写这篇博客是因为
CQOI
2016的SB出题人居然让什么三分和卡壳这样A了(其实三分感觉不是很好卡…)然后不想让更多的人继续这么错下去,就写了这篇博客
cqbztsy
·
2016-04-13 13:00
Kd-Tree
CQOI2016
bzoj4520
CQOI
2016 bzoj4519 不同的最小割cuts
今年考的题。考试时候的第一道题。 题目大意是求任意点最小割的不同容量数。 思路很显然,就是先求出任意点最小割,然后将所有容量拿出来排序,去重。 于是关键是任意点最小割。小数据可以来解决。大数据的话显然是一个新算法。我们称之为任意点最小割,Gusfield算法。这类问题的解决依赖于一种叫做Gomory-HuTree的结构。具体实现还是比较简单的,算法思想类似于分治。看看代码吧。
liuyunhui246
·
2016-04-13 12:00
题解
博客
bzoj 4522: [
Cqoi
2016]密钥破解
数论模板大集合 #include #include #include #include #definelllonglong #defineinf1e9 #defineeps1e-8 #definemd usingnamespacestd; llmul(lla,llb,llp) { llans=0; while(b) {
heheda_is_an_OIer
·
2016-04-13 11:00
bzoj 4521: [
Cqoi
2016]手机号码
f[i][j][012][k][s][d]表示前i位,开头为j,(有k-1位相同,是否已经出现3位相同),出现48的状态为s,压位/不压位的方案数由于11位不含前导0,不用写不足len位的dp又写成f[.....][i==a[i]]++应该是f[....][i==a[1]]++ #include #include #include #include #define
heheda_is_an_OIer
·
2016-04-13 10:00
bzoj 4519: [
Cqoi
2016]不同的最小割
读错题了,注意最小割树是针对无向图而言的。然后就是裸题。 #include #include #include #include #include #definelllonglong #defineinf1e9 #defineeps1e-8 #definemd #defineN900 usingnamespacestd; setst; st
heheda_is_an_OIer
·
2016-04-13 10:00
bzoj3507【
CQOI
2014】通配符匹配
3507:[
Cqoi
2014]通配符匹配TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 309 Solved: 129[Submit][Status][Discuss
AaronGZK
·
2016-04-13 00:00
dp
哈希
bzoj
bzoj3507【
CQOI
2014】通配符匹配
3507:[
Cqoi
2014]通配符匹配TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 309 Solved: 129[Submit][Status][Discuss
AaronGZK
·
2016-04-13 00:00
dp
哈希
bzoj
CQOI
2016游记
来一篇CQYZ视角的嘤嘤分析什么的留到最后两周之前开始停的课,成功水掉一次月考加一次运动会加晚自习无数,之前都是晚自习过来水一水,然而并没有水出什么东西HB权衡利弊之后果断放弃了计算几何(FLAG),带领大家专攻高(级)数(据结构)和网络流建模(FLAG*2),大家平时在各班班主任的(唠叨)谆谆教诲下过着又不专心准备竞赛又不专心准备高考的生活。大家一致认为自己复赛发挥不错(FLAG),省选意义不大
qq_34637390
·
2016-04-12 23:00
bzoj 4524 [
Cqoi
2016]伪光滑数
搜索。首先将所有小于128的质数预处理出来,总共31个。设第i个质数为p[i]。用一个结构体{V,a[31]}来表示一个数字V,将它分解后有a[i]个p[i]。然后求出所有p[i]j(i∈[1,31],j⩾1&&p[i]j⩽N),按照上面结构体的方式构造后加入一个以数字大小为关键字的大根堆中。之后重复K−1次操作,每次操作都是取出堆顶,将堆顶元素的某个质因子p[i]变为p[i−1],将数字∗p[i
dropD
·
2016-04-12 23:00
【BZOJ4523】【
CQOI
2016】路由表 Trie
第一眼扫过去是可持久,但是转念一想去年
CQOI
考过这东西果断跳过这题对拍数据之难做hhh这年头输入都不按套路来。。。间接考察了一波输入优化思路比较清晰,插入的地址的有效部分甩进一棵Trie
qq_34637390
·
2016-04-12 23:00
[置顶]
CQOI
2016流水账
由于某些原因(被队长指责说我态度不端正),语文倒数第一的我还是写点流水账吧。。1.考试前两周 莫名其妙停了课,然后莫名其妙就逃了一次月考,本来心中窃喜,然而换来的就是每天上午竞赛考试4个半小时,中午1点前肚皮贴着后肚皮用liuangzhe1999(%%%captain)写的随机程序random一个吃饭的地方吃饭(这是每天唯一的乐趣23333)。下午打瞌睡(好像还在讲上午考的题目??),晚上就
liuyunhui246
·
2016-04-12 22:00
游记
【BZOJ4521】【
CQOI
2016】手机号码 数位DP
所以说
CQOI
板子背少了没人权。。。Day1唯一A了的题目题目非常良心的帮人们略去了前导零的烦恼,给定的范围一定是十一位的整数,但这同时意味着裸对拍真!的!好!慢!
qq_34637390
·
2016-04-12 22:00
bzoj 4523 [
Cqoi
2016]路由表
Trie树的运用。对于A操作,将IP地址转为2进制串后插入Trie树中,在结束节点增加时间标记。对于Q操作,将IP地址转为2进制串后在Trie树中匹配。在匹配过程中,用单调栈维护时间单调递增。栈的大小就是答案。代码:#include #include #include usingnamespacestd; typedeflonglongLL; structTrie{intch[2],ti;}t[3
dropD
·
2016-04-12 22:00
bzoj 4521 [
Cqoi
2016]手机号码
数位DP。设f[pos][p2][p1][con][bj8][bj4]表示第pos位,前两个数为p2,p1,con表示是否已经有三个连续出现的数字,bj8表示8是否已经出现,bj4同理。在这种情况下的方案数。用记忆化搜索比较方便。代码:#include #include usingnamespacestd; typedeflonglongLL; LLa[20],f[20][15][15][2][2
dropD
·
2016-04-12 21:00
bzoj 4522 [
Cqoi
2016]密钥破解
数论模板大综合。用rho算法分解N,找出p,q,算出r=(p-1)(q-1)。然后用拓展欧几里得求解e在模r意义下的逆元d。最后快速幂求出c^dmodN。基本按照题目描述做就好。代码:#include #include #include #include usingnamespacestd; typedeflonglongLL;//longlong LLMulti(LLa,LLb,LLk) {LL
dropD
·
2016-04-12 19:00
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他