题目大意:给你两种颜色,然后给你一个颜色,只要把那种颜色的数量减少一个就行了
import java.util.Scanner;
public class Main {
static int maxn = 300 + 10;
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
int numa,numb;
String stra,strb;
stra=cin.next();
strb=cin.next();
numa=cin.nextInt();
numb=cin.nextInt();
String temp=cin.next();
if(temp.equals(stra))
{
numa--;
}
else if(temp.equals(strb))
{
numb--;
}
System.out.println(numa+ " "+numb);
}
}
题目大意:给你的字母都换成X,一开始还以为他要过滤掉空格。。。
import java.util.Scanner;
public class Main {
static int maxn = 300 + 10;
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
String str=cin.nextLine();
for(int i=0;i
题目大意:让你看看给你的数是不是都是不一样的,java map还是不熟的,不然直接map写起来就舒服了~
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int maxn = 300 + 10;
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
int a[]=new int [200000+100];
int n=cin.nextInt();
for(int i=0;i
题目大意:给你n个筛子,然后每一个筛子的最大点数都是不一样的是1~pi,概率一样,然后问你我要选择连续的K个筛子,我这K个要求是他们得到的点数期望值的和最大,并且这K个要连续取
思路:知道题意就好做了。。。。
就是求出来每一个的概率,我们最终可以发现他是 (1+2+...+pi)/pi =[(1+pi)*pi/2]/pi =(1+pi)/2。
然后整一个前缀和就行了,一开始java以为2e5 * 1e3不会T,高估了,搞一个前缀和就2e5的了
import java.util.Scanner;
public class Main {
static int maxn = 300 + 10;
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
double a[]=new double [200000+100];
int n=cin.nextInt();
int k=cin.nextInt();
a[0]=0;
for(int i=1;i<=n;i++)
{
double s=cin.nextDouble();
a[i]=a[i-1]+(s+1)/2;
}
double ans=0;
for(int i=k;i<=n;i++)
{
if(a[i]-a[i-k]>ans)
ans=a[i]-a[i-k];
}
System.out.println(ans);
}
}
题目大意:给你一个数str 可能会很大,然后问你从1~str中有多少个 特殊的数
所谓特殊的数 一个数的组成里面正好有K个不为0的数字 比如100 那他就是由1个不为0的数字组成的数
K题中给出
思路:这个题还是看到一位大佬代码想到的
其实暴力就可以,首先因为这上面的K是比较少的,只有1,2,3这三个
还有就是,我们只需要枚举他的每一个数的位置和每一个数是什么就可以了,最大不超过1e9,感觉挺好的思路,就是有点费脑袋
本来想着那个判断的地方是比较好写的,后来我哭了。。。
import java.util.Scanner;
public class Main {
static int maxn = 100 + 10;
static String str;
static int k,n;
static int cnt[];
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
cnt =new int[maxn];
str=cin.next();
k=cin.nextInt();
n=str.length();
int ans=0;
for(int i=0;i r)
return false;
if(l == 0)
return cnt[r]==0?false:true;
return cnt[r] - cnt[l - 1]==0?false:true;
}
public static boolean panduan1(int x,int a)
{
if(x!=0)
return true;
if(str.charAt(0)-'0' >= a)
return true;
return false;
}
public static boolean panduan2(int x,int y,int a,int b)
{
if(x!=0)
return true;
if(str.charAt(0)-'0'> a)
return true;
if(str.charAt(0)-'0' < a)
return false;
if(judge(x + 1, y - 1))
return true;
if(str.charAt(y)-'0'>= b)
return true;
return false;
}
public static boolean panduan3(int x,int y,int z,int a,int b,int c)
{
if(x!=0)
return true;
if(str.charAt(0)-'0'> a)
return true;
if(str.charAt(0)-'0'< a)
return false ;
if(judge(x + 1, y - 1))
return true;
if(str.charAt(y)-'0'> b)
return true;
if(str.charAt(y)-'0'< b)
return false;
if(judge(y + 1, z - 1))
return true;
if(str.charAt(z)-'0'>= c)
return true;
return false;
}
}
明天再整。。。