做题总结经验(慢慢来总结吧!)

竞赛编程技巧分享

<一>:

今天用骗数据的方法做了多校2的1002 1003感觉很爽,跟rh讨论这个题目时,他给我说了一个做这种大数据的经验YM。

http://acm.hdu.edu.cn/showproblem.php?pid=4311

http://acm.hdu.edu.cn/showproblem.php?pid=4312

(这里给出很多点的操作)

像这种O(n^2)可以解决的问题,但是数据量太大会tle的,我们可以选择小数据用O(m*n)来做,大数据则是枚举左右K个数,k取决于不超时的前提下的最大值了。(值越大对的可能性就越大)。

ps:出题人出卡题的数据大多数会手写,手写的话也只是小数据量,O(m*n)大多数情况下就能过,而大数据则是随机生成了,用K也可能会水过。

 

<二>

昨天做了zoj月赛的一道题目http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3622

题意就是给定正整数y所有x加在其最左边形成z 满足z mod y = 0 给定[m,n]区间求y的个数;

当然条件好找了,一位数满足被10整除的书,二位数满足被100整除的数.......打个表就好了。可是关键在于后边灵活的处理a[0] = 1 a[1] = 2 a[2] = 5 a[3] = 10 a[4] = 20 a[5] = 25

    1,2,5,10,20,25,50,
    100,125,200,250,500,
    1000,1250,2000,2500,5000,
    10000,12500,20000,25000,50000,
    100000,125000,200000,250000,500000,
    1000000,1250000,2000000,2500000,5000000,
    10000000,12500000,20000000,25000000,50000000,
    100000000,125000000,200000000,250000000,500000000,
    1000000000,1250000000,2000000000,2500000000,5000000000

a[6] = 50 [m,n]区间的统计,这里看到一个统计方法很好,记下来:

for(k=i=0;i<nu;i++)//循环dp(存的y)
 if(m<=dp[i]&&n>=dp[i])
            k++;
 printf("%d\n",k);

 

 <三>

[1,n]能被x整出的数有n/x个

 

 

 

转载于:https://www.cnblogs.com/E-star/archive/2012/07/27/2612172.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值