第五场,再挂分就没了。。

然后就没了。。

考场上一直想方法。

似乎想到了 \(T1\) 正解。

然而几个 \(k\) 的调试信息都让我迷失了自我。

然后有几句啥都没用的语句加在了上面。。

挂分。。。

然后就没有什么时间检查爆搜。

之后打的垃圾爆搜一共只有 \(20pts\)

最后一题不开 \(long\;long\) 爆炸成一分也是我没有想到的。。。

部分分数明明很多,但是却拿不到。

没有什么形容词了。

粗心,鲁莽,菜

T1:

设计方程进行转移。

先转移概率。

再统计个数。

(懒得打$ \(LaTeX\) 了,粘个图片)

看算法 \(4\) 就行了。

  1. #include<bits/stdc++.h>
  2. using std::cout; using std::endl;
  3. #define debug cout<<"debug"<<endl
  4. #define int long long
  5. namespace xin_io
  6. {
  7. #define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
  8. #define scanf eat1 = scanf
  9. #define freopen eat2 = freopen
  10. int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
  11. inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
  12. template<class type>inline type get()
  13. {
  14. type s = 0,f = 1; register char ch = gc();
  15. while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
  16. while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
  17. return s * f;
  18. }
  19. }
  20. using namespace xin_io; static const int maxn = 1e3+10,inf = 1e9+1;
  21. #define try(i,a,b) for(register signed i=a;i<=b;++i)
  22. #define throw(i,a,b) for(register signed i=a;i>=b;--i)
  23. namespace xin
  24. {
  25. int n,mod;
  26. int f1[maxn][maxn],f2[maxn][maxn],f3[maxn][maxn],f4[maxn][maxn];
  27. int ksm(int x,int y = mod - 2)
  28. {
  29. register int ret = 1;
  30. while(y)
  31. {
  32. if(y & 1) ret = ret * x % mod;
  33. x = x * x % mod; y >>= 1;
  34. }
  35. return ret % mod;
  36. }
  37. int dfs(int i,int j)
  38. {
  39. if(f1[i][j]) return f1[i][j];
  40. f1[i][j] = (dfs(i-1,j-1) * (j - 1) % mod + f1[i-1][j] * (i - j) % mod) % mod;
  41. return f1[i][j];
  42. }
  43. int dfs2(int i,int j)
  44. {
  45. if(f2[i][j]) return f2[i][j];
  46. // try(i,1,n) f[i][j] = f3[i - 1][j] % mod * f1[i][j] % mod;
  47. return f2[i][j];
  48. }
  49. int ans = 0;
  50. inline short main()
  51. {
  52. #ifndef ONLINE_JUDGE
  53. openfile();
  54. #endif
  55. n = get<int>(); mod = get<int>();
  56. f1[1][1] = f2[1][0] = 1; try(i,0,n) f3[0][i] = 1;
  57. // dfs(n);
  58. try(i,2,n) try(j,1,i)
  59. f1[i][j] = (f1[i-1][j-1] * (j-1) % mod + f1[i-1][j] * (i - j) % mod) * ksm(i) % mod;//,cout<<"i = "<<i<<" j = "<<j<<" dp[i][j] = "<<dp[i][j]<<endl;
  60. // try(i,2,n) try(j,1,i)
  61. // cout<<"i = "<<i<<" j = "<<j<<" f1[i][j] = "<<f1[i][j]<<endl;
  62. try(i,1,n)
  63. try(j,0,n)
  64. {
  65. if(j) f2[i][j] = f3[i-1][j-1] % mod;
  66. // cout<<"i = "<<i<<" j = "<<j<<" f[i][j] = "<<f[i][j]<<endl;
  67. try(k,1,i) f3[i][j] += f2[k][j] * f3[i - k][j] % mod * f1[i][k] % mod,f3[i][j] %= mod;//;cout<<"i = "<<i<<" k = "<<k<<" f1[i][k] = "<<f1[i][k]<<endl;
  68. }
  69. // try(i,1,n) try(j,0,n) cout<<"i = "<<i<<" j = "<<j<<" f3[i][j] = "<<f3[i][j]<<endl;
  70. try(i,1,n)
  71. ans = (ans + (f2[n][i] - f2[n][i-1] + mod) % mod * i % mod ) % mod;
  72. // try(i,1,n) cout<<"f2[n][i] = "<<f2[n][i]<<" f2[n][i-1] = "<<f2[n][i-1]<<endl;
  73. // cout<<ans * ksm(n) % mod<<endl;
  74. cout<<ans % mod<<endl;
  75. return 0;
  76. }
  77. }
  78. signed main(){return xin::main();}

T2:

首先考虑搜索。

这个题目很良心,搜索给了好多分数。

但是我们并不能无脑爆搜。

我们可以开始枚举每一个状态。

然后开始检查这个状态的正确性。

如果正确 ans++

最后就是答案

然后还有一个很大很大的坑点。

就是我们在发现 \(c=0\) 的点的时候,他整整给了 \(12pts\)

如果直接输出 \(1\),那么这 \(12pts\) 不就直接拿到了吗?

然而并不是这样,题目当中说从 1 点开始出发,但是如果从 1 点出发没有路径该怎么办呢?

所以还要特判这种 毒瘤 的情况。

然后才能拿到这个 \(12pts\)

\(72pts\;code\)

  1. #include<bits/stdc++.h>
  2. using std::cout; using std::endl;
  3. #define debug cout<<"debug"<<endl
  4. namespace xin_io
  5. {
  6. #define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
  7. #define scanf eat1 = scanf
  8. #define freopen eat2 = freopen
  9. int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
  10. inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
  11. template<class type>inline type get()
  12. {
  13. type s = 0,f = 1; register char ch = gc();
  14. while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
  15. while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
  16. return s * f;
  17. }
  18. }
  19. using namespace xin_io; static const int maxn = 1e6+10,inf = 0x3f3f3f3f;
  20. #define try(i,a,b) for(register signed i=a;i<=b;++i)
  21. #define throw(i,a,b) for(register signed i=a;i>=b;--i)
  22. typedef long long ll;
  23. namespace xin
  24. {
  25. class xin_edge{public:int next,ver,w;}edge[maxn];
  26. int head[maxn],zhi = 0;
  27. inline void add(int x,int y,int z) {edge[++zhi].ver = y ; edge[zhi].w = z; edge[zhi].next = head[x]; head[x] = zhi;}
  28. int n,m,d,ans = 0;
  29. bool vis[(1 << 20)+1];
  30. bool sp1 = 1;
  31. bool ok = 0;
  32. void dfs(int x,int ms,int st,int num)
  33. {
  34. if(ok) return ;
  35. if(num == ms)
  36. {
  37. ok = 1;
  38. return ;
  39. }
  40. for(register int i=head[x];i;i=edge[i].next)
  41. {
  42. register int y = edge[i].ver,z = edge[i].w;
  43. if((((st >> num ) & 1)) == z) dfs(y,ms,st,num+1);
  44. }
  45. }
  46. inline short main()
  47. {
  48. #ifndef ONLINE_JUDGE
  49. openfile();
  50. #endif
  51. n = get<signed>(); m = get<signed>(); d = get<signed>();
  52. try(i,1,m)
  53. {
  54. register int x = get<signed>(),y = get<signed>(),z = get<signed>();
  55. add(x,y,z); add(y,x,z);
  56. if(z) sp1 = 0;
  57. }
  58. if(sp1)
  59. {
  60. bool ok = 0;
  61. try(i,1,zhi) if(edge[i].ver == 1) ok = 1;
  62. cout<<ok<<endl;
  63. return 0;
  64. }
  65. try(st,0,(1<<d)-1)
  66. {
  67. ok = 0;
  68. dfs(1,d,st,0);
  69. ans += ok;
  70. }
  71. cout<<ans<<endl;
  72. return 0;
  73. }
  74. }
  75. signed main() {return xin::main();}

然后正解也是考虑状态压缩。

之后线性递推出解。。

  1. #include<bits/stdc++.h>
  2. using std::cout; using std::endl;
  3. #define debug cout<<"debug"<<endl
  4. namespace xin_io
  5. {
  6. #define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
  7. #define scanf eat1 = scanf
  8. #define freopen eat2 = freopen
  9. int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
  10. inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
  11. template<class type>inline type get()
  12. {
  13. type s = 0,f = 1; register char ch = gc();
  14. while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
  15. while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
  16. return s * f;
  17. }
  18. }
  19. using namespace xin_io; static const int maxn = 110,inf = 0x3f3f3f3f,maxst = (1 << 13) + 1;
  20. #define try(i,a,b) for(register signed i=a;i<=b;++i)
  21. #define throw(i,a,b) for(register signed i=a;i>=b;--i)
  22. typedef long long ll;
  23. namespace xin
  24. {
  25. std::bitset<maxn>a[maxn],b[maxn],f1[maxst],f2[maxst];
  26. int n,m,d,ans = 0;
  27. inline short main()
  28. {
  29. #ifndef ONLINE_JUDGE
  30. openfile();
  31. #endif
  32. n = get<signed>(); m = get<signed>(); d = get<signed>();
  33. try(i,1,m)
  34. {
  35. register int x = get<signed>(),y = get<signed>(),z = get<signed>();
  36. z ? a[x][y] = a[y][x] = true : b[x][y] = b[y][x] = true;
  37. }
  38. int d1 = d - (d >> 1),d2 = d - d1;
  39. throw(u,n,1)
  40. {
  41. try(i,0,maxst-1) f1[i] = 0;
  42. f1[1][u] = 1;
  43. try(x,1,(1 << d1)-1) try(y,1,n)
  44. if(f1[x][y])
  45. f1[x << 1] |= a[y],f1[x << 1 | 1] |= b[y];
  46. try(x,0,(1 << d1) - 1)
  47. f2[x][u] = f1[1 << d1 | x].any();
  48. }
  49. try(i,0,(1 << d1)-1)try(j,0,(1 << d2) - 1)
  50. if((f1[1<<d2|j] & f2[i]).any())
  51. ++ans;
  52. cout<<ans<<endl;
  53. return 0;
  54. }
  55. }
  56. signed main() {return xin::main();}

T3:

这真是一道毒瘤题目。

到现在没有一人改出。。。

正解是一堆 \(STL\)

然而并不会。。。

贡献一个 \(45pts\) 做法

我们在观察每一个 单调子区间 的时候,只有他的两个端点是有效的。

所以不是端点的删去就行了。

然后愉快\(45pts\)

\(%45\;code\)

  1. #include<bits/stdc++.h>
  2. using std::cout; using std::endl;
  3. #define debug cout<<"debug"<<endl
  4. //#define int long long
  5. namespace xin_io
  6. {
  7. #define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
  8. #define scanf eat1 = scanf
  9. #define freopen eat2 = freopen
  10. int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
  11. inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
  12. template<class type>inline type get()
  13. {
  14. type s = 0,f = 1; register char ch = gc();
  15. while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
  16. while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
  17. return s * f;
  18. }
  19. }
  20. using namespace xin_io; static const int maxn = 1e6+10,inf = 1e9+1;
  21. #define try(i,a,b) for(register signed i=a;i<=b;++i)
  22. #define throw(i,a,b) for(register signed i=a;i>=b;--i)
  23. typedef long long ll;
  24. namespace xin
  25. {
  26. int x[maxn],zhi = 0,q[maxn];
  27. int n,qnum,minn = inf,maxx = -inf;
  28. bool sp1 = 1;
  29. inline ll work1(int len)
  30. {
  31. register ll l = 0,r = l + len;ll res = 0;
  32. try(i,1,zhi)
  33. {
  34. // cout<<"x[i] = "<<x[i]<<" l = "<<l<<" r = "<<r<<endl;
  35. if(x[i] > r)
  36. {
  37. res += x[i] - r;
  38. r = x[i];
  39. l = r - len;
  40. }
  41. if(x[i] < l)
  42. {
  43. res += l - x[i];
  44. l = x[i];
  45. r = l + len;
  46. }
  47. }
  48. return res;
  49. }
  50. inline ll work2(int len)
  51. {
  52. register ll l = 0,r = l + len,res = 0;
  53. try(i,1,n)
  54. {
  55. if(q[i] > r)
  56. {
  57. res += q[i] - r;
  58. r = q[i];
  59. l = r - len;
  60. }
  61. if(q[i] < l)
  62. {
  63. res += l - q[i];
  64. l = q[i];
  65. r = l + len;
  66. }
  67. }
  68. return res;
  69. }
  70. bool sp2 = 1;
  71. inline short main()
  72. {
  73. #ifndef ONLINE_JUDGE
  74. openfile();
  75. #endif
  76. n = get<signed>(); qnum = get<signed>();
  77. try(i,1,n) q[i] = get<ll>();
  78. x[++zhi] = q[1];
  79. try(i,2,n-1)
  80. {
  81. if(q[i] >= q[i-1] and q[i] <= q[i+1]) continue;
  82. if(q[i] <= q[i-1] and q[i] >= q[i+1]) continue;
  83. x[++zhi] = q[i];
  84. }
  85. x[++zhi] = q[n];
  86. try(i,1,qnum)
  87. {
  88. register int len = get<signed>();
  89. if(n > 1000)printf("%lld\n",work1(len));
  90. else printf("%lld\n",work2(len));
  91. }
  92. return 0;
  93. }
  94. }
  95. signed main() {return xin::main();}

[考试总结]noip模拟20的更多相关文章

  1. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  2. 5.23考试总结(NOIP模拟2)

    5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...

  3. 5.22考试总结(NOIP模拟1)

    5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...

  4. [考试总结]noip模拟23

    因为考试过多,所以学校的博客就暂时咕掉了,放到家里来写 不过话说,vscode的markdown编辑器还是真的很好用 先把 \(noip\) 模拟 \(23\) 的总结写了吧.. 俗话说:" ...

  5. 2021.9.17考试总结[NOIP模拟55]

    有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...

  6. 2021.9.20考试总结[NOIP模拟57]

    (换个编辑器代码就SB地不自动折叠了.. T1 2A 考察快读的写法. $code:$ T1 #include<bits/stdc++.h> #define scanf SCANF=sca ...

  7. 6.11考试总结(NOIP模拟7)

    背景 时间分配与得分成反比,T1 20min 73pts,T2 1h 30pts,T3 2h 15pts(没有更新tot值,本来应该是40pts的,算是本次考试中最遗憾的地方了吧),改起来就是T3比较 ...

  8. [考试反思]NOIP模拟测试19:洗礼

    []260 []230[]210 []200[8]170[9]160 这套题一般,数据很弱,T1T2暴力都能A,而且都是一些思维题,想不到就爆0. 原因不明,很多一直很强的人在这一次滑铁卢了,于是我个 ...

  9. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

随机推荐

  1. 番外篇:搭建Windows环境下的RabbitMQ环境

    搭建Windows环境下的Rabbitmq环境 下载erlang语言包OTP.官网地址: https://www.erlang.org/downloads 如果下载不了,可以选择百度网盘下载,里面的版 ...

  2. 性能工具之Jmeter小白入门系列之一

    一.简单了解 Apache JMeter The Apache JMeter application is open source software, a 100% pure Java applica ...

  3. 「模拟8.23」阴阳 DP

    对于此题的性质我们考虑DP 分四种情况 黑色块在右侧单调降,单调升 还有在左侧 另外我们这样可能会记重,所以还要将重复记过的也就是边界线是横的和竖的 然后还要将全白全黑加上 1 #include< ...

  4. Linux分区,格式化概念理解

    一.分区概念: 逻辑上分成不同的存储空间. 分区类型: 主分区:最多只能有4个 扩展分区:最多只能有1个. 主分区加扩展分区最多有4个. 布恩那个写入数据,只能包含逻辑分区 逻辑分区: 主分区为什么只 ...

  5. Maven的详细下载、安装及配置(亲测)

    一.下载 官网下载地址:https://maven.apache.org/download.cgi 选择安装包进行下载,如图: 下载后,对压缩包进行解压 二.安装 确认电脑已安装好JDK 2.配置环境 ...

  6. Redmine部署中遇到的问题

    Redmine部署文章: 第一篇:Redmine部署 第二篇:Redmine部署中遇到的问题 上一篇文章我写了Redmine怎样部署(点这里直达上一篇文章),这一篇就写一下在Redmine部署中遇到过 ...

  7. Go语言中slice作为参数传递时遇到的一些“坑”

    前言 相信看到这个题目,可能大家都觉得是一个老生常谈的月经topic了.一直以来其实把握一个"值传递"基本上就能理解各种情况了,不过最近遇到了更深一点的"小坑" ...

  8. 8、ITSM基本概念(1)

    ITSM即是信息技术服务管理: 8.1.什么是服务: 8.2.RACI模型: 谁负责(R =n Resposible),即负责执行任务的角色,他/她具体负责操控项目.解决问题. 谁批准(A = Acc ...

  9. FlowNet:simple / correlation 与 相关联操作

    Flow Net : simple / correlation 与 相关联操作 ​ 上一篇文章中(还没来得及写),已经简单的讲解了光流是什么以及光流是如何求得的.同时介绍了几个光流领域的经典传统算法. ...

  10. Tomcat:Tomcat优化(内存,并发,缓存,安全,网络,系统等)详解

    一.Tomcat的安全配置 1.当Tomcat完成安装后首先要做的事情如下:首次安装完成后立即删除webapps下面的所有代码 rm -rf /srv/apache-tomcat/webapps/* ...