很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了。

这一场尽管T2写炸了,但也莫名Rank4涨了Rating。不过还是自己太菜。

A. 环游世界

首先我们先排个序,想一下如果不用走回来那么直接相邻的两个直接走就可以了。

那么我们要走回来呢,很简单,手动为回来留一条路径即可。还是一样的贪心方法,这次我们一般间隔两个。为什么是一般呢,其实也是对于边界的不同讨论了。

比如对于这样的一种情况,我们可以这样走:

其中红色表示走过去的边,绿色表示走回来的边。

CODE

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. const int N=1e5+5;
  5. int w[N],n;
  6. long long ans;
  7. inline char tc(void)
  8. {
  9. static char fl[100000],*A=fl,*B=fl;
  10. return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
  11. }
  12. inline void read(int &x)
  13. {
  14. x=0; char ch=tc();
  15. while (ch<'0'||ch>'9') ch=tc();
  16. while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
  17. }
  18. inline long long power(int x)
  19. {
  20. return (long long)x*x*x;
  21. }
  22. inline void solve1(void)
  23. {
  24. register int i;
  25. for (i=1;i+2<=n;i+=2)
  26. ans+=power(w[i+2]-w[i]);
  27. for (i=2;i+2<=n-1;i+=2)
  28. ans+=power(w[i+2]-w[i]);
  29. ans+=power(w[2]-w[1])+power(w[n]-w[n-1]);
  30. printf("%lld",ans);
  31. }
  32. inline void solve2(void)
  33. {
  34. register int i;
  35. for (i=1;i+2<=n-1;i+=2)
  36. ans+=power(w[i+2]-w[i]);
  37. for (i=2;i+2<=n;i+=2)
  38. ans+=power(w[i+2]-w[i]);
  39. ans+=power(w[2]-w[1])+power(w[n]-w[n-1]);
  40. printf("%lld",ans);
  41. }
  42. int main()
  43. {
  44. //freopen("A.in","r",stdin); freopen("A.out","w",stdout);
  45. register int i; read(n);
  46. for (i=1;i<=n;++i)
  47. read(w[i]); sort(w+1,w+n+1);
  48. if (n&1) solve1(); else solve2();
  49. return 0;
  50. }

B. 献礼

一道比较显然的Dsu on tree(树上启发式合并)

题意大概就是在一个人的所有孩子中,找的所有开心的孩子中出现的颜色最多的一个。

如果最多的颜色的个数小于一个给定的值,那么这个人就会不开心。

其实像这种没有修改的题目写dsu还是很方便的。

记一下每个点出现颜色的最多的次数\(mx\)和颜色\(mc\)。然后还是先更新轻儿子,在算上重儿子并把轻儿子累加。还是一样的策略。

具体实现看CODE吧

  1. #include<cstdio>
  2. #include<cstring>
  3. using namespace std;
  4. const int N=2e5+5;
  5. struct edge
  6. {
  7. int to,next;
  8. }e[N];
  9. struct data
  10. {
  11. int x,c;
  12. }ans[N];
  13. int head[N],s[N],id[N],size[N],son[N],t[N],col[N],w[N],cnt,tot,n,x,rt,mx,mc;
  14. bool hap[N];
  15. inline char tc(void)
  16. {
  17. static char fl[100000],*A=fl,*B=fl;
  18. return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
  19. }
  20. inline void read(int &x)
  21. {
  22. x=0; char ch=tc();
  23. while (ch<'0'||ch>'9') ch=tc();
  24. while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
  25. }
  26. inline void write(int x)
  27. {
  28. if (x>9) write(x/10);
  29. putchar(x%10+'0');
  30. }
  31. inline void add(int x,int y)
  32. {
  33. e[++cnt].to=y; e[cnt].next=head[x]; head[x]=cnt;
  34. }
  35. inline void DFS(int now)
  36. {
  37. size[now]=1; id[now]=++tot; s[tot]=now; int res=-1;
  38. for (register int i=head[now];i!=-1;i=e[i].next)
  39. {
  40. DFS(e[i].to);
  41. size[now]+=size[e[i].to];
  42. if (size[e[i].to]>res) res=size[e[i].to],son[now]=e[i].to;
  43. }
  44. }
  45. inline void ins(int now)
  46. {
  47. if (!hap[now]) return;
  48. if (++t[col[now]]>mx||(t[col[now]]==mx&&col[now]<mc)) mx=t[col[now]],mc=col[now];
  49. }
  50. inline void del(int now)
  51. {
  52. t[col[now]]=0;
  53. }
  54. inline void dsu(int now)
  55. {
  56. if (!son[now]) { if (!w[now]) hap[now]=1,ins(now); return; }
  57. register int i,j;
  58. for (i=head[now];i!=-1;i=e[i].next)
  59. if (e[i].to!=son[now])
  60. {
  61. dsu(e[i].to);
  62. for (j=id[e[i].to];j<=id[e[i].to]+size[e[i].to]-1;++j)
  63. del(s[j]); mx=mc=0;
  64. }
  65. if (son[now]) dsu(son[now]);
  66. for (i=head[now];i!=-1;i=e[i].next)
  67. if (e[i].to!=son[now])
  68. {
  69. for (j=id[e[i].to];j<=id[e[i].to]+size[e[i].to]-1;++j)
  70. ins(s[j]);
  71. }
  72. if (mx>=w[now])
  73. {
  74. ans[now].x=mx; ans[now].c=mc;
  75. hap[now]=1; ins(now);
  76. }
  77. }
  78. int main()
  79. {
  80. //freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
  81. register int i; read(n);
  82. memset(head,-1,sizeof(head));
  83. memset(e,-1,sizeof(e));
  84. for (i=1;i<=n;++i)
  85. read(col[i]);
  86. for (i=1;i<=n;++i)
  87. {
  88. read(x); add(x,i);
  89. if (!x) rt=i;
  90. }
  91. for (i=1;i<=n;++i)
  92. read(w[i]);
  93. DFS(rt); dsu(rt);
  94. for (i=1;i<=n;++i)
  95. if (hap[i]) write(ans[i].x),putchar(' '),write(ans[i].c),putchar('\n');
  96. else puts("oioi");
  97. return 0;
  98. }

C. 幻想王国

作为一道斐波那契数列性质+矩阵快速幂的挺神仙的题目,还是有点超出范围了。

留着待坑吧

EZ 2018 06 24 NOIP2018 模拟赛(二十)的更多相关文章

  1. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  2. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  3. EZ 2018 05 04 NOIP2018 模拟赛(十二)

    这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...

  4. EZ 2018 06 02 NOIP2018 模拟赛(十七)

    这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...

  5. EZ 2018 05 20 NOIP2018 模拟赛(十五)

    这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...

  6. EZ 2018 05 26 NOIP2018 模拟赛(十六)

    这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...

  7. EZ 2018 04 21 NOIP2018 模拟赛(十) -LoliconAutomaton的退役赛

    难得的一次Unrated,避免了重回1500的尴尬 其实题目都还可以,但只不过所有人T1都炸了,可能是数据的锅(假的) 而且我因为T1SB的把T2弃了,没想到是千年水题 T3莫名爆炸,然后TM的40分 ...

  8. EZ 2018 02 28 NOIP2018 模拟赛(二)

    我TM的终于改完了(其实都是SB题) 题目链接:http://211.140.156.254:2333/contest/53 T1送分,T2前40%送分,还有骗分机制在里面,T3暴力50 所以200应 ...

  9. EZ 2018 02 26 NOIP2018 模拟赛(一)

    这次是校内OJ(HHHOJ)线上比赛,网址:http://211.140.156.254:2333/contest/51 (我去刚刚快写完了手贱关掉了) 这次总体难度也不高,T1&&T ...

随机推荐

  1. windows10不能获取有效IP的问题

    最近我的windows10系统一直不能有效获取IP地址(无论有线还是无线),但手工设置IP后又能正常上网,所以怀疑是某个服务未启动的原因. 查了一下百度,发现还真是,现将解决方案记录如下: 1.打开系 ...

  2. Django框架的使用教程--视图和路由[二]

    视图和路由 1.创建一个django_test应用 2.setting中设置django_test INSTALLED_APPS = [ 'django.contrib.admin', 'django ...

  3. 计算机基础-CPU

    CPU(Central Processing Unit中央处理器)由运算器和控制器组成--微机性能的集成度最高的核心部件 1.金属触点 2.附带散热器 风冷式 热管散热式 水冷式等 扣具结构要和CPU ...

  4. javascript 正则表达式学习

    正则表达式 正则表达式,一个描述字符模式的对象.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式和匹配与替换功能. -- f ...

  5. django生命周期和事件委派

    这是事件委派如果不用事件委派   直接绑定的话,新添加的按钮不会有删除或者编辑的功能 上面是事件委派的代码 新添加的编辑按钮可以弹出123 django生命周期: 这是Django的生命周期 首先会通 ...

  6. SQL update select结合语句详解及应用

    QL update select语句 最常用的update语法是: 1 2 UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 ...

  7. 上传文件调用webapi方式

    选择文件 <div> <label for="fileUpload"> 选择文件 </label> <br/> <input ...

  8. 转载 线程池之ThreadPool类与辅助线程 - <第二篇>

    http://www.cnblogs.com/kissdodog/archive/2013/03/28/2986026.html 一.CLR线程池 管理线程开销最好的方式: 尽量少的创建线程并且能将线 ...

  9. solidity fallback函数

    什么是fallback函数: 出处:http://me.tryblockchain.org/blockchain-solidity-fallback.html 回退函数是合约里的特殊函数,没有名字,不 ...

  10. MySQL数据备份之mysqldump使用(转)

    文章转自 :https://www.cnblogs.com/jpfss/p/7867668.html mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mys ...