验证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) 回帖