【九度OJ合集】P1359-1414
2014-04-22 10:15
417 查看
p1402
import java.io.BufferedInputStream;
import java.io.StreamTokenizer;
import java.util.BitSet;
public class Exercise1402 {
public static void main(String[] args) throws Exception {
StreamTokenizer sc = new StreamTokenizer(new BufferedInputStream(
System.in));
while (sc.nextToken() != StreamTokenizer.TT_EOF) {
int n = (int) sc.nval;
BitSet bitSet = new BitSet(1000001);
BitSet flag = new BitSet(1000001);
int k = 0;
for (int i = 0; i < n; i++) {
sc.nextToken();
int j = (int) sc.nval;
if (!flag.get(j)) {
if (bitSet.get(j)) {
flag.set(j);
k--;
} else {
bitSet.set(j);
k++;
}
}
}
System.out.println(k);
if (k != 0) {
int p = 0;
StringBuilder sb = new StringBuilder();
for (int i = 1; i < 1000001 && p < k; i++)
if (bitSet.get(i) && !flag.get(i)) {
if (p == 0)
sb.append(i);
else
sb.append(" " + i);
p++;
}
System.out.println(sb);
}
}
}
}
位操作,stringbuilder线程不安全,效率更高
import java.io.BufferedInputStream;
import java.io.StreamTokenizer;
public class Exercise1402_2 {
public static void main(String[] args) throws Exception {
StreamTokenizer sc = new StreamTokenizer(new BufferedInputStream(
System.in));
while (sc.nextToken() != StreamTokenizer.TT_EOF) {
int n = (int) sc.nval;
StringBuffer sb=new StringBuffer();
int[] a=new int[1000001];
int k=0;
for(int i=0;i<n;i++)
{
sc.nextToken();
int j=(int) sc.nval;
a[j]=a[j]+1;
if(a[j]==1)
k++;
if(a[j]==2)
k--;
}
System.out.println(k);
if(k!=0)
{
int j=0;
for(int i=1;i<a.length&&j<=k;i++)
if(a[i]==1)
{
if(j==0)
sb.append(i);
else
sb.append(" "+i);
j++;
}
System.out.println(sb);
}
}
}
}
数组模拟
import java.io.BufferedInputStream;
import java.io.StreamTokenizer;
import java.util.BitSet;
public class Exercise1402 {
public static void main(String[] args) throws Exception {
StreamTokenizer sc = new StreamTokenizer(new BufferedInputStream(
System.in));
while (sc.nextToken() != StreamTokenizer.TT_EOF) {
int n = (int) sc.nval;
BitSet bitSet = new BitSet(1000001);
BitSet flag = new BitSet(1000001);
int k = 0;
for (int i = 0; i < n; i++) {
sc.nextToken();
int j = (int) sc.nval;
if (!flag.get(j)) {
if (bitSet.get(j)) {
flag.set(j);
k--;
} else {
bitSet.set(j);
k++;
}
}
}
System.out.println(k);
if (k != 0) {
int p = 0;
StringBuilder sb = new StringBuilder();
for (int i = 1; i < 1000001 && p < k; i++)
if (bitSet.get(i) && !flag.get(i)) {
if (p == 0)
sb.append(i);
else
sb.append(" " + i);
p++;
}
System.out.println(sb);
}
}
}
}
位操作,stringbuilder线程不安全,效率更高
import java.io.BufferedInputStream;
import java.io.StreamTokenizer;
public class Exercise1402_2 {
public static void main(String[] args) throws Exception {
StreamTokenizer sc = new StreamTokenizer(new BufferedInputStream(
System.in));
while (sc.nextToken() != StreamTokenizer.TT_EOF) {
int n = (int) sc.nval;
StringBuffer sb=new StringBuffer();
int[] a=new int[1000001];
int k=0;
for(int i=0;i<n;i++)
{
sc.nextToken();
int j=(int) sc.nval;
a[j]=a[j]+1;
if(a[j]==1)
k++;
if(a[j]==2)
k--;
}
System.out.println(k);
if(k!=0)
{
int j=0;
for(int i=1;i<a.length&&j<=k;i++)
if(a[i]==1)
{
if(j==0)
sb.append(i);
else
sb.append(" "+i);
j++;
}
System.out.println(sb);
}
}
}
}
数组模拟
相关文章推荐
- Public Key and Private Keys
- AMD_Catalyst_14.4_RC_V1.0_byTimer0677
- Apache的25个面试题
- 活用修改SRV记录来手动更改域控制器的冗余和负载均衡
- Hadoop 2.2.0 单节点安装
- SecureCRT全屏切换的快捷键
- CAShapeLayer(持续更新)
- Servlet生命周期与工作原理
- javascript格式化时间
- 将字符串转换成整数
- Vim对多行文本操作
- OFBIZ分享:产品分类之BEST SELLING (最好销售的分类)
- php调用c++程序实现web访问c++程序
- 如何判断网站是什么语言开发的
- Filter过滤器的作用和工作原理
- Equalizer vs2010 编译 注意问题
- android ndk开发
- 获取url参数和时间格式化
- 系统拆分全纪实
- SSD软件技术组发布安卓版手机OA,样图赏析