重走长征路---OI每周刷题记录---9月6日 2014

总目录详见https://blog.csdn.net/mrcrack/article/details/84471041

做题原则,找不到测评地址的题不做。2018-11-28

重走长征路---OI每周刷题记录---9月6日  2014

本周共计23题+题

测评地址:

bfs:

1.「bzoj3299」[USACO2011 Open]Corn Maze玉米迷宫

计算几何:

2.「bzoj3707」「FJ2014集训」圈地

map+set+倍增:

3.NOIP2012开车旅行

莫比乌斯反演:

4.「bzoj2301」[HAOI2011]Problem b   //在线测评地址https://www.luogu.org/problemnew/show/P2522

5.「bzoj1101」[POI2007]Zap

dfs:

6.「bzoj1024」生日快乐

数论:

7.「bzoj1257」[CQOI2007]余数之和sum

单调队列:

8.「bzoj1047」[HAOI2007]理想的正方形

贪心:

9.「bzoj1034」[ZJOI2008]泡泡堂BNB

dp:

10.「bzoj1044」[HAOI2008]木棍分割

凸包+旋转卡壳:

11.「poj2187」Beauty Contest 

12.「bzoj1069」[SCOI2007]最大土地面积

K短路:

13.「bzoj1598」[Usaco2008 Mar]牛跑步

set+dfs:

14.「bzoj2783」[JLOI2012]树

二分+光程原理:

15.「bzoj3695」「FJ2014集训」滑行

后缀数组:

16.「JoyOI1860」后缀数组 

17.「bzoj2251」[2010Beijing Wc]外星联络

二分+后缀数组

18.「poj1743」Musical Theme

三分套三分:

19.「bzoj1857」[Scoi2010]传送带

背包dp+高精度:

20.「bzoj1655」[Usaco2006 Jan] Dollar Dayz 奶牛商店

贪心:

21.「NOIP模拟赛」工资

曼哈顿距离:

22.「NOIP模拟赛」藏妹子之处

dfs:

23.「bzoj2719」[Violet 4]银河之星
 

题解:

 

bfs:

1.「bzoj3299」[USACO2011 Open]Corn Maze玉米迷宫

计算几何:

2.「bzoj3707」「FJ2014集训」圈地

map+set+倍增:

3.NOIP2012开车旅行

莫比乌斯反演:

4.「bzoj2301」[HAOI2011]Problem b

//P2522 [HAOI2011]Problem b
//在线测评地址https://www.luogu.org/problemnew/show/P2522  
//题意容易看懂,输出样例结果为3的数据也容易弄懂  
//该题,枚举,能处理的数据量极小,大约100*100*100的数据量了  
//试试看吧,朴素算法能得10分吗。  
//看了数据,没有特判情况出现。  
//数据极端情况50000*50000=2.5*10^9 int溢出,需采用long long  
//样例通过,提交10分,测试点2-10TLE。
//省选就是省选,没給非省选选手一点活路。
//以下为10分代码。2019-2-15 14:51  
//https://wenku.baidu.com/view/fbec9c63ba1aa8114431d9ac.html莫比乌斯反演  
//参看上文时,在d=p1p2...pk,pi为互异素数,卡住了,现解释如下
//f(6)=F(6)-F(3)-F(2)+F(1)  
//d=1,F(6/1)前系数为1  
//d=2,F(6/2)前系数为-1
//d=3,F(6/3)前系数为-1
//d=6=2*3,F(6/6)前系数为(-1)^2=1
//形式一,如下图部分未看懂,搜索网络,觉得都不太好理解

//还是拿出纸笔演算比较靠谱。

以n=4为例,左边为u(1)*(f(1)+f(2)+f(4))+u(2)*(f(1)+f(2))+u(4)*(f(1))=f(1)*(u(1)+u(2)+u(4))+f(2)*(u(1)+u(2))+f(4)*u(1)

右边为f(1)*(u(1)+u(2)+u(4))+f(2)*(u(1)+u(2))+f(4)*(u(1))

读者看到了吗,左边=右边,希望借助上述,帮助读者理解上面的公式。2019-2-17 18:20

//https://blog.csdn.net/outer_form/article/details/50588307证明了 莫比乌斯反演定理形式二
 


//上面这段没看懂。2019-2-17 20:22

想了想,还是拿出纸笔。

t=4,n=2时,上式左边为u(1)*f(4)+u(2)*f(4)=f(4)*(u(1)+u(2))

右边为f(4)*(u(1)+u(2))

读者看到了吗,左边=右边,希望借助上述,帮助读者理解上面的公式.2019-2-17 20:31
//关于上述形式的各种定律,在大学数学哪能学到,望读者提供。
//从题解来说,此文写得很棒https://blog.csdn.net/outer_form/article/details/50590197
//https://www.cnblogs.com/candy99/p/6209502.html此文值得一读。
//被下图中的公式卡了很长时间,在想为什么是 加 而非 乘

//找到此文https://wenku.baidu.com/view/fbe263d384254b35eefd34eb.html疑惑得解

//样例通过,提交0分,测试点1-5,7-8,10WA,测试点6,9TLE.   2019-2-18  21:17
//a--,c--,a/=k,b/=k,c/=k,d/=k;//此处写成a/=k,b/=k,c/=k,d/=k;
//cnt=cal(b,d)-cal(a,d)-cal(b,c)+cal(a,c);//此处写成cnt=cal(b,d)-cal(a-1,d)-cal(b,c-1)+cal(a-1,c-1);//容斥原理
//修改,提交AC.  2019-2-18 21:25  
#include <stdio.h>
#include <string.h>
#define LL long long
#define maxn 50000
int not_prime[maxn+100],prime[maxn+100],mu[maxn+100],sum[maxn+100],tot=0;
void linear_shaker(int x){
    int i,j;
    mu[1]=1,sum[1]=1,sum[0]=0;
    for(i=2;i<=x;i++){
        if(!not_prime[i]) prime[++tot]=i,mu[i]=-1;
        for(j=1;prime[j]*i<=x;j++){
            not_prime[prime[j]*i]=1;
            if(i%prime[j]==0){
                mu[prime[j]*i]=0;
                break;
            }
            mu[prime[j]*i]=-mu[i];
        }
        sum[i]=sum[i-1]+mu[i];
    }
}
int min(int a,int b){
    return a<b?a:b;
}
LL cal(int x,int y){
    LL ans=0,i,last,t;
    t=min(x,y);
    for(i=1;i<=t;i=last+1){
        last=min(x/(x/i),y/(y/i));
        ans+=(sum[last]-sum[i-1])*(x/i)*(y/i);
    }
    return ans;
}
int main(){
    int n,a,b,c,d,k;
    long long cnt;
    linear_shaker(maxn);
    scanf("%d",&n);
    while(n--){
        cnt=0;
        scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
        a--,c--,a/=k,b/=k,c/=k,d/=k;//此处写成a/=k,b/=k,c/=k,d/=k;
        cnt=cal(b,d)-cal(a,d)-cal(b,c)+cal(a,c);//此处写成cnt=cal(b,d)-cal(a-1,d)-cal(b,c-1)+cal(a-1,c-1);//容斥原理
        printf("%lld\n",cnt);
    }
    return 0;
}

//P2522 [HAOI2011]Problem b
//在线测评地址https://www.luogu.org/problemnew/show/P2522 
//题意容易看懂,输出样例结果为3的数据也容易弄懂 
//该题,枚举,能处理的数据量极小,大约100*100*100的数据量了 
//试试看吧,朴素算法能得10分吗。 
//看了数据,没有特判情况出现。 
//数据极端情况50000*50000=2.5*10^9 int溢出,需采用long long 
//样例通过,提交10分,测试点2-10TLE。
//省选就是省选,没給非省选选手一点活路。
//以下为10分代码。2019-2-15 14:51 
#include <stdio.h>
int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}
int main(){
    int n,a,b,c,d,k,x,y;
    long long cnt;
    scanf("%d",&n);
    while(n--){
        cnt=0;
        scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
        for(x=a;x<=b;x++)
            for(y=c;y<=d;y++)
                if(gcd(x,y)==k)cnt++;
        printf("%lld\n",cnt);
    }
    return 0;
}

5.「bzoj1101」[POI2007]Zap

dfs:

6.「bzoj1024」生日快乐

数论:

7.「bzoj1257」[CQOI2007]余数之和sum

单调队列:

8.「bzoj1047」[HAOI2007]理想的正方形

贪心:

9.「bzoj1034」[ZJOI2008]泡泡堂BNB

dp:

10.「bzoj1044」[HAOI2008]木棍分割

凸包+旋转卡壳:

11.「poj2187」Beauty Contest 

12.「bzoj1069」[SCOI2007]最大土地面积

K短路:

13.「bzoj1598」[Usaco2008 Mar]牛跑步

set+dfs:

14.「bzoj2783」[JLOI2012]树

二分+光程原理:

15.「bzoj3695」「FJ2014集训」滑行

后缀数组:

16.「JoyOI1860」后缀数组 

17.「bzoj2251」[2010Beijing Wc]外星联络

二分+后缀数组

18.「poj1743」Musical Theme

三分套三分:

19.「bzoj1857」[Scoi2010]传送带

背包dp+高精度:

20.「bzoj1655」[Usaco2006 Jan] Dollar Dayz 奶牛商店

贪心:

21.「NOIP模拟赛」工资

曼哈顿距离:

22.「NOIP模拟赛」藏妹子之处

dfs:

23.「bzoj2719」[Violet 4]银河之星

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值