一天两场,感觉要完。

不粘排行榜,太壮观了。

#1:190

#2:180

#4:160

#35:150

#37:140

#39:120

#kx:20呃。。。

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

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

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

然而并不是。

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

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

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

看题!!!

要检查!!!

T1:天空龙

不会讲。写的超麻烦。

  1. #include<cstdio>
  2. main(){
  3. int t;scanf("%d",&t);
  4. while(t--){
  5. int a,b,c,x,y,z;scanf("%d%d%d%d%d%d",&a,&b,&c,&x,&y,&z);
  6. int det=(x>a)+(y>b)+(z>c);
  7. if(det==){puts("YES");continue;}
  8. if(det==){puts("NO");continue;}
  9. if(det==){
  10. if(a>=x)puts(a-x>>>=y-b+z-c?"YES":"NO");
  11. if(b>=y)puts(b-y>>>=x-a+z-c?"YES":"NO");
  12. if(c>=z)puts(c-z>>>=x-a+y-b?"YES":"NO");
  13. }
  14. if(det==){
  15. if(x>a)puts(x-a<=(b-y>>)+(c-z>>)?"YES":"NO");
  16. if(y>b)puts(y-b<=(a-x>>)+(c-z>>)?"YES":"NO");
  17. if(z>c)puts(z-c<=(a-x>>)+(b-y>>)?"YES":"NO");
  18. }
  19. }
  20. }

T2:巨神兵

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

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

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

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

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

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

  1. #include<cstdio>
  2. #define mod 1000000007
  3. int fir[],l[],to[],cnt,n,m,cr[],sz[],pre[],re[];
  4. long long pw[],dp[];
  5. void link(int a,int b){l[++cnt]=fir[a];fir[a]=cnt;to[cnt]=b;}
  6. main(){//freopen("obelisk8.in","r",stdin);
  7. dp[]=pw[]=;
  8. scanf("%d%d",&n,&m);
  9. for(int i=,x,y;i<=m;++i)scanf("%d%d",&x,&y),link(x,y);
  10. for(int st=;st<<<n;++st)sz[st]=sz[st^st&-st]+;
  11. for(int i=;i<=n;++i)re[<<i-]=i;
  12. for(int i=;i<=;++i)pw[i]=(pw[i-]<<)%mod;
  13. for(int i=;i<=n;++i)for(int j=fir[i];j;j=l[j])pre[i]|=<<to[j]-;
  14. for(int st=;st<<<n;++st)
  15. for(int U=(~st)&(<<n)-,S=U;S;(--S)&=U){
  16. int cnt=;
  17. for(int i=st;i;i^=i&-i)cnt+=sz[S&pre[re[i&-i]]];
  18. (dp[st|S]+=dp[st]*pw[cnt]*(sz[S]&?:-)%mod+mod)%=mod;
  19. }
  20. printf("%lld\n",dp[(<<n)-]);
  21. }

思路积累:

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

T3:太阳神

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

  1. #include<cstdio>
  2. #include<iostream>
  3. using namespace std;
  4. int n,pr[],md[],prcnt;
  5. bool np[];long long Ans=;short ans[],mdcnt[];
  6. int main(){
  7. scanf("%d",&n);
  8. for(int i=;i<=n;++i){
  9. if(!np[i])ans[i]=,pr[++prcnt]=i,mdcnt[i]=,md[i]=i;
  10. for(int j=;j<=prcnt&&i*pr[j]<=n;++j){
  11. int T=i*pr[j];
  12. md[T]=pr[j];np[T]=;
  13. mdcnt[T]=md[i]==pr[j]?mdcnt[i]+:;
  14. ans[T]=ans[i]/(mdcnt[T]*-)*(mdcnt[T]*+);
  15. if(i%pr[j]==)break;
  16. }
  17. }
  18. for(int i=;i<=n;++i)Ans+=ans[i];
  19. printf("%lld\n",(1ll*n*n-Ans)%);
  20. }

另一种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值就可以递归求了。

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

  1. #include<cstdio>
  2. #define int long long
  3. #define mod 1000000007
  4. int pr[],md[],prcnt,f[];
  5. bool np[];int n,Ans;
  6. int S(int k){
  7. int ans=;
  8. for(int i=,lst;i<=k;i=lst+)lst=k/(k/i),(ans+=(lst-i+)%mod*(k/i))%=mod;
  9. return ans;
  10. }
  11. int F(int k){
  12. if(k<=)return f[k];int ans=;
  13. for(int j=;j*j<=k;++j)(ans+=F(k/j/j))%=mod;
  14. return (S(k)-ans+mod)%mod;
  15. }
  16. main(){
  17. scanf("%lld",&n);f[]=;
  18. for(int i=;i<=;++i){
  19. if(!np[i])f[i]=,pr[++prcnt]=i,md[i]=i;
  20. for(int j=;j<=prcnt&&i*pr[j]<=;++j){
  21. int T=i*pr[j];
  22. md[T]=pr[j];np[T]=;
  23. f[T]=(f[i]<<(md[i]!=pr[j]))%mod;
  24. if(i%pr[j]==)break;
  25. }
  26. }
  27. for(int i=;i<=;++i)(f[i]+=f[i-])%=mod;
  28. for(int i=,lst;i<=n;i=lst+)lst=n/(n/i),(Ans+=(lst-i+)%mod*F(n/i)+mod)%=mod;
  29. printf("%lld\n",(n%mod*(n%mod)%mod-Ans+mod)%mod);
  30. }

思路积累:

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

[考试反思]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 学习笔记之 线程interrupted方法

    线程interrupted方法: interrupted()是Thread类的方法,用来测试当前线程是否已经中断. public class InterruptThread extends Threa ...

  2. sbt 学习笔记(1)sbt安装和交互式界面使用

    下载sbt: http://www.scala-sbt.org/download.html 解压zip文件F:\sbt-0.13.15 配置环境变量 如果需要可以修改F:\sbt-0.13.15\sb ...

  3. c#关于JWT跨域身份验证解决方案

    学习程序,不是记代码,而是学习一种思想,以及对代码的理解和思考. JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.为了网络应用环境间传递声明而执行的一种基于JSON的开发标准 ...

  4. python编程基础之三

    变量 变量定义:变量名 = 值  #不需要给定变量类型 变量命名规范:也就是标识符的命名规则, 1.由数字,字母,下划线组成,不允许数字开头 2.区分大小写 3.不能是系统保留字(keyword) 获 ...

  5. MFC下使用Mysql

    MFC工程需要使用Mysql数据库中遇到的问题记录下. 1.首先去官网下载下Mysql安装包,安装下Mysql. 我在这边下载的是mysql-installer-community-5.7.16.0. ...

  6. 使用物理机安装Linux

    现在Linux用的越来越多.之前的使用,要么是云服务器自带的centos 系统环境,只要购买了服务器就可以选择自己想要的系统环境.要么是在Windows中安装虚拟机.    今天,我正式使用公司里闲置 ...

  7. Roadmap of FE

    未完待补充......

  8. 《深入理解Java虚拟机》-----第13章 线程安全与锁优化

    概述 在软件业发展的初期,程序编写都是以算法为核心的,程序员会把数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体,程序代码则用于处理这些数据,这种思维方式直接站在计算机的角度去抽象问题和解 ...

  9. vi/vim编辑器使用方法详解

    vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对Unix及li ...

  10. Python:的web爬虫实现及原理(BeautifulSoup工具)

    最近一直在学习python,学习完了基本语法就练习了一个爬虫demo,下面总结下. 主要逻辑是 1)初始化url管理器,也就是将rooturl加入到url管理器中 2)在url管理器中得到新的new_ ...