[Thoughts]
把Y中连续的两个数字作为一个区间,然后对于每一个Q[i],遍历所有Y区间,统计覆盖次数即可。
[Code]
1: #include<vector>
2: using namespace std;
3: class PiecewiseLinearFunctionDiv2
4: {
5: public:
6: vector <int> countSolutions(vector <int> Y, vector <int> query)
7: {
8: vector<int> result;
9: for(int i =0; i< query.size(); i++)
10: {
11: int searchNum = query[i];
12: int start = 0;
13: int solution=0;
14: if(searchNum == Y[start]) solution++;
15: for(int j =1; j< Y.size(); j++)
16: {
17: if(max(Y[start], Y[j]) > searchNum && min( Y[start], Y[j]) < searchNum)
18: {
19: solution++;
20: }
21: if(searchNum == Y[j])
22: {
23: if(searchNum == Y[start])
24: {
25: solution =-1;
26: break;
27: }
28: solution++;
29: //j++;
30: }
31: start = j;
32: }
33: result.push_back(solution);
34: }
35: return result;
36: }
37: };
Problem Statement 1000P | |||||||||||||
In this problem, all strings consist of uppercase English letters only. That is, there are 26 distinct letters. The weight of a string S can be computed as follows: for each letter that occurs at least once in S, its leftmost and rightmost occurrences L and R are found and the weight is increased by R-L. For example, if S=”ABCACAZ”, the weight of S is (5-0) + (1-1) + (4-2) + (6-6) = 7. (The leftmost occurrence of ‘A’ is at the index L=0, the rightmost one is at R=5, so ‘A’ contributes 5-0 = 5 to the weight of S. The only ‘B’ contributes 0, the pair of ‘C’s adds 2, and the only ‘Z’ adds 0.) You are given a int L. Consider all strings of length L. Compute the weight of each of these strings. The strings with the minimum weight among all of them are called light. Your task is to count the number of light strings of length L. Since this count may be very large, return it modulo 1,000,000,009. | |||||||||||||
Definition | |||||||||||||
| |||||||||||||
Constraints | |||||||||||||
- | L will be between 1 and 1000, inclusive. | ||||||||||||
Examples | |||||||||||||
0) | |||||||||||||
| |||||||||||||
1) | |||||||||||||
| |||||||||||||
2) | |||||||||||||
|
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.
1: int mod = 1000000009;
2: class StringWeightDiv2
3: {
4: public:
5: long Permutation(int n, int m)
6: {
7: long result=1;
8: for(int i =0; i< m; i++)
9: {
10: result*=n;
11: result%=mod;
12: n--;
13: }
14: return result;
15: }
16: int countMinimums(int L)
17: {
18: if(L<=26) return Permutation(26, L);
19: else
20: return Permutation(L-1, 25)*26%mod;
21: }
22: };