NOIP 2014 提高组 题解

No 1. 生活大爆炸版石头剪刀布

http://www.luogu.org/problem/show?pid=1328

这是道大水题,我都在想怎么会有人错了,没算法,直接模拟,别读错题.

 ][]={{,,,,},
               {,,,,},
               {,,,,},
               {,,,,},
               {,,,,}};

 int n,na,nb;
 ],b[];
 int s1,s2;

 int main()
 {
     ios_base::sync_with_stdio();

     cin>>n>>na>>nb;

     ;i<=na;i++)
     {
         cin>>a[i];
     }

     ;i<=nb;i++)
     {
         cin>>b[i];
     }

     ,f2=;

     ;i<=n;i++)
     {
         f1++;
         f2++;
         ;
         ;
         ) s1++;
         ) s2++;
     }

     cout<<s1<<' '<<s2<<endl;

     ;
 }

No 2. 联合权值

http://www.luogu.org/problem/show?pid=1351

同样是水题,用加法结合律.

首先,距离为2的两点,必有一个节点与他们都相连.

第一个要求最大值,对于每个点,预处理出相邻的边中权值最大的两条边,枚举每个点,计算这两个值的乘积,求个最大值即可.

第二个,要求距离为2的点对的权值之和,那么,我们先确定某点对中间的那个点,设为p,并预处理出p与其相邻的点距离之和d,则与其相邻的某点q,在中心点为p的距离为二的一条路径上的权值之和为d(q,p)*d(m1,p)+d(q,p)*d(m2,p)+...+d(q,p)*d(mi,p)=d(q,p)*(d-d(q,p)) 其中mi为与p相邻的除q以外的点,共i个.

最后求和即可.

 long long n;
 ;
 ];
 ];
 long long mx;
 long long ans;
 vector<];
 ],m2[];

 int main()
 {
     scanf("%lld",&n);

     ;i<n;i++)
     {
         long long a,b;
         scanf("%lld %lld",&a,&b);
         e[a].pb(b);
         e[b].pb(a);
     }

     ;i<=n;i++)
     {
         scanf("%lld",&w[i]);
     }

     ;i<=n;i++)
     {
         ;j<(long long)e[i].size();j++)
         {
             sum[i]+=w[e[i][j]]%MOD;

             if(w[e[i][j]]>m1[i])
             {
                 m2[i]=m1[i];
                 m1[i]=w[e[i][j]];
             }
             else if(w[e[i][j]]>m2[i])
             {
                 m2[i]=w[e[i][j]];
             }
         }
     }

     ;i<=n;i++)
     {
         mx=max(mx,m1[i]*m2[i]);
     }

     printf("%lld ",mx);

     ;i<=n;i++)
     {
         ;j<(long long)e[i].size();j++)
         {
             ans=ans+(w[e[i][j]])*(sum[i]-w[e[i][j]]);
             ans=ans%MOD;
         }
     }

     printf("%lld\n",ans);

     ;
 }

No 3. 飞扬的小鸟

http://www.luogu.org/problem/show?pid=1941

dp

dp

dp

其实这题真心不难

不明白为何有许多人不会做........

我们用dp(i,j)表示鸟儿飞到第i根柱子的j高度处所用的最少跳跃步数.

Obviously,不跳,摔落比较好,所以先处理它.

明显的,dp[i+1][j-y[i]]=min(dp[i+1][j-y[i]],dp[i][j]).

当鸟儿跳的时候,要是到顶了不能继续跳,所以要分个类:

1.到顶了

dp[i][m]=min(dp[i][m],dp[i][j]+1)
dp[i+1][m]=min(dp[i+1][m],dp[i][j]+1)

2.没到顶

dp[i][j+x[i]]=min(dp[i][j+x[i]],dp[i][j]+1);
dp[i+1][j+x[i]]=min(dp[i+1][j+x[i]],dp[i][j]+1);

于是就可以写程序了...

 ][];
 ],r[];
 ];
 ],y[];
 int ans;
 int n,m,k;

 int main()
 {
     ios_base::sync_with_stdio();

     cin>>n>>m>>k;

     ;i<;i++)
     {
         l[i]=;
         r[i]=m;
     }

     ;i<n;i++)
     {
         cin>>x[i]>>y[i];
     }

     ;i<k;i++)
     {
         int t1,t2,t3;
         cin>>t1>>t2>>t3;

         l[t1]=t2+;
         r[t1]=t3-;
         has[t1]=;
     }

     ;i<=n;i++)
     {
         has[i]+=has[i-];
     }

     ;i<=n;i++)
     {
         ;j<=m;j++)
         {
             dp[i][j]=inf;
         }
     }

     ;i<=n;i++)
     {
         ;j<=m;j++)
         {
             dp[i][j]=inf;
         }

         for(int j=l[i];j<=r[i];j++)
         {
             if(dp[i][j]<inf)
             {
                 ans=i;

                 if(j>y[i])
                 {
                     dp[i+][j-y[i]]=min(dp[i+][j-y[i]],dp[i][j]);
                 }
             }
         }

         for(int j=l[i];j<=m;j++)
         {
             if(dp[i][j]<inf)
             {
                 if(m<j+x[i])
                 {
                     dp[i][m]=min(dp[i][m],dp[i][j]+);
                     dp[i+][m]=min(dp[i+][m],dp[i][j]+);
                 }
                 else
                 {
                     dp[i][j+x[i]]=min(dp[i][j+x[i]],dp[i][j]+);
                     dp[i+][j+x[i]]=min(dp[i+][j+x[i]],dp[i][j]+);
                 }
             }
         }
     }

     if(ans==n)
     {
         ans=inf;

         for(int i=l[n];i<=r[n];i++)
         {
             ans=min(ans,dp[n][i]);
         }

         cout<<<<endl<<ans<<endl;
     }
     else
     {
         cout<<<<endl<<has[ans]<<endl;
     }

     ;
 }

先写day1 以后有时间再写day 2.........


NOIP 2014 提高组 题解的更多相关文章

  1. noip 2014 提高组初赛

    noip 2014 提高组初赛 一. TCP协议属于哪一层协议( ) A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 B TCP(传输控制协议) 若有变量int a; float: x, ...

  2. NOIP 2001 提高组 题解

    NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...

  3. NOIP 2000 提高组 题解

    NOIP2000 提高组 题解 No 1. 进制转换 https://www.rqnoj.cn/problem/295 水题 对于n和基数r, 每次用n mod r, 把余数按照逆序排列 注意 mod ...

  4. noip 2016 提高组题解

    前几天写的那个纯属搞笑.(额,好吧,其实这个也不怎么正经) 就先说说day2吧: T1:这个东西应该叫做数论吧. 然而我一看到就照着样例在纸上推了大半天(然而还是没有看出来这东西是个杨辉三角) 然后就 ...

  5. noip 2014 提高组 Day 2

    1.无线网络发射器选址 这道题数据范围很小,就直接暴力枚举就好了.为了提高速度,就从每个有公共场所的点枚举周围在(x,y)放无线网路发射器可以增加的公共场所数量,加到一个数组里.所有公共场所都处理完了 ...

  6. NOIP 2014 提高组 Day1

    期望得分:100+100+50=250 实际得分:100+100+50=250 此次NOIP  ZJ省一分数线:500,SD:345 https://www.luogu.org/problem/lis ...

  7. NOIP 2014 提高组 Day2

    期望得分:100+60+30=190 实际得分:70+60+30=160 https://www.luogu.org/problem/lists?name=&orderitem=pid& ...

  8. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...

  9. [NOIp 1998 提高组]Probelm 2 连接多位数【2011百度实习生笔试题】

    /*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...

随机推荐

  1. 关于MATLAB处理大数据坐标文件2017529

    今天我们离成功又近了一步,因为又失败了两次 第一次使用了所有特征,理由:前天的特征使用的是取单个特征测试超过85分的特征,结果出现过拟合现象. 本次使用所有特征是为了和昨天的结果作比较. 结果稍好:比 ...

  2. 根据list得到list中的最大值最小值

    List ll = new ArrayList(); ll.add(new BigDecimal(1)); ll.add(new BigDecimal(4.99)); ll.add(new BigDe ...

  3. Centos6.5 源码编译安装 Mysql5.7.11及配置

    安装环境 Linux(CentOS6.5 版).boost_1_59_0.tar.gz.mysql-5.7.11.tar.gzMySQL 5.7主要特性:    更好的性能:对于多核CPU.固态硬盘. ...

  4. linux使用crontab实现PHP执行定时任务

    首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务. 所有用户定义的 crontab 都被保存在/var/spool/cron ...

  5. webpack的简单配置

    本人刚开始也不会写webpack配置,刚开始在网上搜索了了一些,看的也是刚刚理解,所以准备自己写下来,已作纪念和贡献给像我一样不会配置的“童鞋”们! 1.创建webpack配置文件 在项目文件下创建一 ...

  6. Unity应用架构设计(13)——日志组件的实施

    对于应用程序而言,日志是非常重要的功能,通过日志,我们可以跟踪应用程序的数据状态,记录Crash的日志可以帮助我们分析应用程序崩溃的原因,我们甚至可以通过日志来进行性能的监控.总之,日志的好处很多,特 ...

  7. angularJS 源码阅读之一:toDebugString

    简介: 这个函数返回调试字符串: number,boolean,string,null,undefined,都会转为字符串. function 中括号前面有空格的,会去除函数体,没空格的,会输出函数的 ...

  8. AJAX学习笔记(一)基础知识

    一.HTTP协议 1.HTTP: 计算机通过网络进行通讯的规则,用于浏览器向服务器发送请求. 2.HTTP是一种无状态的协议,无状态是指服务器端不保留任何连接相关的信息,浏览器客户端向服务器发送请求, ...

  9. 实时音视频互动系列(上):又拍云UTUN网络详解

    如何定义实时音视频互动, 延迟 400ms 内才能无异步感 实时音视频互动如果存在1秒左右的延时会给交流者带来异步感,必须将视频播放延迟限制在400ms以内,才能给用户较好的交互体验. 当延迟控制在4 ...

  10. 关于MultipleActiveResultSets属性导致的There is already an open DataReader associated with this Command which must be closed first的解决方法

    执行SqlDataReader.Read之后,如果还想用另一个SqlCommand执行Insert或者Update操作的话,会得到一个错误提示:There is already an open Dat ...