----------------------------------T1----------------------------------

——>足球联赛

题目描述

巴蜀中学新一季的足球联赛开幕了。

足球联赛有 n 只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分。

英勇无畏的小鸿是机房的主力前锋, 她总能在关键时刻踢出一些匪夷所思的妙球。

但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl,她的能力不止如此,她还能预测这个赛季所有球队的比赛结果。

虽然她能准确预测所有比赛的结果,但是其实她不怎么厉害,Mr.Gao 上数学课时她总是在 sleep,

因此她的脑里只有整数没有实数,而且,她只会 10 以内非负整数的加法运算,

因此她只有结果却无法知道谁会获得联赛的冠军。

小鸿想给冠军队伍的所有队员一个拥抱,所以她把计算结果的任务交给了你:

现在,给你一个 n*n 的矩阵表示比赛情况。

第 i 行第 j 列的字母表示在第 i 只队伍在主场迎战第 j 只队伍的比赛情况,W 表示主队赢,L 表示主队输,D 表示平局。

现在需要你给出最后能得到小鸿拥抱的队伍编号,如有多支队伍分数最高,按字典序输出编号。

输入输出格式

输入格式:

第一行一个整数 n。

接下来 n 行,每行 n 个字符,表示输赢情况。

第 i 行第 i 列为 - ,因为一只队伍不可能与自己比赛。

输出格式:

输出得分最高的队伍编号。如有多个在一行中输出,用一个空格分开。

输入输出样例

输入样例#1:

3
-WW
W-W
WW-

输出样例#1:

1 2 3

输入样例#2:

5
-DWWD
L-WLL
DD-WD
DDL-L
DDLL-

输出样例#2:

1

说明

对于 40%的数据,满足 N<=20

对于 100%的数据,满足 N<=50

思路=A=

  大模拟,如果主场赢了就+=3,输了就让另一个+=3(写成++,蠢哭了qaq),如果平局就双方++

代码酱=u=

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;inline int read() {int x=0,f=1;char c=getchar();while(c<'0' || c>'9') { if(c=='-') f=-1; c=getchar(); }while('0'<=c && c<='9') x=x*10+c-'0',c=getchar();return x*f;
}const int N = 60;
int n;
struct points {int id,w;points() { w=0; }bool operator < (const points &qwq ) const {return w > qwq.w;}
} p[N];int main() {freopen("soccer.in","r",stdin);freopen("soccer.out","w",stdout);n=read();char c;for(int i=1; i<=n; i++) {p[i].id=i;for(int j=1; j<=n; j++) {cin>>c;if(c=='-') continue;else if(c=='W') p[i].w+=3;else if(c=='D') p[i].w++,p[j].w++;else if(c=='L') p[j].w+=3;}}sort(p+1,p+1+n);int x=p[1].w;for(int i=1; i<=n; i++) {if(p[i].w<x) break;printf("%d ",p[i].id);}fclose(stdin);fclose(stdout);return 0;
}

View Code

----------------------------------------------------------------------

Ps:接下来就是单纯存个题=v=

----------------------------------------------------------------------

----------------------------------T2----------------------------------

——>最短路径

题目描述

平面内给出 n 个点,记横坐标最小的点为 A,最大的点为 B,现在小 Y 想要知道在每个点经过一次(A 点两次)的情况下从 A 走到 B,再回到 A 的最短路径。

但他是个强迫症患者,他有许多奇奇怪怪的要求与限制条件:

1.从 A 走到 B 时,只能由横坐标小的点走到大的点。

2.由 B 回到 A 时,只能由横坐标大的点走到小的点。

3.有两个特殊点 b1 和 b2, b1 在 0 到 n-1 的路上,b2 在 n-1 到 0 的路上。

请你帮他解决这个问题助他治疗吧!

输入输出格式

输入格式:

第一行三个整数 n,b1,b2,( 0 < b1,b2 < n-1 且 b1 <> b2)。n 表示点数,从 0 到 n-1 编号,b1 和 b2 为两个特殊点的编号。

以下 n 行,每行两个整数 x、y 表示该点的坐标(0 <= x,y <= 2000),从 0 号点顺序给出。

Doctor Gao 为了方便他的治疗,已经将给出的点按 x 增序排好了。

输出格式:

输出仅一行,即最短路径长度(精确到小数点后面 2 位)

输入输出样例

输入样例#1:

5 1 3
1 3
3 4
4 1
7 5
8 3

输出样例#1:

18.18

说明

20%的数据 n<=20

60%的数据 n<=300

100%的数据 n<=1000

对于所有数据 x,y,b1,b2 如题目描述.

T代码(暴力)

#include <iostream>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <cstdlib>
using namespace std;inline int read() {int x=0,f=1;char c=getchar();while(c<'0' || c>'9') { if(c=='-') f=-1; c=getchar(); }while('0'<=c && c<='9') x=x*10+c-'0',c=getchar();return x*f;
}const int N = 1015;
int n,AB,BA,t;
double ans=1e8,jl[N][N];
bool vis[N];
struct point {int x,y;
} P[N];double getjl(int a,int b) {int x=P[a].x,y=P[a].y,x2=P[b].x,y2=P[b].y;double p=max(x-x2,x2-x),q=max(y-y2,y2-y);p*=p;q*=q;return sqrt(p+q);
}void dfs(int now,int cnt,double nowl) {if(nowl>ans) return;if(now!=0) vis[now]=true;if(now==n-1 && cnt==1) {if(!vis[AB]) return;dfs(now,2,nowl);}if(now==0 && cnt==2) {for(int i=1; i<n; i++) if(!vis[i]) return;if(ans>nowl) {ans=nowl;return;}} if(cnt==1) {for(int i=now+1; i<n; i++) {if(!vis[i] && i!=BA) {dfs(i,1,nowl+jl[now][i]);vis[i]=false;} }}else {for(int i=now-1; i>=0; i--) {if(!vis[i] && i!=AB) {dfs(i,2,nowl+jl[now][i]);vis[i]=false;}}}
}int main() {freopen("paths.in","r",stdin);freopen("paths.out","w",stdout);n=read();AB=read();BA=read();for(int i=0; i<n; i++)P[i].x=read(),P[i].y=read();for(int i=0; i<n; i++)for(int j=0; j<n; j++) {if(i==j) continue;jl[i][j]=getjl(i,j);}dfs(0,1,0.00);printf("%.2lf",ans);fclose(stdin);fclose(stdout);return 0;
}

View Code

----------------------------------T3----------------------------------

——>阿 Q 的停车场

题目描述

刚拿到驾照的 KJ 总喜欢开着车到处兜风,玩完了再把车停到阿 Q 的停车场里,虽然她对自己停车的水平很有信心,

但她还是不放心其他人的停车水平,尤其是 Kelukin。

于是,她每次都把自己的爱车停在距离其它车最远的一个车位。

KJ 觉得自己这样的策略非常科学,于是她开始想:

在一个停车场中有一排车位,从左到右编号为 1 到 n,初始时全部是空的。

有若干汽车,进出停车场共 m 次。

对于每辆进入停车场的汽车,会选择与其它车距离最小值最大的一个车位,若有多个符合条件,选择最左边一个。

KJ 想着想着就睡着了,在她一旁的 Kelukin 想帮她完成这个心愿,但是他又非常的懒,不愿意自己动手,于是就把这个问题就留给了你:

在 KJ 理想的阿 Q 的停车场中,给你车辆进出的操作序列,依次输出每辆车的车位编号。

输入输出格式

输入格式:

第一行,两个整数 n 和 m,表示停车场大小和操作数;

接下来 m 行,每行两个整数 F 和 x

F 是 1 表示编号为 x 的车进停车场;

F 是 2 表示编号为 x 的车出停车场;

保证操作合法,即:

出停车场的车一定目前仍在停车场里;

停车场内的车不会超过 n;

输出格式:

对于所有操作 1,输出一个整数,表示该车车位的编号。

输入输出样例

输入样例#1:

7 11
1 15
1 123123
1 3
1 5
2 123123
2 15
1 21
2 3
1 6
1 7
1 8

输出样例#1:

1
7
4
2
7
4
1
3

说明

对 30%的数据 n<=1000 ,m<=1000

对 60%的数据 n<=200000,m<=2000

对 100%的数据 n,m<=200000,车的编号小于等于 10^6

T代码(暴力)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;inline int read() {int x=0,f=1;char c=getchar();while(c<'0' || c>'9') { if(c=='-') f=-1; c=getchar(); }while('0'<=c && c<='9') x=x*10+c-'0',c=getchar();return x*f;
}const int C = 100015;
const int M = 200025;
int n,m,F,x,now;
int q[M];
bool vis[C];
struct car {int id,w;
} a[M];int main() {freopen("park.in","r",stdin);freopen("park.out","w",stdout);n=read();m=read();while(m--) {F=read();x=read();if(F==1) {a[now].id=x;memset(q,0,sizeof(q));int top=0,w=1;for(int i=1; i<=n; i++)if(vis[i]) q[top++]=i;for(int i=1,Min,Max=0; i<=n; i++) {if(vis[i]) continue;Min=M;for(int j=0,y; j<top; j++) {y=max(i-q[j],q[j]-i);if(y<Min) Min=y;}if(Max<Min) Max=Min,w=i;}vis[w]=true;a[now++].w=w;printf("%d\n",w);}else {int id;for(int i=0; i<n; i++)if(a[i].id==x) {id=a[i].w;break;}vis[id]=false;}}fclose(stdin);fclose(stdout);return 0;
}

View Code

转载于:https://www.cnblogs.com/zxqxwnngztxx/p/7804202.html

2017.11.8 Noip2017 考前模拟赛相关推荐

  1. 【NOIP考前模拟赛】纯数学方法推导——旅行者问题

    一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取. ...

  2. 2017蓝桥杯java本科模拟赛

    1.标题:算年龄 英国数学家德摩根出生于19世纪初叶(即18xx年). 他年少时便很有才华.一次有人问他的年龄,他回答说: "到了x的平方那年,我刚好是x岁". 请你计算一下,德摩 ...

  3. 2017.10.14 【FOTILE模拟赛】L 失败总结

    很有代表性的一道题,什么都想不出来 首先有一个套路:区间的问题可以通过前缀和化成两点的问题 然后就是在区间找任意一/两个点的异或值最大, 在trie树上按二进制位从大到小贪心找就可以了 多组询问,所以 ...

  4. NOIP2017模拟赛总结(2017.10.30-2017.11.1)

    第三篇博客,放上2017.10.30-2017.11.1的题. 2017.10.30 Problem A 题目大意: 有一排nnn棵果树和一个容量为sss的果篮,从前往后摘果,如果当前果树的果子数量不 ...

  5. 2017.6.11 校内模拟赛

    题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛 T1 自己在纸上模拟一下后就会发现 可以用栈来搞一搞事情 受了上次zsq 讲的双栈排序的启发.. 具体就是将原盘子大小cop ...

  6. 2020年 第11届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  7. NOIP2017提高组模拟赛4 (总结)

    NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...

  8. 9.11 myl模拟赛

    9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...

  9. {小结}2016.6.11【初中部 NOIP提高组 】模拟赛C

    2016.6.11[初中部 NOIP提高组 ]模拟赛C No.1!!! 100+33.3+10+90=233.3 23333 1298. 牛棚(graze2.pas/c/cpp) 题解 1299. 洗 ...

最新文章

  1. 【数据结构与算法】之深入解析“修剪二叉搜索树”的求解思路与算法示例
  2. PostgreSQL和MySQL技术全面剖析
  3. 怎么让Go Modules使用私有依赖模块
  4. 京东:应届博士生年薪最高达200万元!确认过眼神,是我羡慕不来的人
  5. 用fileupload处理文件上传
  6. MyEclipse的代码提示功能
  7. select2多选框无法手动排序问题[转载]
  8. python numpy和pandas做数据分析时去掉科学记数法显示
  9. java实现一个电子书下载系统
  10. 用树莓派3B+实现智能语音识别
  11. C4D插件X-Particles粒子特效(一)
  12. 利用反射等离激元超表面的模拟光计算
  13. 『UE4数字孪生』开发流程浅析(持续更新)
  14. 软件工程网络15结对编程作业(201521123062)
  15. Flask框架二 Jinja2
  16. PostgreSQL数据库存储结构
  17. Toast类实现消息提示框
  18. 前端加密中文,后端解密java
  19. Atlas:手淘Native容器化框架和思考-玄黎
  20. POI 设置单元格背景色,背景色编码与实际颜色对照表(SXSSFWorkbook4.1.2)

热门文章

  1. 计算机操作工 试题,计算机系统操作工试题
  2. ORA-01000: maximum open cursors exceeded问题处理
  3. 笔记1 标识符与基本数据类型
  4. 写给大忙人看的 - Java中图片压缩上传至MinIO服务器(4)
  5. 134179-38-7,N3-PEG3-NH2,Azide-PEG3-Amino叠氮-三聚乙二醇-氨基的化学性质
  6. Teamcity NuGet Installer
  7. C#开发BIMFACE系列19 服务端API之获取模型数据4:获取多个构件的共同属性
  8. 平均股价的时间序列图形_如何用公式表达股票平均价格
  9. 苹果手机来电铃声设置方法
  10. 来了!被誉为“世界新七大奇迹”的大兴机场正式投运!它有多牛?你想知道的都在这里!...