总目录详见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]银河之星