三国游戏

题目内容不放了

由于电脑总是会拆掉最大的组合,所以玩家最多只能得到数值第二大的组合

那么找出第二大的组合就行了

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cmath>
  5. using namespace std;
  6. int d[][];
  7. int n;
  8. int fst,snd,ans;
  9. int main(){
  10. scanf("%d",&n);
  11. int i,j,x;
  12. for(i=;i<n;i++)
  13. for(j=i+;j<=n;j++)
  14. {
  15. scanf("%d",&d[i][j]);
  16. d[j][i]=d[i][j];
  17. }
  18. for(i=;i<=n;i++){
  19. fst=;snd=;
  20. for(j=;j<=n;j++){
  21. if(d[i][j]>fst){
  22. snd=fst;
  23. fst=d[i][j];
  24. }
  25. else if(d[i][j]>snd)snd=d[i][j];
  26. if(snd>ans)ans=snd;
  27. }
  28. }
  29. printf("1\n%d",ans);
  30. return ;
  31. }

导弹拦截

题目描述

经过 11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为 0 时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。

某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入工作。如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价。

输入输出格式

输入格式:

第一行包含 4 个整数x1、y1、x2、y2,每两个整数之间用一个空格隔开,表示这两套导弹拦截系统的坐标分别为(x1, y1)、(x2, y2)。 第二行包含 1 个整数 N,表示有 N颗导弹。接下来 N行,每行两个整数 x、y,中间用 一个空格隔开,表示一颗导弹的坐标(x, y)。不同导弹的坐标可能相同。

输出格式:

输出文件名 missile.out。

输出只有一行,包含一个整数,即当天的最小使用代价。

输入输出样例

输入样例#1:

  1. 0 0 10 0
  2. 2
  3. -3 3
  4. 10 0
输出样例#1:

  1. 18
输入样例#2:

  1. 0 0 6 0
  2. 5
  3. -4 -2
  4. -2 3
  5. 4 0
  6. 6 -2
  7. 9 1
输出样例#2:

  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。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. int n;
  6. int mxr2[];
  7. int fp;
  8. int xa,xb,ya,yb;//两套系统分别为a,b
  9. struct ds{
  10. int a,b;
  11. }di[];
  12. int ncmp(ds a,ds b){//以点到a的距离为标准从小到大排序
  13. return a.a<b.a;
  14. }
  15. int dis(int x1,int y1,int x2,int y2){//求距离
  16. return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
  17. }
  18. int main(){
  19. scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
  20. scanf("%d",&n);
  21. int i,j;
  22. for(i=;i<=n;i++){
  23. int x,y;
  24. scanf("%d%d",&x,&y);
  25. di[i].a=dis(x,y,xa,ya);
  26. di[i].b=dis(x,y,xb,yb);
  27. }
  28. sort(di+,di+n+,ncmp);
  29. int mx=;
  30. mxr2[n+]=;
  31. for(i=n;i>=;i--){
  32. if(di[i].b>mx){
  33. mx=di[i].b;
  34. }
  35. mxr2[i]=mx;
  36. }
  37. int minn=;
  38. for(i=;i<=n;i++){
  39. int mxr1=di[i].a;
  40. minn=min(minn,mxr1+mxr2[i+]);
  41. }
  42. minn=min(minn,mxr2[]);
  43. cout<<minn;
  44. return ;
  45. }

以其中一个雷达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:

  1. 【输入样例1
  2. 2 22
  3. 【输入样例2
  4. 2 100
输出样例#1:

  1. 【输出样例1
  2. 6
  3. 【输出样例2
  4. 20

说明

1 ≤ L ≤R≤ 10000。

不用解释

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. int L,R;
  6. int ct(int n){
  7. int ans=;
  8. while(n){
  9. if(n%==)ans++;
  10. n/=;
  11. }
  12. return ans;
  13. }
  14. int main(){
  15. scanf("%d%d",&L,&R);
  16. int i,j;
  17. int cnt=;
  18. for(i=L;i<=R;i++){
  19. cnt+=ct(i);
  20. }
  21. cout<<cnt;
  22. return ;
  23. }

接水问题

题目描述

学校里有一个水房,水房里一共装有 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:

  1. 【输入样例1
  2. 5 3
  3. 4 4 1 2 1
  4. 【输入样例2
  5. 8 4
  6. 23 71 87 32 70 93 80 76
输出样例#1:

  1. 【输出样例1
  2. 4
  3. 【输出样例2
  4. 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。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. int n,m,w[];
  6. int ans[];
  7. int main(){
  8. scanf("%d%d",&n,&m);
  9. int i,j;
  10. for(i=;i<=n;i++)scanf("%d",&w[i]);
  11. int mi;
  12. for(i=;i<=n;i++){
  13. mi=;
  14. for(int j=;j<=m;j++)if(ans[j]<ans[mi])mi=j;
  15. ans[mi]+=w[i];
  16. }
  17. int mx=;
  18. for(i=;i<=m;i++)if(ans[i]>mx)mx=ans[i];
  19. cout<<mx;
  20. return ;
  21. }

NOIP2010普及组题解 -SilverN的更多相关文章

  1. NOIP2008普及组 题解 -SilverN

    T1 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符( ...

  2. NOIP2008普及组题解

    NOIP2008普及组题解 从我在其他站的博客直接搬过来的 posted @ 2016-04-16 01:11 然后我又搬回博客园了233333 posted @ 2016-06-05 19:19 T ...

  3. noip2010提高组题解

    NOIP2010提高组题解 T1:机器翻译 题目大意:顺序输入n个数,有一个队列容量为m,遇到未出现元素入队,求入队次数. AC做法:直接开1000的队列模拟过程. T2:乌龟棋 题目大意:有长度为n ...

  4. [题解]noip2016普及组题解和心得

    [前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...

  5. NOIP2002-2017普及组题解

    虽然普及组一般都是暴力省一,但是有一些题目还是挺难的qwq个人觉得能进TG的题目会在前面打上'*' NOIP2002(clear) #include<bits/stdc++.h> usin ...

  6. noip2016普及组题解和心得

    前言 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. (其实这篇博客只有题 ...

  7. NOIP2010普及组 三国游戏 -SilverN

    #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> usin ...

  8. 接水问题【NOIP2010普及组】优先队列

    题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1. 现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些同学按接水顺序从 1到 n ...

  9. [Noip 2018][标题统计 龙湖斗 摆渡车 对称二叉树]普及组题解

    啊喂,都已经9102年了,你还在想去年? 这里是一个Noip2018年PJ第二题打爆的OIer,错失省一 但经过了一年,我学到了很多,也有了很多朋友,水平也提高了很多,现在回看当时: 今年的Noip ...

随机推荐

  1. Stickup – 轻松实现元素固定效果的 jQuery 插件

    粘贴是一个简单的 jQuery 插件,在页面滚动的时候固定一个元素到浏览器窗口的顶部,让其总是保持在视图中可见.这个插件作用于多页的网站,但是对于单页的布局有额外的功能.借助 CSS,还可以实现当前视 ...

  2. At.js – 用于 Web 应用程序的自动完成库

    At.js 是一个自动完成库,用来实现自动完成提示,表情等,就像你在 Github 或 Twitter 上看到的一样.它支持 HTML5 contentEditable 元素.你可以听任何字符,而不仅 ...

  3. pywebsocket的搭建

    Python可以搭建pywebsocket(Web服务器,python websocket),搭建pywebsocket必须要已经安装了python,点我查看python的下载与安装.在这篇Blog中 ...

  4. css中white-space的值pre-wrap

    CSS中white-space属性设置如何处理元素内的空白.默认值normal表示:空白会被浏览器忽略. white-space这个属性声明建立布局过程中如何处理元素中的空白符.值 pre-wrap ...

  5. 关于sharepoint2013的SPUtility.GetGenericSetupPath()方法过期解决办法

    有个时候需要读取layouts下的xml文件,因此需要知道路径,以前在SP2010用的SPUtility.GetGenericSetupPath()方法获取.现在SP2013提示过期否决 看2个结构分 ...

  6. 【Leafletjs】7.结合echart图表展示信息

    1.popup中添加图表信息 //定义marker var marker = L.marker(val.location).addTo(map); var content = '<div sty ...

  7. 操作系统开发系列—解释typedef void (*int_handler) ();

    于是我换了一个思路来理解这个typedef 我们首先看常规的变量定义: int INT//定义了一个名为INT的int型变量. char *c//定义了一个名为c的char型指针变量 void(*Fu ...

  8. RxJava 和 RxAndroid 一 (基础)

    1.RxJava 项目地址 https://github.com/ReactiveX/RxJava 2.RxAndroid 项目地址    https://github.com/ReactiveX/R ...

  9. SVN 常识

    1.相关博客 http://my.oschina.net/u/1780920/blog/425792 2. 文件红色:表示文件没有添加到服务器 绿色:表示没有更新新的修改到服务器 普通黑色:表示和服务 ...

  10. ios 取出subviews中指定subview

    for(UIView *view in subviews){ if(view.tag == 998) { //根据tag判断 } if([view isKindOfClass:[UIImageView ...