2017.11.8 Noip2017 考前模拟赛
----------------------------------T1----------------------------------
——>足球联赛
题目描述
巴蜀中学新一季的足球联赛开幕了。
足球联赛有 n 只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分。
英勇无畏的小鸿是机房的主力前锋, 她总能在关键时刻踢出一些匪夷所思的妙球。
但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl,她的能力不止如此,她还能预测这个赛季所有球队的比赛结果。
虽然她能准确预测所有比赛的结果,但是其实她不怎么厉害,Mr.Gao 上数学课时她总是在 sleep,
因此她的脑里只有整数没有实数,而且,她只会 10 以内非负整数的加法运算,
因此她只有结果却无法知道谁会获得联赛的冠军。
小鸿想给冠军队伍的所有队员一个拥抱,所以她把计算结果的任务交给了你:
现在,给你一个 n*n 的矩阵表示比赛情况。
第 i 行第 j 列的字母表示在第 i 只队伍在主场迎战第 j 只队伍的比赛情况,W 表示主队赢,L 表示主队输,D 表示平局。
现在需要你给出最后能得到小鸿拥抱的队伍编号,如有多支队伍分数最高,按字典序输出编号。
输入输出格式
输入格式:
第一行一个整数 n。
接下来 n 行,每行 n 个字符,表示输赢情况。
第 i 行第 i 列为 - ,因为一只队伍不可能与自己比赛。
输出格式:
输出得分最高的队伍编号。如有多个在一行中输出,用一个空格分开。
输入输出样例
3
-WW
W-W
WW-
1 2 3
5
-DWWD
L-WLL
DD-WD
DDL-L
DDLL-
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=,f=;char c=getchar();
while(c<'' || c>'') { if(c=='-') f=-; c=getchar(); }
while(''<=c && c<='') x=x*+c-'',c=getchar();
return x*f;
} const int N = ;
int n;
struct points {
int id,w;
points() { w=; }
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=; i<=n; i++) {
p[i].id=i;
for(int j=; j<=n; j++) {
cin>>c;
if(c=='-') continue;
else if(c=='W') p[i].w+=;
else if(c=='D') p[i].w++,p[j].w++;
else if(c=='L') p[j].w+=;
}
}
sort(p+,p++n);
int x=p[].w;
for(int i=; i<=n; i++) {
if(p[i].w<x) break;
printf("%d ",p[i].id);
}
fclose(stdin);fclose(stdout);
return ;
}
----------------------------------------------------------------------
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 位)
输入输出样例
5 1 3
1 3
3 4
4 1
7 5
8 3
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=,f=;char c=getchar();
while(c<'' || c>'') { if(c=='-') f=-; c=getchar(); }
while(''<=c && c<='') x=x*+c-'',c=getchar();
return x*f;
} const int N = ;
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!=) vis[now]=true;
if(now==n- && cnt==) {
if(!vis[AB]) return;
dfs(now,,nowl);
}
if(now== && cnt==) {
for(int i=; i<n; i++) if(!vis[i]) return;
if(ans>nowl) {
ans=nowl;
return;
}
}
if(cnt==) {
for(int i=now+; i<n; i++) {
if(!vis[i] && i!=BA) {
dfs(i,,nowl+jl[now][i]);
vis[i]=false;
}
}
}
else {
for(int i=now-; i>=; i--) {
if(!vis[i] && i!=AB) {
dfs(i,,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=; i<n; i++)
P[i].x=read(),P[i].y=read();
for(int i=; i<n; i++)
for(int j=; j<n; j++) {
if(i==j) continue;
jl[i][j]=getjl(i,j);
}
dfs(,,0.00);
printf("%.2lf",ans);
fclose(stdin);fclose(stdout);
return ;
}
----------------------------------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,输出一个整数,表示该车车位的编号。
输入输出样例
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
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=,f=;char c=getchar();
while(c<'' || c>'') { if(c=='-') f=-; c=getchar(); }
while(''<=c && c<='') x=x*+c-'',c=getchar();
return x*f;
} const int C = ;
const int M = ;
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==) {
a[now].id=x;
memset(q,,sizeof(q));
int top=,w=;
for(int i=; i<=n; i++)
if(vis[i]) q[top++]=i;
for(int i=,Min,Max=; i<=n; i++) {
if(vis[i]) continue;
Min=M;
for(int j=,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=; i<n; i++)
if(a[i].id==x) {
id=a[i].w;
break;
}
vis[id]=false;
}
}
fclose(stdin);fclose(stdout);
return ;
}
2017.11.8 Noip2017 考前模拟赛的更多相关文章
- 2017.11.7 Noip2017 考前模拟赛
----------------------------------T1---------------------------------- ——>数学老师的报复 题目描述 11 班数学大佬 Y ...
- 2019.11.9 csp-s 考前模拟
2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...
- 2017.9.17校内noip模拟赛解题报告
预计分数:100+60+60=220 实际分数:100+60+40=200 除了暴力什么都不会的我..... T1 2017.9.17巧克力棒(chocolate) 巧克力棒(chocolate)Ti ...
- 2016.11.6 night NOIP模拟赛 考试整理
题目+数据:链接:http://pan.baidu.com/s/1hssN8GG 密码:bjw8总结: 总分:300分,仅仅拿了120份. 这次所犯的失误:对于2,3题目,我刚刚看就想到了正确思路,急 ...
- 【NOIP考前模拟赛】纯数学方法推导——旅行者问题
一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取. ...
- 【XJOI】【NOI考前模拟赛7】
DP+卡常数+高精度/ 计算几何+二分+判区间交/ 凸包 首先感谢徐老师的慷慨,让蒟蒻有幸膜拜了学军的神题.祝NOI2015圆满成功 同时膜拜碾压了蒟蒻的众神QAQ 填填填 我的DP比较逗比……( ...
- 2017.11.7~8模拟测试总结---暨NOIP2017考前对策
最后两天了,第三天就是NOIP2017--Day1了. 刚刚考完了这个学期从开学以来的最后一场模拟赛了.首先要对于这场模拟赛做一次深刻的反思. 考完才猛地惊叹这是最后一场模拟赛了,然而题目并不难,也保 ...
- [OI笔记]NOIP2017前(退役前)模拟赛的总结
好久没写blog了- 在noip2017前的最后几天,也就是在我可能将要AFO的前几天写点东西吧- 记录这最后几个月打的那些大大小小的模拟赛 一些比赛由于不允许公开所以就没有贴链接跟题面了- 2017 ...
- NOIp2017真题模拟赛 By cellur925
果然我还是最菜的==不接受反驳 (先考了day2喵喵喵) Day2 T1:奶酪 期望得分:100分 实际得分:100分 考察:并查集 思路:这题其实之前做过了==.思路还是比较清晰的,读入时预处理出可 ...
随机推荐
- VK Cup 2017 - Round 1 (CDE)
771C Bear and Tree Jumps 大意: 给定树,每步能走到距离不超过$k$的任意点,记$f(s,t)$为$s$到$t$的最少步数,求$\sum\limits_{s<t}f(s, ...
- flutter从入门到精通一
Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动.Web.桌面和嵌入式平台 flutter是基于dart语言开发的,我们将首先通过几章节 ...
- PEB TEB结构体使用
PEB TEB结构体使用一个可执行文件被OS加载到内存,并处理完成相关的模块加载,导入表处理……及其他必须处理后,形成一个进程.在OS内核中保存有一份关于这个进程的身份证信息,就是平常看到的HANDL ...
- 【转载】Sqlserver限制最大可使用内存
在Sqlserver的使用过程中,我们会发现随着运行时间的增长,Sqlserver占用的系统也越来越大,查了网上的相关资料说,Sqlserver在查询完相应数据后,为了下一次查询的性能,并不会马上释放 ...
- textarea与标签组合,点击标签填入标签内容,再次点击删除内容(vue)
需求:将textarea与span标签组合,点击标签自动填入标签文本内容,再次点击删除标签文本对应内容 原理:点击标签时,将标签内容作为参数,将内容拼接在textarea的value后面,再次点击标签 ...
- Java 之 打印流
打印流 1.概述 平常在控制台打印输出,是调用 print 方法和 println 方法完成的,这两个方法都来自于 java.io.PrintStream 类,该类能够方便地打印各种数据类型的值,是一 ...
- 使用SAP Leonardo上的机器学习服务提取图片的特征向量
要想提取图片的特征向量,首先得知道特征向量是什么. 我们假设这样一个服务场景,技师上门维修某设备,发现上面某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技师掏出自 ...
- (二)react-native开发系列之windows开发环境配置
之前写了react-native在mac上得环境搭建,但是如果只开发android的话,只要用windows系统就可以了,下面就来说下react-native的windows开发环境配置. 1.下载配 ...
- DB2新建编目及删除编目
场景:在添加一个新数据库的连接时,需要先建立此数据库的编目信息 新建: 1.获取数据库IP.端口.数据库名称 2.打开DB2客户端的“DB2命令窗口” 3.按以下命令执行 db2 catalog tc ...
- IntentService使用
说实话,对于这个类在我实际工作中并没有用到过,通常也只是用了它的父类Service,通过官方文档可以看出类的层次结构: 而在今年的一次面试当中,有个面试官提起了它,所以虽说目前还没有真实在项目中用它, ...