光棍节练习赛1、2题题解与反思
来源:互联网 发布:淘宝货源插件 编辑:程序博客网 时间:2024/04/29 18:33
第二篇题解:
B. usaco2017feb_bronze Why Didthe Cow Cross the Road1
题目描述
猫为什么过马路是一个历史悠久的问题,并且得到了科学界极大的重视。令人惊讶的是,关于犬过马路的研究文献却很少。犬国军政大臣HSQ意识到了问题的重要,于是他与犬国大学合作研究这一问题。HSQ的工作就是记录犬穿过马路的次数,他认真的记录了关于犬的位置的数据,并在一天内进行了一系列观察。它记录了每只犬的编号和特在马路的哪一侧(编号是个整数且小于等于10,因为犬国只有10只犬)根据农民约翰记录的数据,请帮助他计算确定的犬过马路的次数。如果连续看到一只犬出现在道路的两侧,就会确认过了一次马路
输入格式
第一行输入包含观察次数N,一个最多为100的正整数。
接下来N行每一行包含一个观察结果,由两个数构成,第一个数是犬编号,第二个数是0或1,表示位置(道路一侧为0,另一侧为1)。
输出格式
一个数据,输出过马路次数。。
样例数据
input
8
3 1
3 0
6 0
2 1
4 1
3 0
4 0
3 1
output
3
在这个例子中,犬3过马路两次特首先出现在第1侧,然后出现在第0边,然后再出现在第1边。犬4过马路一次。犬2和6似乎没有过马路。
数据规模与约定
翻译来自2020届: @102黄加瑜 @102慕昊天 @102叶景楠 @周靖涵
时间限制:1s1s
空间限制:256MB
这题我也没解,我一开始就没有看懂题目,然后悲剧了……不过还好,对了样例。
思路:这题有很多解法,我也不知道很多(香菇蓝瘦),现在介绍一位大佬的解法。
代码如下:
#include<bits/stdc++.h>
usingnamespace
std
;
intmain()
{
int
n
,x
,y
,s
=0;
cin
>>n
;
int
a
[11];
for(int
i
=1;i
<=10;i
++)
a
[i
]=2;
for(int
i
=1;i
<=n
;i
++)
{
cin
>>x
>>y
;
if(
a
[x
]!=y
&&a
[x
]!=2)
s
++;
a
[x
]=y
;
}
cout
<<s
;
return
0;
}
具体的没看太懂……(呜呜呜),像我们这种蒟蒻,只能膜拜。
大概就是在两边马路不在一边,就累加(我怎么没想到呢,被自己蠢哭了)。
操作:输入;
赋初值(不能是0或1);
循环并判断:是否不等于初值并不等于上次输入,成立则累加;
输出。
完~~~~~~;
第二题:
想哭~~,为什么会有银组题……
题目描述
农夫约翰发现,当他的奶牛在附近有另一头奶牛获得其他奶牛支持时候,他就更容易挤牛奶了。因此,他想把他的M头奶牛(M < 1000000000,M是偶数)分割为M/2对。然后,每一对将被引到谷仓里的一个单独的小隔间里挤奶。每一个隔间的挤牛奶将同时进行。
让事情变得有点复杂的是,每一个农夫约翰的奶牛都有不同的产奶量。如果奶牛产奶量是A和B,那么就需要用A+B的时间来给它们挤奶。
请帮助农场主约翰确定整个挤奶过程所需的最短时间。
输入格式
第一行为N(1<N<100 000)接下来的N行每一行都有两个整数x,y,表示有x头奶牛的产奶量为y(1≤y≤1,000,000,000)。x的和是整数M。
输出格式
输出整个过程的最短时间。
样例数据
input
3
1 8
2 5
1 2
output
10
样例说明:这里 4头奶牛的产奶量为2,5,5,8。显然,将他们分为2+8和5+5所需的时间最短(其他任意分配都会导致有一组奶牛的时间超过10),所需时间为10
数据规模与约定
翻译来自 2020届杨崇烨胡家烨司胜杰周玥
时间限制:1s1s
空间限制:256MB
这题想都没想去做,混了个样例;
还是大佬代码:
#include<bits/stdc++.h>
usingnamespace
std
;
struct niu{
int
b
,c
;
}a
[100010];
int
x
,y
,m
,n
;
int
mx
;
intcmp(niu
x
,niuy
){
return
x
.c
<y
.c
;
}
intwork(){
x
=1;y
=n
;mx
=0;
while
(
x
<=y
){
int
sum
=a
[x
].c
+a
[y
].c
;
if
(
sum
>mx
)mx
=sum
;
if(
a
[x
].b
>a
[y
].b
){
a
[x
].b
-=a
[y
].b
;
y
--;
}
if(
a
[x
].b
==a
[y
].b
){
x
++;y
--;
}
if(
a
[x
].b
<a
[y
].b
){
a
[y
].b
-=a
[x
].b
;
x
++;
}
}
return
mx
;
}
intmain(){
scanf("%d",&
n
);
for
(int
i
=1;i
<=n
;i
++)
scanf("%d%d",&
a
[i
].b
,&a
[i
].c
);
sort(
a
+1,a
+n
+1,cmp
);
work();
printf("%d",
mx
);
return
0;
}
这次是真大佬:我表示我看不懂,更纪念品分组差不多(该死的背包、动态规划),具体自行理解吧(没办法,我看不懂)…………
完~~~~~;
- 光棍节练习赛1、2题题解与反思
- 普及组模拟题1、4题题解与反思
- 题解&反思(2)
- 20171214普及组测试题解与反思1、3
- 阿凡提与光棍节
- 校赛反思和题解
- 2013 长春网络赛 水题题解&反思
- 题解+反思
- 题解+反思
- 2017-光棍节-11-11,17级周赛题解
- 热烈祝贺《光棍节两光棍的对话》发表1周年
- 反思与总结1
- 团体程序设计天梯赛-练习集 L1-046. 整除光棍
- 光棍节,我与LoveGate相伴
- 光棍节
- 光棍节
- 光棍节
- 光棍节
- Hdfs 数据块丢失处理
- android系统常用URI
- mysql--表拆分
- 仿知乎广告效果
- 算法爱好者——最接近的三数之和 ? 待解决
- 光棍节练习赛1、2题题解与反思
- Hadoop 端口
- 指南:在 linux 下的 Oracle Database 11g 中安装 Oracle Enterprise Manager 10g Grid Control 第 5 版
- python多线程
- 测试
- Mybatis中#与$的区别
- Mybatis查询数据库空字段不返回
- sort命令文件过滤分割与合并
- LaTex各种箭头的输入