总结

初一第一

一般,最后一题没打好

不难发现,教练出水了,可能是信心赛

A.不幸的7



暴力,没有逻辑可言

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,ans,t,k;
  4. bool pd(int x)
  5. {
  6. while(x)
  7. {
  8. if(x%10==7)return false;
  9. x/=10;
  10. }
  11. return true;
  12. }
  13. int main()
  14. {
  15. cin>>n;
  16. for(int i=1;i<=n;i++)
  17. {
  18. k=i,t=0;
  19. while(k)
  20. {
  21. t*=10;
  22. t+=k%8;
  23. k/=8;
  24. }
  25. if(pd(i)&&pd(t))ans++;
  26. }
  27. cout<<ans;
  28. }
一些没用的感想

不难发现可以优化,完全不需要存下八进制

本题考察进制转换,不AC就该反思

B.选举



简单的贪心,思路很水,五分钟想出来

先固定A,问题变成让B追上A

A和B的初始的距离是什么?

\[sumA=\sum_{i=1}^{n}a_i
\]

如果B什么都不做,A可以获得所有A支持者的选票

那一个城市能缩小多少距离呢

\[w_i=b_i+2a_i
\]

首先,去一个城市,B的支持者和A的支持者都支持B,就是\(b_i+a_i\),

A少了\(a_i\)个支持者,也加上去,就这样

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct node
  4. {
  5. long long a,b;
  6. }a[1000005];
  7. long long n,suma,k;
  8. bool cmp(node x,node y)
  9. {
  10. return x.a*2+x.b>y.a*2+y.b;
  11. }
  12. int main()
  13. {
  14. cin>>n;
  15. for(int i=1;i<=n;i++)
  16. {
  17. scanf("%lld%lld",&a[i].a,&a[i].b);
  18. suma+=a[i].a;
  19. }
  20. sort(a+1,a+n+1,cmp);
  21. while(suma>=0)
  22. {
  23. k++;
  24. suma-=a[k].a*2+a[k].b;
  25. }
  26. cout<<k;
  27. }
关于真实的题目
其实没什么
真的

long long!,scanf!

C. 差的绝对值之和



这道题水炸了,好好想,很有意思,不要直接看题解!

题解

先排序,按绝对值的性质,从大边累加边算,看看代码吧

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. long long n, a[1000005], sum, ans;
  4. int main() {
  5. cin >> n;
  6. for (int i = 1; i <= n; i++) {
  7. cin >> a[i];
  8. }
  9. sort(a + 1, a + n + 1);
  10. sum = a[n];
  11. for (int i = n - 1; i >= 1; i--) {
  12. ans += sum - a[i] * (n - i);
  13. sum += a[i];
  14. }
  15. cout << ans;
  16. }

有一个易错点,ans += sum - a[i] * (n - i);不要打成ans += sum - a[i] ;

这个数要和前面所有数计算

D. 路径通过





整体操作,先明确父子关系,然后对于每个操作,理解为对整个树和子树的操作,

最后的dfs统计即可


  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct node
  4. {
  5. int t,next;
  6. }a[500005];
  7. long long n,m,x,y,z,tot,h[500005],fa[500005],s[500005],t[500005],w[500005],ans[500005];
  8. void add(int x,int y)
  9. {
  10. tot++;
  11. a[tot].t=y;
  12. a[tot].next=h[x];
  13. h[x]=tot;
  14. }
  15. void dfa(int x,int f)
  16. {
  17. for(int i=h[x];i;i=a[i].next)
  18. {
  19. if(a[i].t!=f)
  20. {
  21. fa[a[i].t]=x;
  22. dfa(a[i].t,x);
  23. }
  24. }
  25. }
  26. void dfs(int x,int f)
  27. {
  28. ans[x]=ans[f]+w[x];
  29. for(int i=h[x];i;i=a[i].next)
  30. {
  31. if(a[i].t!=f)
  32. {
  33. dfs(a[i].t,x);
  34. }
  35. }
  36. }
  37. int main()
  38. {
  39. cin>>n;
  40. for(int i=1;i<=n-1;i++)
  41. {
  42. cin>>x>>y;
  43. add(x,y);
  44. add(y,x);
  45. s[i]=x;
  46. t[i]=y;
  47. }
  48. dfa(1,0);
  49. cin>>m;
  50. for(int i=1;i<=m;i++)
  51. {
  52. cin>>x>>y>>z;
  53. if(x==1)
  54. {
  55. if(fa[t[y]]==s[y])
  56. {
  57. w[1]+=z;
  58. w[t[y]]-=z;
  59. }
  60. else
  61. {
  62. w[s[y]]+=z;
  63. }
  64. }
  65. else
  66. {
  67. if(fa[t[y]]==s[y])
  68. {
  69. w[t[y]]+=z;
  70. }
  71. else
  72. {
  73. w[1]+=z;
  74. w[s[y]]-=z;
  75. }
  76. }
  77. }
  78. dfs(1,0);
  79. for(int i=1;i<=n;i++)
  80. {
  81. cout<<ans[i]<<endl;
  82. }
  83. }
另一种做法
  1. dfs序,变成一个数组,然后树状数组整体操作

#E. 龙椅

这就是个Exgcd,我打出来真是万幸,就是找正整数解那段忘了,自己的又臭又长

\[ s+1+xk \equiv 1(mod\ n)
\]

x为题目所求

化简得

\[xk-yn=-s
\]

求即可


  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long t,a,b,c,x,y,gcd;
  4. void exgcd(long long a,long long b,long long &x,long long &y)
  5. {
  6. if(!b)
  7. {
  8. // cout<<a<<' '<<b<<endl;
  9. gcd=a;
  10. x=1;
  11. y=0;
  12. return;
  13. }
  14. exgcd(b,a%b,y,x);
  15. //cout<<a<<' '<<b<<' '<<x<<' '<<y<<endl;
  16. y-=((a/b)*x);
  17. }
  18. int main()
  19. {
  20. cin>>t;
  21. for(int i=1;i<=t;i++)
  22. {
  23. cin>>b>>c>>a;
  24. x=0,y=0;
  25. exgcd(a,-b,x,y);
  26. if((-c)%gcd!=0)
  27. {
  28. cout<<-1<<endl;
  29. continue;
  30. }
  31. x*=-c/gcd;
  32. y*=-c/gcd;
  33. if((a*-b)/gcd>0)
  34. {
  35. y-=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
  36. x%=(a*-b)/gcd/a;
  37. while(x<0)
  38. {
  39. x+=(a*-b)/gcd/a;
  40. y-=(a*-b)/gcd/b;
  41. }
  42. y+=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
  43. x%=(a*-b)/gcd/a;
  44. while(x-((a*-b)/gcd)/a>=0)
  45. {
  46. x-=(a*-b)/gcd/a;
  47. y+=(a*-b)/gcd/b;
  48. }
  49. }
  50. else
  51. {
  52. y+=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
  53. x%=(a*-b)/gcd/a;
  54. while(x<0)
  55. {
  56. x-=(a*-b)/gcd/a;
  57. y+=(a*-b)/gcd/b;
  58. }
  59. y-=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
  60. x%=(a*-b)/gcd/a;
  61. while(x+((a*-b)/gcd)/a>=0)
  62. {
  63. x+=(a*-b)/gcd/a;
  64. y-=(a*-b)/gcd/b;
  65. }
  66. }
  67. cout<<x<<endl;
  68. }
  69. }

第六题待做

20220303模拟赛题解and总结的更多相关文章

  1. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  2. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  3. DYOJ 【20220303模拟赛】最少分组 题解

    最少分组 题意 \(n\) 个点 \(m\) 条边的无向图,可以删掉 0 条或多条边,求满足条件的最小连通块数量: 对每个顶点对 \((a,b)\) ,若 \(a\) 和 \(b\) 同属于一个连通块 ...

  4. 【洛谷】xht模拟赛 题解

    前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...

  5. PKUSC 模拟赛 题解_UPD

    之前挖了两个大坑 一个是day1下午的第二题 另一个是day2上午的第五题 先说day1下午的第二题吧 我们显然不能O(n^2)的dp,所以我们只能算贡献 首先对于任意一个边界点而言,他对答案的贡献路 ...

  6. 10.6-10.7 牛客网NOIP模拟赛题解

    留个坑... upd:估计这个坑补不了了 如果还补不了就删了吧

  7. 2019 蓝桥杯国赛 B 组模拟赛 题解

    标签 ok #include<bits/stdc++.h> using namespace std; /* 求阶乘 去除尾部0 每次求阶乘时:结果去除尾0,并对 1e6取余 */ type ...

  8. 『7.5 NOIP模拟赛题解』

    T1 Gift Description ​ 人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心 意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想 知道当他花一 ...

  9. 『7.3 NOIP模拟赛题解』

    T1 gift Description ​ 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. ​ 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜 ...

随机推荐

  1. 学习GlusterFS(八)

    GlusterFS集群创建 一.简介 GlusterFS概述 Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够 ...

  2. 学习Kvm(二)

    一.走进云计算 云计算:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供, ...

  3. C语言中的 @ 符号是什么意思?

    Global Variable Address Modifier (@address)You can assign global variables to specific addresses wit ...

  4. C++“拷贝构造函数”和“等号重载”有什么区别?

    CTypeA(const CTypeB& b)CTypeA& operator=(const CTypeB& b)一直没弄懂这两个有什么区别.只知道,重载了=号,下面复制的时候 ...

  5. 自动驾驶运动规划-Dubins曲线

    1.Simple Car模型 如下图所示,Simple Car模型是一个表达车辆运动的简易模型.Simple Car模型将车辆看做平面上的刚体运动,刚体的原点位于车辆后轮的中心:x轴沿着车辆主轴方向, ...

  6. 顺利通过EMC实验(7)

  7. Spring Framework远程代码执行漏洞复现(CVE-2022-22965)

    1.漏洞描述 漏洞名称 Spring Framework远程代码执行漏洞 公开时间 2022-03-29 更新时间 2022-03-31 CVE编号 CVE-2022-22965 其他编号 QVD-2 ...

  8. 【Web Audio API】 — 那些年的 web audio

    转 TAT.Jdo:[Web Audio API] - 那些年的 web audio 这主题主要是早期对 web audio api的一些尝试,这里整理一下以便以后翻阅,如有错误,诚请指正. 在这之前 ...

  9. Service worker (@nuxtjs/workbox) 采坑记

    PWA(Progressive Web App)是前端的大趋势,它能极大的加快前端页面的加载速度,得到近乎原生 app 的展示效果(其实难说).PWA 其实是多种前端技术的组合,其中最重要的一个技术就 ...

  10. Jar 包下载以及 maven jar 包配置

    学习内容: jar包下载是我们必须掌握的一个内容,不管是使用Maven项目还是其他项目,一般都需要引入外部的 jar 包 jar包下载 下载地址(打不开网址的直接百度搜索 maven reposito ...