codeforces 496 div3(A-E1)(JAVA)
题目链接
A:水题代码
package codeforces496;import java.util.Scanner;public class testA {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();//总数量int a[]=new int[n];int number=-1;int value[]=new int[1000];for(int i=0;i<n;i++){a[i]=sc.nextInt();if(a[i]==1) {number++;}value[number]=a[i];}System.out.println(number+1);for(int i=0;i<number+1;i++){if(i!=number)System.out.print(value[i]+" ");elseSystem.out.print(value[i]);} }
}
B:水
package codeforces496;import java.util.Scanner;public class testB {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String a1=sc.next();String a2=sc.next();int min=a1.length()<a2.length()?a1.length():a2.length();for(int i=0;i<min;i++){if(a1.charAt(a1.length()-1-i)!=a2.charAt(a2.length()-1-i)){a1=a1.substring(0,a1.length()-i);a2=a2.substring(0, a2.length()-i);System.out.println(a1.length()+a2.length());break;}if(i==min-1) { System.out.println((a1.length()>a2.length()?a1.length():a2.length())-min);}}}
}
C:先打表储存数值。(足够大一点)。每次输入的数值先存起来(包过数量)。然后逐个比较。要充分考虑二的次幂的特性。找到比他大一点的那个2的次幂减去。查看是否在集合中。不要多想也不要少想。这个重要的是二的特性。
package codeforces496;import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;public class testC {public static void main(String[] args) { Scanner sc=new Scanner(System.in);Map<Integer,Integer>map=new TreeMap();Set<Integer>set=new HashSet(); long value[]=new long[32];value[0]=1;for(int i=1;i<32;i++){value[i]=2*value[i-1];}int n=sc.nextInt(); int a[]=new int[n];boolean jud[]=new boolean[n];for(int i=0;i<n;i++){a[i]=sc.nextInt();}for(int i=0;i<n;i++){if(map.containsKey(a[i])) {map.put(a[i], map.get(a[i])+1);}elsemap.put(a[i], 1);//judgel=a[i];}for(int i=n-1;i>=0;i--){ for(int j=31;j>0;j--){if(value[j-1]<=a[i]){int team=(int) (value[j]-a[i]);if(team==a[i]&&map.get(a[i])>=2) {set.add(team);break;}else if(team!=a[i]&&map.containsKey(team)) {set.add(team);set.add(a[i]);break;}}} }int count=0;for(int i:set){count+=map.get(i);}System.out.println(n-count);}
}
D:dp思想,判断当前的是否为0.0可以被整除,否则向上找(叠加数值)dp【j】小一市为临界点,如果可以被三整除,那么dp[i] 1;如果不。那么就dp和前一样dp[i]=dp[j]。
package codeforces496;import java.util.Scanner;public class testD {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String s=sc.next();char num[]=s.toCharArray();int number[]=new int[num.length];for(int i=0;i<number.length;i++){number[i]=num[i]-'0';}int dp[]=new int[number.length];if(number[0]%3==0)dp[0]=1;else dp[0]=0;for(int i=1;i<number.length;i++){if(number[i]%3==0)dp[i]=dp[i-1]+1;else{dp[i]=dp[i-1];//预处理int team=number[i];for(int j=i-1;j>=0;j--){ if(dp[j]!=dp[i]) {break;}else if(j>0) {if(dp[j]==dp[i]) {team+=number[j];if(team%3==0) {dp[i]=dp[j-1]+1;break;}}} else if(j==0){team+=number[j];if(team%3==0) {dp[i]=dp[j]+1;break;}}}}}System.out.println(dp[number.length-1]);}
}
E1:当初想的时候知道思路但是方法选的不对,复杂度太高。后来参考别人发现判断大于和小于的数量是很好的选择,大于就 1,小于就-1.先往左查找等于0的情况(0)时候中位数满足条件。在往右查找0时候,没找到一个0;number =左侧0数量。因为这个0可以和左侧0任意搭配。方法还是很巧妙的。
package codeforces496;import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;public class testE1 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();//总数量int m=sc.nextInt();int a[]=new int[n];int index=0;for(int i=0;i<n;i++){int jud=sc.nextInt();a[i]=jud>m?1:-1;if(jud==m) {index=i;a[i]=0;}}int dp[]=new int[n];int left[]=new int[n];Map<Integer,Integer>map=new TreeMap();dp[index]=0;map.put(0, 1);for(int i=index+1;i<n;i++){dp[i]+=dp[i-1]+a[i]; if(map.containsKey(dp[i])){map.put(dp[i], map.get(dp[i])+1);}elsemap.put(dp[i], 1);}long count =0;for(int i=index;i>=0;i--){if(i==index) {dp[index]=0;}else dp[i]+=dp[i+1]+a[i]; if(map.containsKey(-dp[i])){count+=map.get(-dp[i]);}if(map.containsKey(-dp[i]+1)){count+=map.get(-dp[i]+1);}} System.out.println(count);}
}
codeforces 496 div3(A-E1)(JAVA)相关推荐
- codeforces 498 div3(a-e java)
题目链接 A:水题 package codeforces498;import java.util.Scanner;public class testA {public static void main ...
- Codeforces Round #496 (Div. 3 ) E1. Median on Segments (Permutations Edition)(中位数计数)
E1. Median on Segments (Permutations Edition) time limit per test 3 seconds memory limit per test 25 ...
- codeforces 496 E. Distributing Parts(贪心+set二分)
题目链接:http://codeforces.com/contest/496/problem/E 题意:有n场演出,每场演出都有限制的高音和低音.然后m个人给出每个人的极限高音和低音还有出场次数. 最 ...
- codeforces 133A(HQ9+) Java
codeforces 字符串水题 输入的字符串中是否含有 H.Q.+ 这三种字符. 方法一: import java.io.BufferedReader; import java.io.InputSt ...
- codeforces 521div3(D Cutting Out)java
题目链接 测试用例: 很多情况会一直wa是因为题意没用读懂,进入自己的圈子无限wa,气的记录下来..下次不能这么天真. 题意:给数字n和k,n是数字串的长度,k是要将数字分成的份数.让这么多份的数字出 ...
- Codeforces 494Div3(ABCDJava编写)
Codeforces 494 div3 (ABCD) 从暑假开始做cf,感觉cf的题目很好,div3难度正好也挺适合我这种垃圾的. 题目链接 A:要找分割的最小次数,其实就是求同一个元素出现的最大次数 ...
- codeforces round25
1.A Binary Protocol 遍历字符串,如果是1,则累加,如果是0,输出当前的累加值 代码参考: OJ/A Binary Protocol.java at master · wuli249 ...
- 怎样分析 JAVA 的 Thread Dumps
当有障碍,或者是一个基于 JAVA 的 WEB 应用运行的比预期慢的时候,我们需要使用 thread dumps.如果对于你来说, thread dumps 是非常复杂的,这篇文章或许能对你有所帮助. ...
- java提示结果集已耗尽,java 结果集已耗尽
场景:java.sql.SQLException: 结果集已耗尽,解决办法 java.sql.SQLException: 结果集已耗尽,解决方法! 点击右边红色标题查看本文完整版:java.sql.S ...
最新文章
- ICE专题:ICE起步
- Aspose.Word 的常见使用(不用模板创建)
- Java单依赖性Dockerized HTTP端点
- she is so css什么意思,输入she is so什么意思 微信she is so什么梗
- 工作中,我们经常用到哪些SQL语句呢?
- python之路_前端基础之jQuery入门2
- [转载] R语言read.table函数
- 小程序对实体行业转型有何影响?
- asp.net ajax updatepanel中textbox 乱码问题 解决方案
- 8.2 使用Alpha混合技术
- 北风网盘点2016年中国程序员薪酬状况
- 计算机bios无法进入,启动系统后无法进入BIOS怎么办
- App运营推广过程中,比较实用的工具
- javaScript(ES5)中想方设法继承家产的方式详解
- GT9XX触摸屏双击唤醒功能分析
- SAP的一些术语表,中英对照
- JLINK V9修复方法
- MongoDB学习(一)
- UA OPTI544 量子光学12 半古典激光原理基础
- s2020gc54最美的花