今天上午上课的时候有点头疼 所以没认真想题 之后下午家里又来客人。
效率极其低下的一天。
车站分级 NOIp普及组2013 T4
吐槽一句这题是昨天就知道正解的但是今天早上才ac
就是个简单的拓扑排序 没有经过的点向区间中经过的点连边就好了(画一下图就可以明白)
但是 我昨天智障到把AddEdge写错 之后还没有a是因为边表数组应该开到maxn*maxn (就这么神奇) 再之后是开始建边的时候一个小优化卡了10分
关押罪犯 NOIp提高组2010 T3
这是当年提高组只有四道题的时候的T3
就是个并查集 只需要记住敌人的敌人就是朋友就好(就是敌人的敌人和你必须在一个牢房里面)之后再随便搞搞然后输出 敌人数组e初始化为-1
斐波那契公约数
这道题的关键在于那个重要的结论 代码本身超级短
就是把第m第n项的最大公约数转化为序号的最大公约数
#include<iostream>
#include<cstdio>
using namespace std;
int gcd(int a,int b)
{
if(!b) return a;
else return gcd(b,a%b);
}
int n,m;
int f[100000007];
int main()
{
scanf("%d%d",&n,&m);
int p=gcd(n,m);
f[1]=1;
f[2]=1;
for(int i=3;i<=p;i++)
{
f[i]=(f[i-1]+f[i-2])%100000000;
}
printf("%d\n",f[p]);
return 0;
}
(本来我差点要玩到睡觉 被小姐姐问这道题怎么回事就饿着肚子给她做题 看来小姐姐果然可以帮助学习呀 大雾)
小Z的袜子 bzoj2038
这道题我其实没搞懂 只是抄了黄学长的代码 明天一定一定要去搞懂分块这个奇怪的东西。
反正这题是莫队模版题。就是分块之后再排个序然后搞一搞就好了。
余数求和 CQOI2007
这道题也是分块 可以导出一个奇怪的式子然后发现那个值只有根号k种取值范围
但是我其实也没有懂 /手动滑稽 明天把这些话都删掉好啦
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int main()
{
long long n,k;
scanf("%lld%lld",&n,&k);
long long ans=n*k;
for(long long l=1,r;l<=min(n,k);l=r+1)
{
if(k/l!=0) r=min(k/(k/l),n);
else r=n;
ans-=(k/l)*(r-l+1)*(l+r)/2;
}
printf("%lld",ans);
return 0;
}
明天的目标是A掉雅加达的摩天楼和剩余的普及组T4
洛谷R4 估计是药丸