NOIP 2014 提高组 题解
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 提高组 题解的更多相关文章
- noip 2014 提高组初赛
noip 2014 提高组初赛 一. TCP协议属于哪一层协议( ) A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 B TCP(传输控制协议) 若有变量int a; float: x, ...
- NOIP 2001 提高组 题解
NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...
- NOIP 2000 提高组 题解
NOIP2000 提高组 题解 No 1. 进制转换 https://www.rqnoj.cn/problem/295 水题 对于n和基数r, 每次用n mod r, 把余数按照逆序排列 注意 mod ...
- noip 2016 提高组题解
前几天写的那个纯属搞笑.(额,好吧,其实这个也不怎么正经) 就先说说day2吧: T1:这个东西应该叫做数论吧. 然而我一看到就照着样例在纸上推了大半天(然而还是没有看出来这东西是个杨辉三角) 然后就 ...
- noip 2014 提高组 Day 2
1.无线网络发射器选址 这道题数据范围很小,就直接暴力枚举就好了.为了提高速度,就从每个有公共场所的点枚举周围在(x,y)放无线网路发射器可以增加的公共场所数量,加到一个数组里.所有公共场所都处理完了 ...
- NOIP 2014 提高组 Day1
期望得分:100+100+50=250 实际得分:100+100+50=250 此次NOIP ZJ省一分数线:500,SD:345 https://www.luogu.org/problem/lis ...
- NOIP 2014 提高组 Day2
期望得分:100+60+30=190 实际得分:70+60+30=160 https://www.luogu.org/problem/lists?name=&orderitem=pid& ...
- NOIP 2008提高组第三题题解by rLq
啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...
- [NOIp 1998 提高组]Probelm 2 连接多位数【2011百度实习生笔试题】
/*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...
随机推荐
- 细说Nullable<T>类型
目录一.简介二.语法和用法三.类型的转换和运算四.装箱与拆箱五.GetType()方法六.ToString()方法七.System.Nullable帮助类八.语法糖 一.简介 众所周知,值类型变量不能 ...
- JQuery实现tab切换
JQuery实现tab切换: (jquery需要自己添加) <!DOCTYPE html> <html lang="en"> <head> &l ...
- Python 迭代器和列表解析
Python 迭代器和列表解析 1)迭代器 一种特殊的数据结构,以对象形式存在 >>> i1 = l1.__iter__() >>> i1 = iter(l1) 可 ...
- Python3 常用数据类型语法
1.int类型 int类型的数据是没有长度限制的,它的最大长度只与计算机的内存有关. bin(i) 返回二进制表示结果, hex(i) 十六进制, int(i) 整数( ...
- nth-child 和nth-type的区别
一.深呼吸,直接内容:nth-child和:nth-of-type都是CSS3中的伪类选择器,其作用近似却又不完全一样,对于不熟悉的人对其可能不是很区分,本文就将介绍两者的不同,以便于大家正确灵活使用 ...
- Watson Explorer Analytical Components 2
Content Analytics architecture 1. Crawlers: extract content from the various enterprise data sources ...
- 【linux相识相知】用户及权限管理
linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管 ...
- Java探秘之基本数据类型和包装类(int,Integer)(一)
最近闲来无聊打算做一个博客网,没事记记笔记什么,可是网站不好做,需要点时间,就先写写笔记来练练手. 可是要写什么呢,太难的好像我也写不出来,万一写错了误导别人就不好了. 哈哈,不多说,直奔主题,要是写 ...
- Python-Flask:利用flask_sqlalchemy实现分页效果
Flask-sqlalchemy是关于flask一个针对数据库管理的.文中我们采用一个关于员工显示例子. 首先,我们创建SQLALCHEMY对像db. from flask import Flask, ...
- Java基础语法<十一> 异常 断言 日志 调试
1 处理错误 1.1 异常分类 Error类层次描述了Java运行时系统的内部错误和资源耗尽错误. 设计Java程序时,主要关注Exception层次结构. 由程序错误导致的异常属于RuntimeEx ...