竞赛讨论区 > 一样的思路Java过不了C++可以,why
头像
fancy。
发布于 2020-09-17 10:44
+ 关注

一样的思路Java过不了C++可以,why

验证map里面的数据也是一模一样 为什么Java就挂了  求助!!
c++:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
typedef long long ll;
const int mod = 1e9+7;
const double eps = 1e-10;
const int maxn = 1e6+10;
using namespace std;
map<int,int> mp;
int n,x;
char s;
int INF = 0x7fffffff; 
int main(){
	scanf("%d",&n);
	for(int i = 0;i < n;i++){
		scanf("%d %c",&x,&s);
		if(s == '.'){
			mp[x]++;
			mp[x+1]--;
		}
		if(s == '+'){
			mp[-INF]++;
			mp[x]--;
		}
		if(s == '-'){
			mp[x+1]++;
			mp[INF]--;
		}
	}
	int ans = 0,sum = 0;
	for(auto x:mp){
		sum += x.second;
		ans = max(ans,sum);
	}
	cout<<ans<<endl;
	return 0;
}

Java:
package 入门赛一;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

public class Test4 {
	static int n;
	static int INF = 0x7fffffff;
	
	static Map<Integer, Integer> map = new TreeMap<>();
	public static void main(String[] args) throws IOException{
		BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
		StreamTokenizer re = new StreamTokenizer(r);
		re.nextToken(); n = (int)re.nval;
		for(int i = 0;i < n;i++){
			re.nextToken(); int x = (int)re.nval;
			char y = r.readLine().trim().charAt(0);
			if(y == '.'){ 
				if(map.get(x) != null) map.put(x,map.get(x)+1);
				else map.put(x, 1);
				if(map.get(x+1) != null) map.put(x+1,map.get(x+1)-1);
				else map.put(x+1, -1);
			}
			if(y == '+'){
				if(map.get(x) != null) map.put(x,map.get(x)-1);
				else map.put(x, -1);
				if(map.get(-INF) != null) map.put(-INF, map.get(-INF)+1);
				else map.put(-INF, 1);
			}
			if(y == '-'){
				if(map.get(x+1) != null) map.put(x,map.get(x+1)+1);
				else map.put(x+1, 1);
				if(map.get(INF) != null) map.put(INF, map.get(INF)-1);
				else map.put(INF, -1);
			}
		}
		int sum = 0;
		int ans = 0;
		for(Entry<Integer, Integer> entry : map.entrySet()){
		//	System.out.println(entry.getKey()+" "+entry.getValue());
			sum += entry.getValue();
			ans = Math.max(sum, ans);
		}
		System.out.println(ans);
	}
}


全部评论

(0) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐