一天两场,感觉要完。

不粘排行榜,太壮观了。

#1:190

#2:180

#4:160

#35:150

#37:140

#39:120

#kx:20呃。。。

最后一个是考试结束后了。

又是CE盖40分。其实离#2不远。。。

调试语句没删干净,开O2编译出一条编译错误,没看,以为是那条关于scanf的warning。

然而并不是。

一定要仔细检查编译信息!!!交代码前一定要编译!!!

还有其实T1险些出锅,看错了题。

考试结束前7分钟重新看了一遍发现不对劲,+100pts。

看题!!!

要检查!!!

T1:天空龙

不会讲。写的超麻烦。

 #include<cstdio>
main(){
int t;scanf("%d",&t);
while(t--){
int a,b,c,x,y,z;scanf("%d%d%d%d%d%d",&a,&b,&c,&x,&y,&z);
int det=(x>a)+(y>b)+(z>c);
if(det==){puts("YES");continue;}
if(det==){puts("NO");continue;}
if(det==){
if(a>=x)puts(a-x>>>=y-b+z-c?"YES":"NO");
if(b>=y)puts(b-y>>>=x-a+z-c?"YES":"NO");
if(c>=z)puts(c-z>>>=x-a+y-b?"YES":"NO");
}
if(det==){
if(x>a)puts(x-a<=(b-y>>)+(c-z>>)?"YES":"NO");
if(y>b)puts(y-b<=(a-x>>)+(c-z>>)?"YES":"NO");
if(z>c)puts(z-c<=(a-x>>)+(b-y>>)?"YES":"NO");
}
}
}

T2:巨神兵

数据范围显然状压n,但是状压表示什么?

因为要造DAG,所以一定有拓扑序,就存哪些点已经被拓扑了就行。

但是有的DAG的拓扑序不唯一。要容斥掉。(容斥系数我会证了感谢吧人擦)

枚举补集的子集,枚举子集的高效方法一直不会,上网颓了一个。

for(int st=S;st;(--st)&=S);这样st就会遍历S的所有子集。

这题也严重卡常,不能通过直接枚举n来判断二进制下是否存在这个点,而是要lowbit来直接取出一位。

 #include<cstdio>
#define mod 1000000007
int fir[],l[],to[],cnt,n,m,cr[],sz[],pre[],re[];
long long pw[],dp[];
void link(int a,int b){l[++cnt]=fir[a];fir[a]=cnt;to[cnt]=b;}
main(){//freopen("obelisk8.in","r",stdin);
dp[]=pw[]=;
scanf("%d%d",&n,&m);
for(int i=,x,y;i<=m;++i)scanf("%d%d",&x,&y),link(x,y);
for(int st=;st<<<n;++st)sz[st]=sz[st^st&-st]+;
for(int i=;i<=n;++i)re[<<i-]=i;
for(int i=;i<=;++i)pw[i]=(pw[i-]<<)%mod;
for(int i=;i<=n;++i)for(int j=fir[i];j;j=l[j])pre[i]|=<<to[j]-;
for(int st=;st<<<n;++st)
for(int U=(~st)&(<<n)-,S=U;S;(--S)&=U){
int cnt=;
for(int i=st;i;i^=i&-i)cnt+=sz[S&pre[re[i&-i]]];
(dp[st|S]+=dp[st]*pw[cnt]*(sz[S]&?:-)%mod+mod)%=mod;
}
printf("%lld\n",dp[(<<n)-]);
}

思路积累:

  • DAG-dp:拓扑序的状态压缩
  • 神奇容斥

T3:太阳神

40%的暴力写在黑板上了,其实不M的话是60,附个代码。

 #include<cstdio>
#include<iostream>
using namespace std;
int n,pr[],md[],prcnt;
bool np[];long long Ans=;short ans[],mdcnt[];
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i){
if(!np[i])ans[i]=,pr[++prcnt]=i,mdcnt[i]=,md[i]=i;
for(int j=;j<=prcnt&&i*pr[j]<=n;++j){
int T=i*pr[j];
md[T]=pr[j];np[T]=;
mdcnt[T]=md[i]==pr[j]?mdcnt[i]+:;
ans[T]=ans[i]/(mdcnt[T]*-)*(mdcnt[T]*+);
if(i%pr[j]==)break;
}
}
for(int i=;i<=n;++i)Ans+=ans[i];
printf("%lld\n",(1ll*n*n-Ans)%);
}

另一种40~60的打法是cbx的,在下面说。

第一鸡房的不少都是用反演A的,我太菜我不会。

我跟cbx走的。

疯狂的数论分块就好了。

问题就是怎么求下发题解里的f函数,求出f值后就可以在外层数论分块n/d做了。

观察f数组,把它差分一下得到g,g[k]是什么含义?

是[gcd(a,b)==1]×a×b==k的a,b对数。

考虑含义,既然乘积一定,那么把k分解质因数之后把因子分配给ab就好了。

如果一种因子有多个,那么一定只分给ab里的一个,否则gcd不为1。

那么其实g[k]的值就是2k的质因子种数(不是个数)。可以线筛

然后做一遍前缀和就可以得到f了。

怎么求S函数呢?一个比较直接的数论分块。

然后对于大的f值就可以递归求了。

没有想象的那么难,虽然不是很会证。

 #include<cstdio>
#define int long long
#define mod 1000000007
int pr[],md[],prcnt,f[];
bool np[];int n,Ans;
int S(int k){
int ans=;
for(int i=,lst;i<=k;i=lst+)lst=k/(k/i),(ans+=(lst-i+)%mod*(k/i))%=mod;
return ans;
}
int F(int k){
if(k<=)return f[k];int ans=;
for(int j=;j*j<=k;++j)(ans+=F(k/j/j))%=mod;
return (S(k)-ans+mod)%mod;
}
main(){
scanf("%lld",&n);f[]=;
for(int i=;i<=;++i){
if(!np[i])f[i]=,pr[++prcnt]=i,md[i]=i;
for(int j=;j<=prcnt&&i*pr[j]<=;++j){
int T=i*pr[j];
md[T]=pr[j];np[T]=;
f[T]=(f[i]<<(md[i]!=pr[j]))%mod;
if(i%pr[j]==)break;
}
}
for(int i=;i<=;++i)(f[i]+=f[i-])%=mod;
for(int i=,lst;i<=n;i=lst+)lst=n/(n/i),(Ans+=(lst-i+)%mod*F(n/i)+mod)%=mod;
printf("%lld\n",(n%mod*(n%mod)%mod-Ans+mod)%mod);
}

思路积累:

  • 数论分块:竟然是联赛知识点啊
  • 线筛:肯定是联赛知识点

[考试反思]1002csp-s模拟测试57:平庸的更多相关文章

  1. [考试反思]0718 NOIP模拟测试5

    最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...

  2. csps模拟测试57

    T1 天空龙 大神题,考察多方面知识,例如:快读 附上考试代码,以供后人学习 应某迪要求,我决定多写一点. 正如文化课有知识性失分和非知识性失分一样,OI也同样存在. 但非知识性失分往往比知识性失分更 ...

  3. csp-s模拟测试57(10.2)「天空龙」·「巨神兵」·「太阳神」

    题目是古埃及神话??? A. 天空龙 傻逼模拟,看来没有滑天下之大稽QAQ,也没有打错快读(大雾...) B. 巨神兵 难度爆增,一脸懵比..... 60分状压: 因为是求有向图,关于有向图好像拓扑用 ...

  4. CSP-S 模拟测试57题解

    人生第一次A,B层一块考rank2,虽然说分差没几分,但还是值得纪念. 题解: T1 天空龙: 大神题,因为我从不写快读也没有写考场注释的习惯,所以不会做,全hzoi就kx会做,kx真大神级人物. T ...

  5. [考试反思]0814NOIP模拟测试21

    前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...

  6. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

  7. [考试反思]0909csp-s模拟测试41:反典

    说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...

  8. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  9. [考试反思]0714/0716,NOIP模拟测试3/4

    这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...

随机推荐

  1. Java文件操作——File

    创建File isFile().length().exists().createNewFile(). File.separator / isDirtory(). mkdir().mkdirs(). d ...

  2. ELK 学习笔记之 elasticsearch启动时Warning解决办法

    elasticsearch启动时Warning解决办法: 转载:http://www.dajiangtai.com/community/18136.do?origin=csdn-geek&dt ...

  3. C# WinForm 跨线程访问控件(实用简洁写法)

    C# WinForm 跨线程访问控件(实用简洁写法) 1.<C# WinForm 跨线程访问控件(实用简洁写法)>       2.<基于.NET环境,C#语言 实现 TCP NAT ...

  4. bugku 一个普通的压缩包

    压缩包打不开,用winhex打开压缩包,发现头文件是zip的,将后缀改为zip,成功解压. 打开发现还是个压缩包,而且打不开,提示secret.png损坏,使用winhex打开. 将a8 3c 7a ...

  5. sql server中Set与select的区别

    Set与select的区别 Set select 同时多个变量赋值 不支持 支持 表达式返回多个值时 出错 将返回的最后一个值赋给变量 表达式未返回值 变量被null赋值 变量保持原始值

  6. Mac下载魔兽世界怀旧服客户端 for Mac

    <魔兽世界>怀旧服2019年8月9日凌晨2点开启全球压力测试,并将于8月27日正式开服.<魔兽世界>十五年,青春有它否?不见的战友,难抹的回忆,说不出口的遗憾?来,让我们一起回 ...

  7. Springboot 系列(十四)迅速启用 HTTPS 加密你的网站

    1. 获取 HTTPS 证书 正常情况下 HTTPS 证书需要从证书授权中心获得,这样获得的证书才具有公信力,也会被各种浏览器客户端所认可.常见的证书品牌如 Symantec,GeoTrustm,Tr ...

  8. 后门免杀工具-Backdoor-factory

    水一水最近玩的工具 弄dll注入的时候用到的 介绍这款老工具 免杀效果一般..但是简单实用  目录: 0x01 backdoor-factory简介 0x02 特点功能 0x03 具体参数使用 PS: ...

  9. 基于canvas实现钟表

    原理说明 1.通过arc方法实现钟表外环: 2.通过line实现钟表时针,分针,秒针和刻度标志的绘制,基于save和restore方法旋转画布绘制不同角度的指针: 3.通过font方法实现在画布上绘制 ...

  10. Knative 实战:基于 Kafka 实现消息推送

    作者 | 元毅 阿里云智能事业群高级开发工程师 导读:当前在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何基于 Kafka 实现消息推送呢?本文作者将以阿里云 Kafka 产品为 ...