媛在努力
描述在多媒体数据处理中,数据压缩算法尤为重要。小媛上完课后就想自己发明一个数据压缩算法。她想呀想,终于想到一个方法。在多媒体数据中有很多数据都是重复的,所以她想把连续相同的数据用数据出现的次数和数据本身表示。例如:1 1 1 2 3 3 3 3 3 压缩后及为3 1 1 2 5 3(表示3个1,1个2和5个3)。有想法后小媛就希望把它用代码实现了。但是大家都知道小媛现在整天都忙着苦B的复习考研,连电脑都摸不到。所以她希望作为ACMer的你帮她写一下。输入输入包含多组数据,第一行一个数字T代表输入样例数。
每组样例开始一个数M < 10^7表示这组数据中数字的个数,接下来M个数表示要被压缩的数字(数字都不超过int表示的范围)。输出每组测试数据输出一行数字对,如上面描述的一样。两个数字之间用一个空格隔开。样例输入
1
9 1 1 1 2 3 3 3 3 3
样例输出
3 1 1 2 5 3
public class Exam1208_1 {

    public static void main(String[] args) {

        String str="1 1 1 2 3 3 3 7 7 7 7 9 3 3 3 3";

        //1 1 1 2 3 3 3 7 7 7 7 9 3 3 3 3
//3 1 1 2 3 3 4 7 1 9 4 3 int[] ins=toIns(str);
int[] data=ins.clone(); //克隆一份数据保存起来 //编程调试代码
for(int x:ins){
System.out.print(x+" ");
}
System.out.println(); ArrayList<String> arr=toArrayList(ins); String temp="";
for(String s:arr){
temp+=s;
}
System.out.println(temp); String[] strs=temp.split(",");
for(String ss:strs){
System.out.print(ss.length()+" "+ss.charAt(0)+" "); } }
public static ArrayList<String> toArrayList(int[] ins) {
//1 1 1 2 3 3 3 7 7 7 7 9 3 3 3 3
//1 2 3 7 9 3
ArrayList<String> arr=new ArrayList<String>();
arr.add(ins[0]+"");
for(int i=1;i<ins.length;i++){
if(ins[i]!=ins[i-1]){
arr.add(",");
}
arr.add(ins[i]+"");
}
return arr;
}
public static int[] toIns(String str) {
String[] strs=str.split(" ");
int[] ins=new int[strs.length];
for(int i=0;i<strs.length;i++){
ins[i]=Integer.parseInt(strs[i]);
}
return ins;
}
}
代码2:
public class YuanZaiNuLi { public static void main(String[] args) {
int[] arr=new int[]{1,1,1,2,3,3,3,3,3,1,1,2}; //5 1 3 2
Me(arr,9);
}
public static void Me(int[] arr,int n){
int count=1;
int num=0;
for(int i=0;i<arr.length;i++){
num=arr[i];
if(i==arr.length-1){
System.out.print(count+" "+num);
break;
}
if(num==arr[i+1]){
count++;
}
if(num!=arr[i+1]){
System.out.print(count+" "+num+" ");
count=1;
} }
}
}
媛在努力另一种方式,按大小排序,统计所有重复的并在前面统计重复的次数,并放在数组中。
例如 1 1 1 2 2 9 2 2 1
输出 4 1 4 2 1 9
代码:
public class Text1 { public static void main(String[] args) {
String str = "9 2 1 1 1 2 3 3 3 3 3 3";// 测试一组数据
System.out.println(method(str));
}
public static ArrayList<Integer> method(String str) {
String[] array = str.split(" ");// 拆分
int[] arr = new int[array.length];
for (int i = 0; i < array.length; i++) {
arr[i] = Integer.parseInt(array[i]);// 字符串数组转整型数组
}
Arrays.sort(arr);// 数组排序
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);// 数组放集合里面
}
int count = 0;
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);// 去除重复的数
count++;
}
}
}
int listcount = arr.length - count;// 去重之后集合的长度
int sum = 0;// 统计个数
int[] ar = new int[listcount];
for (int i = 0; i < listcount; i++) {
for (int j = 0; j < arr.length; j++) {
if (list.get(i) == arr[j]) {
sum = sum + 1;
}
}
ar[i] = sum;//把重复的数放在数组里
sum = 0;
}
for (int i = 0; i < listcount; i++) {
list.add(i * 2, ar[i]);//把数组里面的数添加到集合每个元素的前面
}
return list;
}
}
华山论剑
描述
有n个剑客(编号1~n)相约华山比剑,分 m 次决斗,为了节省时间,每次决斗编号在[l,r]的剑客一起决斗,然后xi获胜。当进行下一次决斗,失败后的剑客可能再参与到决斗,m 次决斗后可能不止一位获胜者(没有失败过就视为获胜者)。
输入多组测试数据。
对于每组测试数据,第一行输入n和m。接下来输入m行,每行输入l,r,xi。
2 ≤ n ≤ 3*10^5; 1 ≤ m ≤ 3*10^5,l ≤ xi ≤ r输出每组测试数据输出n个数字,数字间用空格隔开。第i个数子表示第一次击败i号剑客的剑客编号,若i号剑客是最后的获胜者,输出0;样例输入
3 2
1 2 2
1 3 2
样例输出
2 0 2
public class Exam1208_3 {

    public static void main(String[] args) {
//3 2
//1 2 2
//1 3 2
//2 0 2(第一次击败i好选手的选手) /*
5 3
2 4 3
1 3 2
1 5 4 2 3 2 3 4 5 2
3 5 4
2 5 4
0 4 4 0 4 */ int n=5; //n个剑客
int m=3; //m次决斗 int[][] inss={
{2,4,3},
{1,3,2},
{1,5,4}
};
for(int i=1;i<=n;i++){
getResult(inss,i);
} }
public static void getResult(int[][] inss,int x){ //对于n个剑客,m次决斗
//击败第i个选手的选手
z:
for(int i=0;i<inss.length;i++){
for(int j=0;j<inss[i].length;j++){
if(x==inss[i][j] && inss[i][inss[i].length-1]!=x){
System.out.print(inss[i][inss[i].length-1]+" "); //取得最后一个数
break z;
}
// else if(x==inss[i][j]){ //如果第i个选手没有被击败过,输出0
// System.out.print(0+" ");
// break z;
// }
}
} //找不到 +0
} public static int[] toIns(String str) {
String[] strs=str.split(" ");
int[] ins=new int[strs.length];
for(int i=0;i<strs.length;i++){
ins[i]=Integer.parseInt(strs[i]);
}
return ins;
}
}

ACM 媛在努力 华山论剑的更多相关文章

  1. 2014 ACM省赛总结

    今年ACM省赛已经过去一个星期左右了,2年的ACM训练是该做个总结了,因为前几日去參加蓝桥杯总决赛,所以没来的及写总结,如今在这小小总结一下吧-- 依晰记得去年省赛时候的样子,如今感觉那时像是个无知的 ...

  2. 剪枝的定义&&hdu1010

    半年前在POJ上遇到过一次剪枝的题目,那时觉得剪枝好神秘...今天在网上查了半天资料,终于还是摸索到了一点知识,但是相关资料并不多,在我看来,剪枝是技巧,而不是方法,也就是说,可能一点实用的小技巧,让 ...

  3. 如约而至,Java 10 正式发布! Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势 努力的孩子运气不会太差,跌宕的人生定当更加精彩 优先队列详解(转载)

    如约而至,Java 10 正式发布!   3 月 20 日,Oracle 宣布 Java 10 正式发布. 官方已提供下载:http://www.oracle.com/technetwork/java ...

  4. 关于ACM的总结

    看了不少大神的退役帖,今天终于要本弱装一波逼祭奠一下我关于ACM的回忆. 从大二上开始接触到大三下结束,接近两年的时间,对于大神们来说两年的确算不上时间,然而对于本弱来说就是大学的一半时光.大一的懵懂 ...

  5. 第七届山东省ACM省赛

    激动人心的省赛终于结束了…平静下来再回头看真的感觉一波三折…先是赛前毫无预兆的查出突发性耳聋…伴随而来的就是左耳听力下降.轻微耳鸣.极个别情况下的头晕…不过这都还好,毕竟药物可以恢复…热身赛只过了一道 ...

  6. 【转载】ACM总结

    转自亲学长的总结 声明:本文是写给弱校ACM新手的一点总结,受自身水平和眼界所限,难免会有一些个人主观色彩,希望大牛指正 感谢@Wackysoft .@哇晴天 . @ 一切皆有可能1 的指教,现根据这 ...

  7. acm之poj题库1019方法

    认识了几个师弟,一直总想把自己的经验表达出来一些,让后面的人在更年轻的时候,认识到方向.努力. 昨天忽然想起自己在大学时候做了几天的acm,终于也没能坚持.然后就感觉带师弟们做下acm题目还是很不错. ...

  8. 对于有了ACM以后的生活

    我是大二学生,才接触ACM不到5个星期,因为受到我们班dalao的"引诱",去参加了一次我们学校举行的萌新杯,于是就入坑了,而我又在校外学习一些关于安全的知识,前几天一直纠结要不要 ...

  9. 电子科技大学第八届ACM趣味程序设计竞赛第四场(正式赛)题解

    A. Picking&Dancing 有一列n个石子,两人交替取石子,每次只能取连续的两个,取走后,剩下的石子仍然排成1列.问最后剩下的石子数量是奇数还是偶数. 读懂题意就没什么好说的. #i ...

随机推荐

  1. NIO buffer 缓冲区 API

    package bhz.nio.test; import java.nio.IntBuffer; public class TestBuffer { public static void main(S ...

  2. windows下使用SQLPLUS制作BAT执行SQL文件

    假如你把需要的SQL操作信息等均放入到一个SQL文件中,需要制作一个bat文件来执行这个sql文件,那么你的bat文件中,在sqlplus登录语句后的信息不能换行,换行的话则执行登录sqlplus后就 ...

  3. 微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003

    微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003 1 先检查网页的授权域名  不要带http:// 2 检查下自己的appid是否正确 我换了appid没上传,多花了时间 ...

  4. 如何清除svn的账号缓存信息(solaris)

    如果我们不小心输入svn账号错误的话,后面就一直提示认证失败,不能checkout代码. 这个是因为svn把你输入的账号进行了缓存. 如果我们想重新输入新的账号,必须要清除缓存 svn存储账号的目录在 ...

  5. UNITY UI字体模糊的原因

    根本原因:像素少. 解决办法:字体的 font size将像素设置大些,然后用scale来缩放大小

  6. <转>Linux环境进程间通信(五): 共享内存(下)

    http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html 系统调用mmap()通过映射一个普通文件实现共享内存.系统V则是通 ...

  7. 值得一做》关于一道暴搜BZOJ1024(EASY+)

    为什么要写这道题的DP捏? 原因很简单,因为为原来在openjudge上有一道题叫分蛋糕,有一个思路和这道题很像:“分锅”. 分锅:即为考虑计算当前情况的最优解时,把当前状态结果,分散为考虑当前状态的 ...

  8. 高性能Web服务器Nginx的配置与部署研究(2)Nginx入门级配置与部署及“Hello World”

    1. Nginx 程序包 目前最新的开发版本时1.1.12: Linux/Unix:nginx-1.1.12.tar.gz Windows:nginx-1.1.12.zip 我们可以下载稳定版尝试: ...

  9. 小程序动态生成二维码,生成image图片

    前端: <image src="{{img_usrl}}" style="width:100%;height:104px;" bindlongtap=&q ...

  10. iOS-Runtime字体适配

    你还在为适配字体大小发愁?  看这里: #define MyUIScreen 375 //UI设计原型图的手机尺寸宽度(6), 6p的--414 @implementation UIFont (Run ...