这是一套简单题,这几天的考试让bike老爷感觉很绝望,说实话我也确实不知道还能怎么更简单了。

这几天的题换做llj、sxy应该都能轻松AK吧,至少随便考个250+应该不是问题吧,我越来越觉得觉得我跟他们的差距真的是非常非常大,dcoier跟其他学校的大佬的差距更是如此。我不知道我之前没有自知之明的时候对自己的定义是怎么样的,但是现在我发现我大概真的是一个堪堪noip一等奖水平的选手。

已经不知道该怎么办了,我甚至很想自暴自弃地大喊,我已经凉了!!dcoi没有救的!!每一届每一届地下去都会凉透的!!

B 君的第一题 (changchun)

这是一道讲过的数学题,然而我实在太菜并不记得怎么做。

然后写了个树dp,似乎递归爆栈了只有90。f[x][0]表示x的子树中与x不相连的联通块个数的期望,f[x][1]表示与x相连的联通块个数的期望,也就是有点和x相连的概率,就可以转移了。

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=,p=;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int n;
  11. LL pr[N],inv=;
  12.  
  13. template<typename T> void read(T &x) {
  14. char ch=getchar(); x=; T f=;
  15. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  16. if(ch=='-') f=-,ch=getchar();
  17. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  18. }
  19.  
  20. int ecnt,fir[N],nxt[N<<],to[N<<];
  21. void add(int u,int v) {
  22. nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v;
  23. nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u;
  24. }
  25.  
  26. LL f[N][],son[N];
  27. void dfs(int x,int fa) {
  28. son[x]=;
  29. for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) {
  30. int y=to[i];
  31. son[x]++;
  32. dfs(y,x);
  33. f[x][]=(f[x][]+(f[y][]+f[y][]*inv%p)%p)%p;
  34. }
  35. f[x][]=(pr[n]-pr[n-son[x]]+p)%p;
  36. }
  37.  
  38. #define ANS
  39. int main() {
  40. #ifdef ANS
  41. freopen("changchun.in","r",stdin);
  42. freopen("changchun.out","w",stdout);
  43. #endif
  44. read(n);
  45. pr[]=;
  46. For(i,,n) pr[i]=pr[i-]*%p;
  47. For(i,,n) {
  48. int x,y;
  49. read(x); read(y);
  50. add(x,y);
  51. }
  52. dfs(,);
  53. printf("%lld\n",(f[][]+f[][])%p);
  54. Formylove;
  55. }

树dp

正解:

考虑点的联通块怎么算,树中砍掉k条边就形成k+1个联通块,每条边被砍的概率是1/2,那么砍掉边的期望就是(n-1)/2,形成联通块的期望就是(n-1)/2+1

然后边的联通块就减去单独一个点形成的联通块的个数的期望即可。

单独点的联通块个数的期望等于每个点形成的单独联通块的个数期望之和,即每个点成为单独联通块的概率之和。llj切这题似乎只需要3min。

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=,p=;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int n,in[N];
  11. LL pr[N],ans;
  12.  
  13. template<typename T> void read(T &x) {
  14. char ch=getchar(); x=; T f=;
  15. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  16. if(ch=='-') f=-,ch=getchar();
  17. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  18. }
  19.  
  20. LL mo(LL x) { return x<?x+p:(x>=p?x-p:x); }
  21.  
  22. #define ANS
  23. int main() {
  24. #ifdef ANS
  25. freopen("changchun.in","r",stdin);
  26. freopen("changchun.out","w",stdout);
  27. #endif
  28. read(n);
  29. pr[]=;
  30. For(i,,n) pr[i]=mo(pr[i-]*);
  31. For(i,,n) {
  32. int x,y;
  33. read(x); read(y);
  34. in[x]++; in[y]++;
  35. }
  36. ans=((LL)n+)*pr[n-]%p;
  37. For(i,,n)
  38. ans=mo(ans-pr[n-in[i]]);
  39. printf("%lld\n",ans);
  40. Formylove;
  41. }

B 君的第二题 (harbin)

除了菜菜菜菜菜菜我不知道还能说些什么。

弱智都知道的70pt做法就是随便拿个啥子数据结构模拟,我不想打平衡树又忘了树状数组求第k大怎么打,在那里打印了一个树状数组现场研究,还写挂了一次。

正解是,考虑每个人是第几轮被踢出去的,O(n)地dp这个东西,然后基数排序即可。。

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=,mod=1e9+;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int T,n,k,pr[N],f[N],c[N],sa[N];
  11.  
  12. template<typename T> void read(T &x) {
  13. char ch=getchar(); x=; T f=;
  14. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  15. if(ch=='-') f=-,ch=getchar();
  16. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  17. }
  18.  
  19. int p[N],bo[N];
  20. void get_prime() {
  21. For(i,,) {
  22. if(!bo[i]) p[++p[]]=i;
  23. for(int j=;j<=p[]&&p[j]*i<=;j++) {
  24. bo[i*p[j]]=;
  25. if(i%p[j]==) break;
  26. }
  27. }
  28. }
  29.  
  30. void pre() {
  31. int l=,r=p[],rs=;
  32. while(l<=r) {
  33. int mid=((l+r)>>);
  34. if(p[mid]>=n) rs=mid,r=mid-;
  35. else l=mid+;
  36. }
  37. int P=p[rs];
  38. pr[]=;
  39. For(i,,n) pr[i]=(LL)pr[i-]*P%mod;
  40. }
  41.  
  42. LL mo(LL x) { return x>=mod?x-mod:x; }
  43.  
  44. #define ANS
  45. int main() {
  46. #ifdef ANS
  47. freopen("harbin.in","r",stdin);
  48. freopen("harbin.out","w",stdout);
  49. #endif
  50. pr[]=;
  51. For(i,,) pr[i]=pr[i-]*;
  52. get_prime();
  53. read(T);
  54. while(T--) {
  55. read(n); read(k);
  56. pre();
  57. For(i,,n-) {
  58. if(i%k==) f[i]=;
  59. else f[i]=f[i-(i/k+)]+;
  60. c[f[i]]++;
  61. }
  62. For(i,,n-) c[i]+=c[i-];
  63. Rep(i,n-,) sa[--c[f[i]]]=i;
  64. LL ans=;
  65. For(i,,n-)
  66. ans=mo(ans+(LL)sa[i]*pr[i]%mod);
  67. printf("%lld\n",ans);
  68. if(T) memset(c,,sizeof(c));
  69. }
  70. Formylove;
  71. }

B 君的第三题 (shenyang)

一个很弱智的状压dp,然而我当时竟然觉得一个质数跟自己互质,然后说这是什么沙比题随便搜一下就差不多了吧写了个迭代加深。

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=,up=;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int p[]={,,,,,,,,,,,,,,,};
  11. int n,a[N],ans,f[N][up+];
  12.  
  13. template<typename T> void read(T &x) {
  14. char ch=getchar(); x=; T f=;
  15. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  16. if(ch=='-') f=-,ch=getchar();
  17. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  18. }
  19.  
  20. int get(int x) {
  21. int rs=;
  22. For(i,,) if(x%p[i]==)
  23. rs|=(<<i);
  24. return rs;
  25. }
  26.  
  27. #define ANS
  28. int main() {
  29. #ifdef ANS
  30. freopen("shenyang.in","r",stdin);
  31. freopen("shenyang.out","w",stdout);
  32. #endif
  33. read(n);
  34. For(i,,n) read(a[i]);
  35. memset(f,/,sizeof(f));
  36. f[][]=;
  37. ans=n*;
  38. For(i,,n) {
  39. For(x,,) {
  40. int now=get(x),S=(now^up);
  41. for(int s=S;;s=((s-)&S)) {
  42. f[i][s|now]=min(f[i][s|now],f[i-][s]+abs(x-a[i]));
  43. if(!s) break;
  44. }
  45. }
  46. if(i==n) For(s,,up) ans=min(ans,f[i][s]);
  47. }
  48. printf("%d\n",ans);
  49. Formylove;
  50. }

NOIp2018集训test-10-18 (bike day4)的更多相关文章

  1. [NOIP2018模拟赛10.18]自闭报告

    闲扯 这一天,菜鸡RyeCatcher又想起来了被毒瘤题支配的恐惧 今天比较好玩,还是ljy提醒才发现文件夹里有题面...不知道外面的人什么时候才发现 看完了题面,又回到了雅礼啥题也不会写的感觉 T1 ...

  2. [10.18模拟赛] 序列 (DP)

    [10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...

  3. 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue

    [源码下载] 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue 作者:weba ...

  4. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  5. 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.

    Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...

  6. [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现

    题目: 6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少? 10 = 6 + 4         4 18 = 10 + 8        4 + 4  32 = 18 + 14 ...

  7. Java的课后作业——18.10.18

    日期:2018.10.18 星期四 博客期:020 小试验任务: 我就发一下代码好了!!! package test1; import java.util.Scanner; public class ...

  8. First Scrum Meeting (2015/10/18)

    会议是在昨晚进行的,本来早就应该写博了,可惜今天校园网炸个不停= =.刚修好就赶紧来发博客. 会议基本要素 会议主题:爬虫项目的核心技术讨论以及项目初期的工作分配 会议时间:2015.10.18 19 ...

  9. 对于最近的一些日常总结by520(17.10.18)

    ---天天考试,各种题型都有,学到了很多新的知识,也发现了自己的许多不足---1.首先,自己的搜索需要加强,特别是广搜,10.18的T1裸广搜没有做对.2.数学的思维和一些逻辑问题需要加强,然后就是要 ...

  10. NOIP2018 集训(二)

    A题 神炎皇 问题描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对 \((a,b)\) ,若满足 \(a+b\leq n\) 且 \(a+b\) 是 \(ab\) 的因子,则称 为神 ...

随机推荐

  1. [08山东省选]2298 石子合并 即POJ 1738 An old Stone Game

    2298 石子合并 2008年省队选拔赛山东  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在 ...

  2. wxwidget自定义消息处理步骤

    from http://www.cppblog.com/kenlistian/archive/2009/02/06/73096.html 略有修改 wxwidget自定义消息处理步骤 自定义消息处理( ...

  3. iptables的例子1

      练习1:实现主机防火墙   设置主机防火墙策略为DROP: iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP i ...

  4. nginx学习之web服务器(四)

    1. 定义一个虚拟服务器 http { server { # Server configuration } } 可以在http {}块里面添加多个server {}块,每一个server {}块代表一 ...

  5. nginx学习之简化安装篇(一)

    环境:CentOS 6.5 1. 安装依赖环境 [root@localhost ~]# yum install pcre-devel zlib-devel openssl-devel -y 2. 安装 ...

  6. But what exactly do we mean by "gets closer to"?

    https://rdipietro.github.io/friendly-intro-to-cross-entropy-loss/ [将输入转化为输出:概率分布] When we develop a ...

  7. 区分Web前端和后端(转载)

    转载自:http://blog.csdn.net/rosetta/article/details/53871766 前言   做C开发将近六年,基本上没有接触过web相关的东西,原来听别人说web相关 ...

  8. Apache Shiro 使用手册(四)Realm 实现(转发:http://kdboy.iteye.com/blog/1169631)

    在认证.授权内部实现机制中都有提到,最终处理都将交给Real进行处理.因为在Shiro中,最终是通过Realm来获取应用程序中的用户.角色及权限信息的.通常情况下,在Realm中会直接从我们的数据源中 ...

  9. 使用基本 SQL 命令

    概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操做 数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少 ...

  10. python2 生成验证码图片

    使用pillow或者pil库编写 #coding:utf-8 #use pillow or pil try: from PIL import Image, ImageDraw, ImageFont, ...