NOIP2010普及组题解 -SilverN
三国游戏
题目内容不放了
由于电脑总是会拆掉最大的组合,所以玩家最多只能得到数值第二大的组合
那么找出第二大的组合就行了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int d[][];
int n;
int fst,snd,ans;
int main(){
scanf("%d",&n);
int i,j,x;
for(i=;i<n;i++)
for(j=i+;j<=n;j++)
{
scanf("%d",&d[i][j]);
d[j][i]=d[i][j];
}
for(i=;i<=n;i++){
fst=;snd=;
for(j=;j<=n;j++){
if(d[i][j]>fst){
snd=fst;
fst=d[i][j];
}
else if(d[i][j]>snd)snd=d[i][j];
if(snd>ans)ans=snd;
}
}
printf("1\n%d",ans);
return ;
}
导弹拦截
题目描述
经过 11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为 0 时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。
某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入工作。如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价。
输入输出格式
输入格式:
第一行包含 4 个整数x1、y1、x2、y2,每两个整数之间用一个空格隔开,表示这两套导弹拦截系统的坐标分别为(x1, y1)、(x2, y2)。 第二行包含 1 个整数 N,表示有 N颗导弹。接下来 N行,每行两个整数 x、y,中间用 一个空格隔开,表示一颗导弹的坐标(x, y)。不同导弹的坐标可能相同。
输出格式:
输出文件名 missile.out。
输出只有一行,包含一个整数,即当天的最小使用代价。
输入输出样例
0 0 10 0
2
-3 3
10 0
18
0 0 6 0
5
-4 -2
-2 3
4 0
6 -2
9 1
30
说明
两个点(x1, y1)、(x2, y2)之间距离的平方是(x1− x2)2+(y1−y2)2。
两套系统工作半径 r1、r2的平方和,是指 r1、r2 分别取平方后再求和,即 r12+r22。
【样例 1 说明】
样例1 中要拦截所有导弹,在满足最小使用代价的前提下,两套系统工作半径的平方分
别为18 和0。
【样例2 说明】
样例中的导弹拦截系统和导弹所在的位置如下图所示。要拦截所有导弹,在满足最小使
用代价的前提下,两套系统工作半径的平方分别为20 和10。
【数据范围】
对于10%的数据,N = 1
对于20%的数据,1 ≤ N ≤ 2
对于40%的数据,1 ≤ N ≤ 100
对于70%的数据,1 ≤ N ≤ 1000
对于100%的数据,1 ≤ N ≤ 100000,且所有坐标分量的绝对值都不超过1000。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
int mxr2[];
int fp;
int xa,xb,ya,yb;//两套系统分别为a,b
struct ds{
int a,b;
}di[];
int ncmp(ds a,ds b){//以点到a的距离为标准从小到大排序
return a.a<b.a;
}
int dis(int x1,int y1,int x2,int y2){//求距离
return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
}
int main(){
scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
scanf("%d",&n);
int i,j;
for(i=;i<=n;i++){
int x,y;
scanf("%d%d",&x,&y);
di[i].a=dis(x,y,xa,ya);
di[i].b=dis(x,y,xb,yb);
}
sort(di+,di+n+,ncmp);
int mx=;
mxr2[n+]=;
for(i=n;i>=;i--){
if(di[i].b>mx){
mx=di[i].b;
}
mxr2[i]=mx;
}
int minn=;
for(i=;i<=n;i++){
int mxr1=di[i].a;
minn=min(minn,mxr1+mxr2[i+]);
}
minn=min(minn,mxr2[]);
cout<<minn;
return ;
}
以其中一个雷达a为中心,从小到大排序各点到其距离,然后枚举该雷达管控的导弹数量,剩下的由雷达b管控
找最优解就行
数字统计
题目描述
请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。
比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出
现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6
次。
输入输出格式
输入格式:
输入文件名为 two.in。
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出格式:
输出文件名为 two.out。
输出共 1 行,表示数字 2 出现的次数。
输入输出样例
【输入样例1】
2 22
【输入样例2】
2 100
【输出样例1】
6
【输出样例2】
20
说明
1 ≤ L ≤R≤ 10000。
不用解释
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int L,R;
int ct(int n){
int ans=;
while(n){
if(n%==)ans++;
n/=;
}
return ans;
}
int main(){
scanf("%d%d",&L,&R);
int i,j;
int cnt=;
for(i=L;i<=R;i++){
cnt+=ct(i);
}
cout<<cnt;
return ;
}
接水问题
题目描述
学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的
供水量相等,均为 1。
现在有 n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从 1到 n 编号,i 号同学的接水量为 wi。接水开始时,1 到 m 号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学 j 完成其接水量要求 wj后,下一名排队等候接水的同学 k马上接替 j 同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j 同学第 x 秒结束时完成接水,则 k 同学第 x+1 秒立刻开始接水。若当前接水人数 n’不足 m,则只有 n’个龙头供水,其它 m−n’个龙头关闭。
现在给出 n 名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。
输入输出格式
输入格式:
输入文件名为 water.in。
第 1 行 2 个整数 n 和 m,用一个空格隔开,分别表示接水人数和龙头个数。
第 2 行 n 个整数 w1、w2、……、wn,每两个整数之间用一个空格隔开,wi表示 i 号同
学的接水量。
输出格式:
输出文件名为 water.out。
输出只有一行,1 个整数,表示接水所需的总时间。
输入输出样例
【输入样例1】
5 3
4 4 1 2 1
【输入样例2】
8 4
23 71 87 32 70 93 80 76
【输出样例1】
4
【输出样例2】
163
说明
【输入输出样例 1 说明】
第 1 秒,3 人接水。第 1 秒结束时,1、2、3 号同学每人的已接水量为 1,3 号同学接完
水,4 号同学接替 3 号同学开始接水。
第 2 秒,3 人接水。第 2 秒结束时,1、2 号同学每人的已接水量为 2,4 号同学的已接
水量为 1。
第 3 秒,3 人接水。第 3 秒结束时,1、2 号同学每人的已接水量为 3,4 号同学的已接
水量为 2。4 号同学接完水,5 号同学接替 4 号同学开始接水。
第 4 秒,3 人接水。第 4 秒结束时,1、2 号同学每人的已接水量为 4,5 号同学的已接
水量为 1。1、2、5 号同学接完水,即所有人完成接水。
总接水时间为 4 秒。
【数据范围】
1≤n≤10000,1≤m≤100 且 m≤n;
1≤wi≤100。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,w[];
int ans[];
int main(){
scanf("%d%d",&n,&m);
int i,j;
for(i=;i<=n;i++)scanf("%d",&w[i]);
int mi;
for(i=;i<=n;i++){
mi=;
for(int j=;j<=m;j++)if(ans[j]<ans[mi])mi=j;
ans[mi]+=w[i];
}
int mx=;
for(i=;i<=m;i++)if(ans[i]>mx)mx=ans[i];
cout<<mx;
return ;
}
NOIP2010普及组题解 -SilverN的更多相关文章
- NOIP2008普及组 题解 -SilverN
T1 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符( ...
- NOIP2008普及组题解
NOIP2008普及组题解 从我在其他站的博客直接搬过来的 posted @ 2016-04-16 01:11 然后我又搬回博客园了233333 posted @ 2016-06-05 19:19 T ...
- noip2010提高组题解
NOIP2010提高组题解 T1:机器翻译 题目大意:顺序输入n个数,有一个队列容量为m,遇到未出现元素入队,求入队次数. AC做法:直接开1000的队列模拟过程. T2:乌龟棋 题目大意:有长度为n ...
- [题解]noip2016普及组题解和心得
[前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...
- NOIP2002-2017普及组题解
虽然普及组一般都是暴力省一,但是有一些题目还是挺难的qwq个人觉得能进TG的题目会在前面打上'*' NOIP2002(clear) #include<bits/stdc++.h> usin ...
- noip2016普及组题解和心得
前言 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. (其实这篇博客只有题 ...
- NOIP2010普及组 三国游戏 -SilverN
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> usin ...
- 接水问题【NOIP2010普及组】优先队列
题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1. 现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些同学按接水顺序从 1到 n ...
- [Noip 2018][标题统计 龙湖斗 摆渡车 对称二叉树]普及组题解
啊喂,都已经9102年了,你还在想去年? 这里是一个Noip2018年PJ第二题打爆的OIer,错失省一 但经过了一年,我学到了很多,也有了很多朋友,水平也提高了很多,现在回看当时: 今年的Noip ...
随机推荐
- Click Magick – 下一代点击跟踪和链接管理
Click Magick 是新一代的广告跟踪和链接管理系统,让每一个点击都能给你带去更多的利润.它是专门设计来跟踪所有类型的点击计费广告,包括从谷歌,必应和 Facebook 的 PPC 广告,就好像 ...
- 仿iphone日历插件(beta)
前言 小伙伴们好,很久不见了.最近工作进入正常期了,所以慢慢的悠闲的时间久没有了,所以不能每天水一篇了. 最近也在听师傅(http://home.cnblogs.com/u/aaronjs/)的教导开 ...
- 【追寻javascript高手之路05】理解事件流
前言 新的一天又开始了,我们对今天对未来抱有很大期待,所以开始我们今天的学习吧,在此之前来点题外话,还是爱好问题. 周三的面试虽然失败,但是也是很有启迪的,比如之前我就从来没有想过爱好问题,我发现我的 ...
- angular源码分析:angular的源代码目录结构说明
一.读源码,是选择"编译合并后"的呢还是"编译前的"呢? 有朋友说,读angular源码,直接看编译后的,多好,不用管模块间的关系,从上往下读就好了.但是在我看 ...
- JScript中的条件注释详解(转载自网络)
JScript中的条件注释详解-转载 这篇文章主要介绍了JScript中的条件注释详解,本文讲解了@cc_on.@if.@set.@_win32.@_win16.@_mac等条件注释语句及可用于条件编 ...
- 避开unity的坑(转摘)
避开unity的坑(转摘) 以下总结一部分来自经验之谈,一部分来自其他人的分享.总的来讲,unity开发原型和效果.验证想法,确实是无比便利.可能一个月就把核心玩法做得差不多.强大的编辑器功能让我们也 ...
- Javascript的历史
阅读了JavaScript dom简史,从网上看了下,学问很深啊. 首先简单说下网景公司(Netscape)的发展史:1993年,美国国家超级计算机应用中心(NCSA),发表了一个浏览器,命名为“Mo ...
- jQuery实用小技巧-获取选中的的下拉框和返回头部滑动动画
//获取选中的下拉框 $('#someElement').find('option:selected'); $('#someElement option:selected'); //返回头部滑动动画 ...
- css中的background属性
第一次写博客,我就写写今天在编写网页的过程中,对background的两种运用,一是background中的线性渐变,对背景的渐变我其实是很少使用的,所以今天在写的时候我用css3的帮助手册,back ...
- WAMP集成环境的安装
暑假已经正式开始,我的学习计划也开始有了初步的进展,今天学习的主要内容是PHP的基础知识,以及在电脑上面安装了集成的WAMP(Windows+Apache+MySQL+PHP). PHP的基础知识: ...