【bzoj1179】Atm
2015-09-09 13:43:43 By zgjkt
【poj2762】Going from u to v or from v to u?
2015-09-06 13:46:16 By zgjkt
题目大意
给一个有n个点m条边的有向图,对于图中任意两个点u,v,如果从u能到v,或者从v能到u,则这对顶点是可行的
如果图中任意一对顶点都是可行的,可以输出Yes,否则输出No
莫比乌斯函数的一些证明
2015-06-19 13:43:46 By zgjkt
【bzoj1101】Zap【bzoj2301】Problem b
2015-06-14 22:16:19 By zgjkt
【bzoj1101】Zap
题目大意
对于给出的n个询问,每次求有多少个数对
满足
数据范围
题解
原题是求
设
则原式=
根据莫比乌斯函数的性质,
因此原式=
容易发现,
所以原式可以再次化简为
由于
【bzoj2301】Problem b
题目大意
对于给出的
满足
数据范围
题解
这道题其实和上题一样,只是要利用容斥原理处理信息
程序
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define For(i,l,r) for(int i=l;i<=r;i++)
#define inf 0x7fffffff
using namespace std;
int sum[50050],mu[50050],prime[50050],flag[50050];
int tot,ans,a,b,c,d,k,t;
inline void getmu(){
mu[1]=1;
For(i,2,50000){
if (!flag[i]) {prime[++tot]=i;mu[i]=-1;}
For(j,1,tot){
if (i*prime[j]>50000) break;
flag[i*prime[j]]=1;
if (i%prime[j]==0) {mu[i*prime[j]]=0;break;}
else mu[i*prime[j]]=-mu[i];
}
}
}
inline int count(int x,int y){
if (x>y) swap(x,y);
int result=0,pos;
for(int i=1;i<=x;i=pos+1){
pos=min(x/(x/i),y/(y/i));
result+=(sum[pos]-sum[i-1])*(x/i)*(y/i);
}
return result;
}
int main(){
getmu();
For(i,1,50000) sum[i]=sum[i-1]+mu[i];
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
a--;c--;a/=k;b/=k;c/=k;d/=k;
ans=count(a,c)+count(b,d)-count(a,d)-count(b,c);
printf("%d\n",ans);
}
return 0;
}
【bzoj1823】满汉全席
2015-06-05 14:03:08 By zgjkt
题目大意
有
然而每个评委有两个要求,做出来的菜必须满足每一个评委至少一个要求
问是否有这样的方案
【bzoj1059】矩阵游戏
2015-06-05 13:37:12 By zgjkt
题目大意
给出一个
现在有两种操作,一种是交换任意两行,一种是交换任意两列
求是否有可能由原图通过操作得到一个左上角与右下角的连线上的点均为黑色的图
【poj3683】Priest John's Busiest Day
2015-06-04 14:11:15 By zgjkt
题目大意
有
问:输出是否可以所有新人的仪式时间不重叠
如果可以满足楼上的条件,还需输出方案
【bzoj1878】HH的项链
2015-06-04 13:53:12 By zgjkt
题目大意
给出
比如在数列
欧拉函数的一些证明
2015-05-21 14:04:56 By zgjkt
【bzoj2007】海拔
2015-05-15 13:42:20 By zgjkt
题目大意
YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为
小Z作为市长统计到了每条道路的人流量
已知起点为右上角,海拔为0,终点为左下角,海拔为1,求最少耗费多少体力值。
顺便给出样例的图
共 62 篇博客