概要

    本次比赛考的不是很好,400分的题只拿了180分。。。(失误失误)

 题目

    T1:数你太美(预期100  实际60)

         题目大意:

          在两个序列中找两个最小的数进行组合,使这个最小整数最小。

        解析:

          只要根据题目模拟就可以了。。。。。。。

          (玄学60分!!!)

        code :

            60分代码

            

  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int n,m;
  5. int a[];
  6. int b[];
  7. int main()
  8. {
  9. cin>>n>>m;
  10. int minn=2e9,minm=2e9;
  11. for(int i=;i<=n;i++)
  12. {
  13. cin>>a[i];
  14. if(minn>a[i])
  15. {
  16. minn=a[i];
  17. }
  18. }
  19. for(int j=;j<=m;j++)
  20. {
  21. cin>>b[j];
  22. if(minm>b[j])
  23. {
  24. minm=b[j];
  25. }
  26. }
  27. if(minn==minm)
  28. {
  29. cout<<minn;
  30. return ;
  31. }
  32. else
  33. {
  34. cout<<min(minn*+minm,minm*+minn);
  35. }
  36. return ;
  37. }

            AC代码

 

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. int n,m;
  5. int a[],b[];
  6. int at[],bt[],ct[];
  7. int t1,t2;
  8. void cmp(int x,int y)
  9. {
  10. if(x<y)
  11. {
  12. printf("%d",x);
  13. }
  14. else
  15. {
  16. printf("%d",y);
  17. }
  18. }
  19. int main()
  20. {
  21. scanf("%d%d",&n,&m);
  22. for(int i=;i<=n;i++)
  23. {
  24. scanf("%d",&a[i]);
  25. at[a[i]]=;
  26. }
  27. for(int i=;i<=m;i++)
  28. {
  29. scanf("%d",&b[i]);
  30. bt[b[i]]=;
  31. }
  32. for(int i=;i<;i++)
  33. {
  34. ct[i]=at[i]+bt[i];
  35. }
  36. sort(a+,a+n+);
  37. sort(b+,b+m+);
  38. for(int i=;i<;i++)
  39. {
  40. if(ct[i]==)
  41. {
  42. printf("%d",i);
  43. return ;
  44. }
  45. }
  46. t1=a[]*+b[];
  47. t2=b[]*+a[];
  48. cmp(t1,t2);
  49. return ;
  50. }

       T2:逃亡(预期100  实际100)

           题目大意:

              在(xi,yi)中找到x或y的最短路

           解析:

              如题;

             code

              

  1. #include<cstdio>
  2. using namespace std;
  3. int n,m,k;
  4. int x,y;
  5. double sum=;
  6. int min(int a,int b)
  7. {
  8. if(a<b)
  9. {
  10. return a;
  11. }
  12. else
  13. {
  14. return b;
  15. }
  16. }
  17. int main()
  18. {
  19. scanf("%d%d%d",&n,&m,&k);
  20. for(int i=;i<=k;i++)
  21. {
  22. scanf("%d%d",&x,&y);
  23. int t1=min(x,n-x);
  24. int t2=min(y,m-y);
  25. sum+=min(t1,t2);
  26. }
  27. printf("%.3lf",sum);
  28. return ;
  29. }

            T3:数数字(预期20  实际20)

                      题目大意:

                第i个蒟蒻会告诉你他看到了ai种数字(定义两个数字不同种当且仅当它们的值不同)

                但是由于蒟蒻太弱了,可能会报错数据,NTF需要核实是否有一种情况使所有蒟蒻说的话都正确。

                  这是个题;

            解析:

                令总的卡片种类为 T,对于每一只蒟蒻,若它的卡片数值唯一则他所看到的卡片种类总
                数为T-1,否则为T,我们称卡片数值唯一的蒟蒻是孤独的。
                故若 ai 的最大值和最小值的差大于等于 2 则无解
                下面对最大值和最小值的差进行分类讨论:
                 若 max=min,那么此时每只蒟蒻看到的卡片种类都为 T 或者都为 T-1。如果每只蒟蒻看到的
                卡片种类的总数都是 T-1,则每只蒟蒻都是孤独的,此时 T=n。 否则每只蒟蒻所看到的卡片
                  种类的总数都是 T,由于不存在孤独的蒟蒻,所以 T 至多为⌊n/2⌊。
                  若 max=min+1,此时我们可以统计孤独的蒟蒻的个数 x,类似上面的推论, 数值总数至少为
                  x+1,至多为 x+⌊(n-x)/2⌊。故当 max=min+1 时, x+1≤T≤x+⌊(n-x)/2⌊              

                code

                  

  1. #include<cstdio>
  2. #include<iostream>
  3. using namespace std;
  4. typedef long long ll;
  5. int t;
  6. int n;
  7. int a[];
  8. int only;
  9. int sum;
  10. //inline int read(){
  11. // char ch=getchar();
  12. // ll x=0;
  13. // ll f=1;
  14. // while(ch<'0'||ch>'9'){
  15. // if(ch=='-')
  16. // f=-1;
  17. // ch=getchar();
  18. // }
  19. // while('0'<=ch&&ch<='9'){
  20. // x=x*10+ch-'0';
  21. // ch=getchar();
  22. // }
  23. // return x*f;
  24. //}
  25. int main()
  26. {
  27. scanf("%d",&t);
  28. while(t--)
  29. {
  30. scanf("%d",&n);
  31. int maxn=-;
  32. int minm=2e9;
  33. only=;
  34. sum=;
  35. for(int i=;i<=n;i++)
  36. {
  37. scanf("%d",&a[i]);
  38. if(maxn<a[i])
  39. maxn=a[i];
  40. if(minm>a[i])
  41. minm=a[i];
  42. }
  43. for(int i=;i<=n;i++)
  44. if(a[i]==minm) only++;
  45. if(maxn-minm>=)
  46. {
  47. printf("no\n");
  48. continue;
  49. }
  50. if(minm==maxn)
  51. {
  52. if(maxn<=n/||maxn+==n)
  53. {
  54. printf("yes\n");
  55. continue;
  56. }
  57. printf("no\n");
  58. continue;
  59. }
  60. if(maxn==minm+)
  61. {
  62. if(only+<=maxn&&maxn<=(n-only)/+only)
  63. {
  64. printf("yes\n");
  65. }
  66. else
  67. {
  68. printf("no\n");
  69. }
  70. }
  71. }
  72. return ;
  73. }

        T4:tower(期望得分0  实际得分0);

                题目大意:

                    

欲穷千里目,更上一层楼。

阿克先生喜欢旅游。某一天,他来到魔法森林旅游。

经过观察,他发现魔法森林一共有​n个城市,每个城市有一座高高的魔法塔,第i​个城市的魔法塔的高度为hi​。这些城市一共由​n-1条道路连接,任意两座城市互相可达。

阿克先生想要站在某一座塔上观察尽可能多城市的风景。不幸的是,阿克先生没有透视眼,较高的塔将会遮蔽较低的塔。同时,魔法森林其他地方也被茂林覆盖,他的视线无法穿过茂林(但因为是魔法塔,塔上储存了镜面魔法,可以使阿克先生的视线在城市水平任意角度转弯)。

所以,他只能沿着n-1​条道路观察其他的点。

但是,魔法森林的道路蜿蜒曲折,他观看的城市到他所在的点的路径要么互相包含要么两两不交。且从他所在的点开始,到任意它观察的城市,所成的高度序列单调不增。

阿克先生想要知道他最多能观察到多少个城市(包括自身),他快速地秒了这道题,但他懒得写代码了,所以请你帮他算一算。

                    解析:

    30%
    枚举阿克先生在哪个点,然后 dfs, 时间复杂度 O(n^2)。
    20%链
    从左往右扫一遍,从右往左扫一遍, 计算出每个点向左、向右最长不上升的长度, 然后加在
    一起取 max 就是答案了。 时间复杂度 O(n)。
    20%h 互不相同
    观察到若 u 能够观察 v,则 v 一定不能观察 u, 所以按高度从小到大排序,依次加入,维护
    每个点所能伸出的最长链即可; 或者可以直接记忆化搜索。 时间复杂度 O(n log n)或 O(n)。
    100%
    先固定一个点为根, 可以发现,答案的贡献被分为两类:子树内和子树外, dfs 一次,计算
    出每个点在它子树内能延伸出的最长路径和次长路径,再计算每个点以他为所在节点在子树
    内最多覆盖多少个点, 重新 dfs 一次,同时记录它往他父亲延伸最多能延伸多长, 每次向下
    走一格,要么是原路径+1,要么是它兄弟的一个路径,取 max, 如果父亲>儿子,则伸向父
    亲的长度清零, 每个节点的答案就是它子树内的答案+伸向他父亲的最长路径。 时间复杂度
    O(n)

      code

      

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. using namespace std;
  5. int tot=;
  6. int h[];
  7. int s[];
  8. int f[],f1[];
  9. int a[];
  10. int ans=;
  11. struct edge {
  12. int to,next;
  13. } e[];
  14. void add(int x,int y) {
  15. e[++tot].to=y;
  16. e[tot].next=h[x];
  17. h[x]=tot;
  18. }
  19. void dfs1(int u,int fa) {
  20. s[u]=,f[u]=;
  21. for(int i=h[u]; i!=; i=e[i].next) {
  22. int v=e[i].to;
  23. if (v==fa) continue;
  24. dfs1(v,u);
  25. if (a[u]>=a[v]) {
  26. if (f[u]<f[v]+) {
  27. f1[u]=f[u];
  28. f[u]=f[v]+;
  29. } else f1[u]=max(f1[u],f[v]+);
  30. s[u]+=f[v];
  31. }
  32. }
  33. }
  34. void dfs2(int u,int fa,int up) {
  35. ans=max(ans,up+s[u]);
  36. for (int i=h[u]; i!=; i=e[i].next) {
  37. int v=e[i].to;
  38. if (v==fa) continue;
  39. if (a[v]<a[u])
  40. dfs2(v,u,);
  41. else {
  42. if(f[v]+==f[u])
  43. dfs2(v,u,max(up+,f1[u]));
  44. else
  45. dfs2(v,u,max(up+,f[u]));
  46. }
  47. }
  48. }
  49. int main() {
  50. int n;
  51. tot=,ans=;
  52. scanf("%d",&n);
  53. for (int i=; i<=n; i++)
  54. scanf("%d",&a[i]);
  55. for (int i=; i<n; i++) {
  56. int q,p;
  57. scanf("%d%d",&q,&p);
  58. add(q,p),add(p,q);
  59. }
  60. dfs1(,);
  61. dfs2(,,);
  62. printf("%d\n",ans);
  63. }

      最后附上oj链接:www.gdfzoj.com

GALAXY OJ NOIP2019联合测试1-总结的更多相关文章

  1. GALAXY OJ NOIP2019联合测试2-普及组

    概要: 今天比了个赛,还挺水,只不过不太理想. 题目: Problem : 韬韬抢苹果 又到了收获的季节,树上结了许多韬韬,错了,是许多苹果,有很多个小韬韬都来摘苹果.每个韬韬都想要最大的苹果,所以发 ...

  2. JMeter入门(03)多台JMeter联合测试

    一.配置各个节点 1.配置jmeter.properties # Remote Hosts - comma delimited#remote_hosts=localhost:1099,localhos ...

  3. noip2019集训测试赛(二十一)Problem B: 红蓝树

    noip2019集训测试赛(二十一)Problem B: 红蓝树 Description 有一棵N个点,顶点标号为1到N的树.N−1条边中的第i条边连接顶点ai和bi.每条边在初始时被染成蓝色.高桥君 ...

  4. C++笔记(6)——关于OJ的单点测试和多点测试

    单点测试 PAT使用的就是单点测试(LeetCode应该也是单点测试).单点测试中系统会判断每组数据的输出结果是否正确,正确则通过测试并获得这则测试的分值.题目的总得分等于通过的数据的分值之和. 代码 ...

  5. SDUT OJ 数据结构上机测试1:顺序表的应用

    数据结构上机测试1:顺序表的应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

  6. 题解和总结——noip2019集训测试赛(一)贪吃蛇+字符串+都城

    Problem A: 贪吃蛇 描述 Input Output Sample Input [样例输入1] 4 5 ##... ..1#@ 432#. ...#. [样例输出1] 4 [样例输入2] 4 ...

  7. noip2019集训测试赛(二十一)Problem A: Colorful Balls

    Problem A: Colorful Balls Description Snuke放了N个一排彩色的球.从左起第i个球的颜色是ci重量是wi她可以通过执行两种操作对这些球重新排序操作1:选择两个相 ...

  8. zookeeper部署及集群测试

    zookeeper部署及集群测试 环境 三台测试机 操作系统: centos7 ; hostname: c1 ; ip: 192.168.1.80 操作系统: centos7 ; hostname: ...

  9. 《Code Complete》ch.22 开发者测试

    WHAT? 单元测试(Unit Testing):是将一个程序员或一个开发团队所编写的,一个完整的类.子程序或者小程序,从完整的系统中隔离出来进行测试 组件测试(Component Testing): ...

随机推荐

  1. System 类初探

    System 类 操作方法 取得当前的系统时间 currentTemiMillis() public static long currenTimeMillis() ; 实例: 统计某些操作的执行时间 ...

  2. [转]Eclipse插件开发之基础篇(4) OSGi框架

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_1.html 1. 什么是OSGi框架 OSGi(O ...

  3. [b0025] vmware_桥接网路设置

    总结: 桥接 模式上外网比较简单. 缺点是每次重启虚拟机,分配的IP可能变化,导致 xshell  连接 时都要修改,很麻烦 桥接模式能不能配置静态IP  ? 1. 环境 物理机网络 情况,从外部自动 ...

  4. Fundebug录屏插件更新至0.6.0

    摘要: 录屏插件的性能进一步优化,传输的数据体积大幅度减少. 录屏功能介绍 Fundebug提供专业的异常监控服务,当线上应用出现 BUG 的时候,我们可以第一时间报警,帮助开发者及时发现 BUG,提 ...

  5. Java实现MapReduce Wordcount案例

    先改pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...

  6. STL关联容器的基本操作

    关联容器 map,set map map是一种关联式容器包含 键/值 key/value 相当于python中的字典不允许有重复的keymap 无重复,有序 Map是STL的一个关联容器,它提供一对一 ...

  7. 修改Tooltip 文字提示 的背景色 箭头颜色

    3==>vue 鼠标右击<div @contextmenu.prevent="mouseRightClick">prevent是阻止鼠标的默认事件 4==> ...

  8. Tensorflow之MNIST手写数字识别:分类问题(1)

    一.MNIST数据集读取 one hot 独热编码独热编码是一种稀疏向量,其中:一个向量设为1,其他元素均设为0.独热编码常用于表示拥有有限个可能值的字符串或标识符优点:   1.将离散特征的取值扩展 ...

  9. CF915E Physical Education Lessons 珂朵莉树

    问题描述 CF915E LG-CF915E 题解 \(n \le 10^9\) 看上去非常唬人. 但是这种区间操作的题,珂朵莉树随便跑啊. \(\mathrm{Code}\) #include< ...

  10. luoguP3233 [HNOI2014]世界树

    题意 看见数据范围就知道是虚树,于是先建出虚树. 考虑先求出虚树上的点的管理点,显然两边dfs,一遍从下往上,一遍从上往下. 之后考虑不在虚树上的点,对于虚树上的每一条边\((u,v)\),我们考虑上 ...