BestCoder Round #11 (Div. 2) 题解
HDOJ5054 Alice and Bob
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 302 Accepted Submission(s): 229
corner of the Square, Alice in the upper right corner of the the Square. Bob regards the lower left corner as the origin of coordinates, rightward for positive direction of axis X, upward for positive direction of axis Y. Alice regards the upper right corner
as the origin of coordinates, leftward for positive direction of axis X, downward for positive direction of axis Y. Assuming that Square is a rectangular, length and width size is N * M. As shown in the figure:

Bob and Alice with their own definition of the coordinate system respectively, went to the coordinate point (x, y). Can they meet with each other ?
Note: Bob and Alice before reaching its destination, can not see each other because of some factors (such as buildings, time poor).
10 10 5 5
10 10 6 6
YES
NO
/**
* Created by ckboss on 14-10-3.
*/
import java.util.*; public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
int N=in.nextInt();
int M=in.nextInt();
int x=in.nextInt();
int y=in.nextInt();
if(x==N-x&&y==M-y)
System.out.println("YES");
else
System.out.println("NO");
}
}
}
HDOJ5055 Bob and math problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 812 Accepted Submission(s): 313
There are N Digits, each digit is between 0 and 9. You need to use this N Digits to constitute an Integer.
This Integer needs to satisfy the following conditions:
- 1. must be an odd Integer.
- 2. there is no leading zero.
- 3. find the biggest one which is satisfied 1, 2.
Example:
There are three Digits: 0, 1, 3. It can constitute six number of Integers. Only "301", "103" is legal, while "130", "310", "013", "031" is illegal. The biggest one of odd Integer is "301".
Each case starts with a line containing an integer N ( 1 <= N <= 100 ).
The second line contains N Digits which indicate the digit $a_1, a_2, a_3, \cdots, a_n. ( 0 \leq a_i \leq 9)$.
3
0 1 3
3
5 4 2
3
2 4 6
301
425
-1
/**
* Created by ckboss on 14-10-3.
*/
import java.util.*; public class Main { static int[] num = new int[10];
static char[] ans = new char[110];
static int nt;
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n;
while(in.hasNext()){
n=in.nextInt();
int flag=0;
int MinJ=111;
Arrays.fill(num,0); nt=0;
for(int i=0;i<n;i++){
int x=in.nextInt();
num[x]++;
if(x%2==1){
if(x<MinJ) MinJ=x;
flag++;
}
}
if(flag==0)
{
System.out.println("-1");
continue;
}
num[MinJ]--;
for(int i=9;i>=0;i--){
for(int j=num[i];j>0;j--){
ans[nt++]=(char)('0'+i);
}
}
ans[nt++]=(char)(MinJ+'0');
flag=0;
for(int i=0;i<nt;i++){
if(ans[i]=='0' && flag==0){
flag=0; break;
}
flag=1;
System.out.print(ans[i]);
}
if(flag==1)
System.out.println("");
else
System.out.println("-1");
}
}
}
HDOJ5056 Boring count
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 615 Accepted Submission(s): 242
For each case, the first line contains a string which only consist of lowercase letters. The second line contains an integer K.
[Technical Specification]
1<=T<= 100
1 <= the length of S <= 100000
1 <= K <= 100000
3
abc
1
abcabc
1
abcabc
2
6
15
21
O(n)贪心...
/**
* Created by ckboss on 14-10-3.
*/
import java.util.*; public class Main { static long[] num = new long[30]; public static void main(String[] args){
Scanner in = new Scanner(System.in);
int T_T=in.nextInt();
while(T_T-->0){
String st=in.next();
int k=in.nextInt();
Arrays.fill(num,0);
int be=0,ed=0;
long ans=0;
for(int i=0,sz=st.length();i<sz;i++){
int id=(int)(st.charAt(i)-'a');
num[id]++;
if(num[id]>k){
for(;be<=ed;be++){
ans+=ed-be+1;
num[st.charAt(be)-'a']--;
if(st.charAt(be)-'a'==id) {
be++;
break;
}
}
}
ed=i;
}
for(;be<=ed;be++){
ans+=ed-be+1;
num[st.charAt(be)-'a']--;
}
System.out.println(ans);
}
}
}
HDOJ5057 Argestes and Sequence
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 603 Accepted Submission(s): 152
can be one of the following:
S X Y: you should set the value of a[x] to y(in other words perform an assignment a[x]=y).
Q L R D P: among [L, R], L and R are the index of the sequence, how many numbers that the Dth digit of the numbers is P.
Note: The 1st digit of a number is the least significant digit.
For each case, the first line contains two numbers N and M.The second line contains N integers, separated by space: a[1],a[2],...,a[n]—initial value of array elements.
Each of the next M lines begins with a character type.
If type==S,there will be two integers more in the line: X,Y.
If type==Q,there will be four integers more in the line: L R D P.
[Technical Specification]
1<=T<= 50
1<=N, M<=100000
0<=a[i]<=$2^{31}$ - 1
1<=X<=N
0<=Y<=$2^{31}$ - 1
1<=L<=R<=N
1<=D<=10
0<=P<=9
1
5 7
10 11 12 13 14
Q 1 5 2 1
Q 1 5 1 0
Q 1 5 1 1
Q 1 5 3 0
Q 1 5 3 1
S 1 100
Q 1 5 3 1
5
1
1
5
0
1
分块大法好....
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath> using namespace std; const int maxn=100100; struct BLOCK
{
int cnt[10][10];
}block[400];
int block_size,block_num;
int n,m;
int a[maxn]; const int ten[12]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000}; void CHANGE(int p,int v)
{
int id=p/block_size;
int x=a[p];
for(int i=0;i<10;i++)
{
block[id].cnt[i][x%10]--;
x/=10;
}
a[p]=v;
x=v;
for(int i=0;i<10;i++)
{
block[id].cnt[i][x%10]++;
x/=10;
}
} int QUERY(int l,int r,int p,int d)
{
int L=l/block_size,R=r/block_size;
int ans=0;
if(R-L<=1)
{
for(int i=l;i<=r;i++)
{
ans+=((a[i]/ten[p-1])%10==d)?1:0;
}
return ans;
}
for(int i=l;i<(L+1)*block_size;i++)
{
ans+=((a[i]/ten[p-1])%10==d)?1:0;
}
for(int i=L+1;i<=R-1;i++)
{
ans+=block[i].cnt[p-1][d];
}
for(int i=R*block_size;i<=r;i++)
{
ans+=((a[i]/ten[p-1])%10==d)?1:0;
}
return ans;
} int main()
{
int T_T;
scanf("%d",&T_T);
while(T_T--)
{
scanf("%d%d",&n,&m);
memset(block,0,sizeof(block));
block_size=sqrt(n*1.0)+1;
block_num=n/block_size+1;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
int x=a[i];
int id=i/block_size;
for(int j=0;j<10;j++)
{
block[id].cnt[j][x%10]++;
x/=10;
}
}
while(m--)
{
char op[10];
int a,b,c,d;
scanf("%s",op);
if(op[0]=='Q')
{
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d\n",QUERY(a,b,c,d));
}
else if(op[0]=='S')
{
scanf("%d%d",&a,&b);
CHANGE(a,b);
}
}
}
return 0;
}
BestCoder Round #11 (Div. 2) 题解的更多相关文章
- BestCoder Round #11 (Div. 2) 前三题题解
题目链接: huangjing hdu5054 Alice and Bob 思路: 就是(x,y)在两个參考系中的表示演全然一样.那么仅仅可能在这个矩形的中点.. 题目: Alice and Bob ...
- BestCoder Round #11 (Div. 2)
太菜,仅仅能去Div2.(都做不完 ORZ... 各自是 HDU: 5054pid=5054"> Alice and Bob 5055Bob and math problem 5056 ...
- 喵哈哈村的魔法考试 Round #11 (Div.2) 题解
喵哈哈村的星星与月亮(一) 打表发现答案就等于a*b%mod 注意a*b可能爆longlong #include<bits/stdc++.h> using namespace std; c ...
- BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)
Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- BestCoder Round #68 (div.2) tree(hdu 5606)
tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- hdu 5636 搜索 BestCoder Round #74 (div.2)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- hdu5631 BestCoder Round #73 (div.2)
Rikka with Graph Accepts: 123 Submissions: 525 Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- hdu5630 BestCoder Round #73 (div.2)
Rikka with Chess Accepts: 393 Submissions: 548 Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- (BestCoder Round #64 (div.2))Array
BestCoder Round #64 (div.2) Array 问题描述 Vicky是个热爱数学的魔法师,拥有复制创造的能力. 一开始他拥有一个数列{1}.每过一天,他将他当天的数列复制一遍,放在 ...
随机推荐
- SQL_substr功能测试
原创作品.从 "深蓝blog" 博客,欢迎转载,请务必注明转载的来源.权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/articl ...
- [Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]
原文:[Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览] 我的文章一定要做到对读者负责,否则就是失败的文章 -- ...
- 详谈socket请求Web服务器过程(转)
最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生. 而有人或许会问: ...
- Iterator、Iterable接口的使用及详解
Java集合类库将集合的接口与实现分离.同样的接口,可以有不同的实现. Java集合类的基本接口是Collection接口.而Collection接口必须实现Iterator接口. 以下图表示集合框架 ...
- Cordova WP8 插件开发
原文:Cordova WP8 插件开发 前面博客中介绍了Cordova WP8平台上的安装部署,Cordova扩展可以利用WP8本地代码扩展WebApp的功能,调用本地能力需要开发相应的插件,下面以闪 ...
- WPF学习(10)模板
在前面一篇我们粗略说了Style和Behaviors,如果要自定义一个个性十足的控件,仅仅用Style和Behaviors是不行的,Style和Behaviors只能通过控件的既有属性来简单改变外观, ...
- SQL Server中TempDB管理(版本存储区的一个example)
原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...
- nginx+tomcat实现动静分离(转)
本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 Nginx 并且在 B 上安装 Tomcat.配置 Nginx,当请求的是 ...
- C# WinForm中实现CheckBox全选反选功能
今天一群里有人问到这个功能,其实应该挺简单,但提问题的人问题的出发点并没有描述清楚.因此,一个简简单单的需求,就引起了群内热烈的讨论.下面看看这个功能如何去实现,先上效果: 下面直接上代码,请不要在意 ...
- js调用跨域
web aapi 初体验 解决js调用跨域问题 跨域界定 常见跨域: 同IP不同端口: http:IP:8001/api/user http:IP:8002/api/user 不同IP不同 ...