AcWing 1204. 钻空子的读入方式
原题链接
简单
作者:
chaosliang
,
2021-01-26 14:54:52
,
所有人可见
,
阅读 9487
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5+5, INF = 0x3f3f3f3f;
int ha[N];
int main()
{
int n;
cin >> n;//这个读入没什么用
int minv = INF, maxv = -INF;
int tp;
while(cin >> tp)//直接读到文件尾部停止
{
if(tp < minv) minv = tp;
if(tp > maxv) maxv = tp;
ha[tp] ++;
}
int ans1 = 0, ans2 = 0;
for(int i = minv; i <= maxv; ++ i)
{
if(ha[i] == 0) ans1 = i;
if(ha[i] == 2) ans2 = i;
}
cout << ans1 << " " << ans2 << endl;
}
定一个全局数组如果没有数据输入时会等于0;
所以可以用等0这个边界来找出输入多少个数据;
测评只得了50分,有人知道怎么改吗
tql
这个哈希挺溜
一开始就想用这个,但以为输入样例没有文件结束符行不通。。。
while(cin >> tp) 为什么会在文件尾部停止啊?
cin>>tp如果读取成功,会返回true,如果读取失败会返回false,文件结尾就结束读取了,返回false
好的,谢谢回复
也可以这样
https://www.acwing.com/solution/content/108565/
对,scanf版本
超时,过不了
爱辽爱辽,我之前想用vector钻空子,发现不好使,题主有高见吗
那你需要判断每一行结束,这个需要一次性读取一行然后分割数,感觉就没必要的
要么直接学流式读入,要么就直接读到输入结束不考虑行,感觉这两种比较通用
题主说的有道理,受教了
大佬nb
为什么题目可以通过,但是我自己的编译器的话 自己输入完会没有响应呀?
是这样的,那个while(cin >> tp)是这样理解的:当读到文件结尾时cin>>tp返回值是0,还没到结尾的话返回值是1。这样的话,在oj系统上每一组测试数据其实是一组文件,当读入这组文件到结尾就会跳出循环输出结果。但是在本地的运行的话,应该是在黑屏终端下面的,你输入了很多数据,但是他无法判断你是否输入结束(就是到文件结尾),从而不能跳出循环。这个时候你需要在自己输完之后手动加一个命令ctrl+c或者ctrl+d (平台不同的话两个都试试看),表示到达文件结尾,然后就有答案了。
是这样子
感谢题主的解释,疑惑的点解决了
不客气哈
谢谢!
不客气。有帮助就行哈
不应该是ctrl+z吗
这怎么是歪门邪达呢?我觉得这个方法hin好啊!
正规的流读入还是要学的,逃了这一次后面还有呢,迟早要学,多掌握点也好
别看这种歪门邪道了,好好学习
大佬,请问哪个横扫千军法,所有情况都适用吗,有没有特殊情况,那y总为什么还要有stringstream写呢
不通用哈,这题用这个方法钻了空子,但是真正学习还是要脚踏实地哈哈。这个方法只是娱乐的,哈哈
后面好像还有一题也可以这么读吧,往后做就知道了。但是还是推荐学一下sstream,当时我不会那方法,现在碰到还是不会,所以还是要学一下比较好
那请问大佬现在会用stringstream的方法吗,我在网上查了这个用法,但是大部分的用法是直接赋值给一个数
getline(cin, line); // 忽略掉第一行的回车
while (cnt – )
{
getline(cin, line);
stringstream ssin(line);
y总这个里面的stringstream ssin(line) 这一行不是很懂,我看网上的资料都是直接赋值的,想问一下这个括号是什么意思,如果大佬有网站有解释这一部分可以发一下吗,谢谢啦
其实我不太懂,这个是语法吧。我估计大致意思就是:把line的内容放到一个流中(ssin),然后从这个流(ssin >> a[n])中读取数据(这个读取过程可以类比于cin >> a[n],只不过cin是黑屏终端,这里是刚刚定义的那个放了line数据的流。除了读取的位置不一样,其他的和cin用法差不多,所以ssin也是会用空格隔开的)
你可以先按照这个思路去记一记这个代码哈,主要是语法需要记。如果我理解有误,大家也可以回复一起看到,一起学习
这个活动后面还会有一次这个读入方式,到时候可以练习。其他题还有acwing1590, 可以练习。我比较菜,只能帮到这里了
好的,谢谢啦
笑死,横扫千军法2333
学了也记不住,因为基本不考,刷题基本用不到然后就会忘记,其实while(cin)完全够用了
吊吊吊
好家伙我直呼内行