BestCoder Round #11 (Div. 2) question set,

Alice and Bob**Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)**

Total Submission (s): 155 Accepted Submission (s): 110

Problem DescriptionBob and Alice got separated in the Square, they agreed that if they get separated, they'll meet back at the coordinate point (x, y ). unfortunately they forgot to define the origin of coordinates and the coordinate axis direction. now, Bob in the lower left corner of the Square, Alice in the upper right corner of 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 ction 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 ).

InputThere are multiple test cases. please process till EOF. each test case only contains four integers: N, M and x, y. the Square size is N * M, and meet in coordinate point (x, y ). (0 <x <N <= 1000, 0 <y <M <= 1000 ).

OutputIf they can meet with each other, please output "YES". Otherwise, please output "NO ".

Sample Input

10 10 5 510 10 6 6

Sample Output

YESNO

SourceBestCoder Round #11 (Div. 2)

Recommendheyang | We have carefully selected several similar problems for you: 5053 5052 5051 5050 question: Tell you the length and width of a rectangle area. Then there are two coordinate systems. One is the origin in the lower left corner. The top right is in the positive direction. The origin is displayed in the upper-right corner. Bottom right is in the positive direction. Now I will give you a coordinate (x, y) and ask you if they represent the same point in the two coordinate systems. Idea: Convert different coordinate systems to the same coordinate system. I want to convert the upper left corner to the lower right corner. For details, see the code:

#include<algorithm>#include<iostream>#include<string.h>#include<stdio.h>using namespace std;const int INF=0x3f3f3f3f;const int maxn=100010;typedef long long ll;int main(){ int n,m,x,y; while(~scanf("%d%d%d%d",&n,&m,&x,&y)) { if(x==n-x&&y==m-y) printf("YES\n"); else printf("NO\n"); } return 0;}

Bob and math problem

**Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)**

Total Submission (s): 456 Accepted Submission (s): 169

Problem DescriptionRecently, Bob has been thinking about a math problem.

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 The odd Integer is "301 ".

InputThere are multiple test cases. Please process till EOF.

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) $.

OutputThe output of each test case of a line. If you can constitute an Integer which is satisfied above conditions, please output the biggest one. Otherwise, output "-1" instead.

Sample Input

30 1 335 4 232 4 6

Sample Output

301425-1

SourceBestCoder Round #11 (Div. 2)

Recommendheyang | We have carefully selected several similar problems for you: 5053 5052 5051 5050 5049 question: give you n numbers to make up the largest odd number of n digits. If not, output-1. Thought: start to read the incorrect question. The output does not have to use all numbers. So I got down after the verdict. I really don't know how to get started with data... The greedy structure of this question is enough. First, find the smallest odd number for a single position. If not, use-1. Then sort the remaining number. If there are still numbers and the maximum value is 0, the output must be-1. If not, output the data in descending order and add the odd number that will be found. For details, see the code:

#include<algorithm>#include<iostream>#include<string.h>#include<stdio.h>using namespace std;const int INF=0x3f3f3f3f;const int maxn=100010;typedef long long ll;int arr[150],brr[150];int main(){ int n,i,p,ct; while(~scanf("%d",&n)) { ct=0,p=-1; for(i=0;i<n;i++) { scanf("%d",&arr[i]); if(arr[i]&1) { if(p==-1||arr[i]<arr[p]) p=i; } } if(p==-1) { printf("-1\n"); continue; } for(i=0;i<n;i++) if(i!=p) brr[ct++]=arr[i]; sort(brr,brr+ct); if(ct&&brr[ct-1]==0) { printf("-1\n"); continue; } for(i=ct-1;i>=0;i--) printf("%d",brr[i]); printf("%d\n",arr[p]); } return 0;}

Boring count

**Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)**

Total Submission (s): 250 Accepted Submission (s): 98

Problem DescriptionYou are given a string S consisting of lowercase letters, and your task is counting the number of substring that the number of each lowercase letter in the substring is no more than K.

InputIn the first line there is an integer T, indicates the number of test cases.

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 <= length of S <= 100000

1 <= K <= 100000

OutputFor each case, output a line contains the answer.

Sample Input

3abc1abcabc1abcabc2

Sample Output

61521

SourceBestCoder Round #11 (Div. 2)

Recommendheyang | We have carefully selected several similar problems for you: 5053 5052 5051 5050 question: give you a string of up to 1 E5 characters consisting of lowercase letters. Ask you how many substrings it has. The number of occurrences of each character meeting the substring cannot exceed k. Idea: For a left endpoint le that meets the conditions. Add the characters of the right endpoint ri one by one. If the conditions are still met. This newly added character will contribute ri-le + 1 substring with this sub-character as the right endpoint. If the condition is not met, the left-shift le pointer knows that the condition is met. I thought of the train of thought long before the competition. Various logic errors may occur for 1 hour + 1A. For details, see the code:

#include<algorithm>#include<iostream>#include<string.h>#include<stdio.h>using namespace std;const int INF=0x3f3f3f3f;const int maxn=100002;typedef long long ll;char txt[maxn];int vis[27];ll ans=0;int main(){ int t,n,k,le,ri,p; scanf("%d",&t); while(t--) { scanf("%s%d",txt,&k); n=strlen(txt); ans=le=ri=0; memset(vis,0,sizeof vis); p=-1; while(ri<=n) { if(p==-1) { vis[txt[ri]-'a']++; if(vis[txt[ri]-'a']>k) p=ri; else if(ri<n) ans+=ri-le+1; ri++; } else { vis[txt[le]-'a']--; if(txt[le]==txt[p]) p=-1,ans+=ri-le-1; le++; } } printf("%I64d\n",ans); } return 0;}

Argestes and Sequence

**Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)**

Total Submission (s): 192 Accepted Submission (s): 44

Problem DescriptionArgestes has a lot of hobbies and likes solving query problems especially. one day Argestes came up with such a problem. you are given a sequence a consisting of N nonnegative integers, a [1], a [2],..., a [n]. then there are M operation on the sequence. an operation can be one of the following:

S x y: you shoshould 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.

InputIn the first line there is an integer T, indicates the number of test cases.

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

OutputFor each operation Q, output a line contains the answer.

Sample Input

15 710 11 12 13 14Q 1 5 2 1Q 1 5 1 0Q 1 5 1 1Q 1 5 3 0Q 1 5 3 1S 1 100Q 1 5 3 1

Sample Output

511501

SourceBestCoder Round #11 (Div. 2)

Recommendheyang | We have carefully selected several similar problems for you: 5053 5052 5051 5050 question: Give you A series of length not more than 1 E5. You can perform two operations. 1. S x y. Convert the number x to y. 2. Q l r d p. Ask the number d in [l, r] as the number of p. Ideas:

See this question. Overjoyed. Today is the rhythm of ak. (I don't know if 1002 will go down .. -- | ). Application of typical line segment tree. Each node has an array val [rt] [I] [j]. Indicates the number of j in the interval represented by the node. Then I wrote it happily. Compile and run it once. The test sample without any errors or warnings is completely correct! Then I handed in happily. And then mle... It was silly. Check the question memory limit. Dizzy. There is actually a Data Structure question card memory. Then I thought about opening 1 E7 space in the tree array, even short, but I thought about modifying and querying each bit offline. But now it is 20: 20. We vaguely remember that we were about to start hack. I gave up the struggle. Later, I realized that I still had no time to change it. Although the solution has the offline processing I mentioned. However, I always think it is quite troublesome to use block-based writing. It is divided into sqrt (n) blocks. Block direct violence. Blocks use the entire information to maintain and quickly calculate the answer. Time complexity O (n * sqrt (n )). After writing a transaction, rank1. The estimated O (10 * n * log (n) is too constant. For details, see the code:

#include<algorithm>#include<iostream>#include<string.h>#include<stdio.h>#include<math.h>using namespace std;const int INF=0x3f3f3f3f;const int maxn=100003;typedef long long ll;#define lson L,mid,ls#define rson mid+1,R,rsint val[maxn][11],da[400][11][10],x;int main(){ int t,n,m,i,j,le,ri,d,p,x,y,bk,ans,st,ed,lim; char cmd[10]; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); bk=ceil(sqrt(1.0*n)); memset(da,0,sizeof da); memset(val,0,sizeof val); for(i=1;i<=n;i++) { scanf("%d",&x); for(j=1;j<=10;j++) { val[i][j]=x%10; x/=10; } p=(i-1)/bk; for(j=1;j<=10;j++) da[p][j][val[i][j]]++; } for(i=0;i<m;i++) { scanf("%s",cmd); if(cmd[0]=='Q') { scanf("%d%d%d%d",&le,&ri,&d,&p); ans=0; st=(le-1)/bk; ed=(ri-1)/bk; if(ed-st<=1) { for(j=le;j<=ri;j++) if(val[j][d]==p) ans++; } else { lim=(st+1)*bk; for(j=le;j<=lim;j++) if(val[j][d]==p) ans++; lim=ed*bk+1; for(j=lim;j<=ri;j++) if(val[j][d]==p) ans++; for(j=st+1;j<ed;j++) ans+=da[j][d][p]; } printf("%d\n",ans); } else { scanf("%d%d",&x,&y); p=(x-1)/bk; for(j=1;j<=10;j++) { if(y%10!=val[x][j]) { da[p][j][val[x][j]]--; val[x][j]=y%10; da[p][j][val[x][j]]++; } y/=10; } } } } return 0;}