Cattle line Cow Line

Topic background

Solicit translation. If you can provide translation or meaning of the questions briefly, please discuss directly, thank you for your contribution.

Title Description

The N (1 <= N <= 20) cows conveniently numbered 1...N are playing yet another one of their crazy games with Farmer John. The cows will arrange themselves in a line and ask Farmer John what their line number is. In return, Farmer John can give them a line number and the cows must rearrange themselves into that line.

A line number is assigned by numbering all the permutations of the line in lexicographic order.

Consider this example:

Farmer John has 5 cows and gives them the line number of 3.

The permutations of the line in ascending lexicographic order: 1st: 1 2 3 4 5

2nd: 1 2 3 5 4

3rd: 1 2 4 3 5

Therefore, the cows will line themselves in the cow line 1 2 4 3 5.

The cows, in return, line themselves in the configuration '1 2 5 3 4' and ask Farmer John what their line number is.

Continuing with the list:

4th : 1 2 4 5 3

5th : 1 2 5 3 4

Farmer John can see the answer here is 5

Farmer John and the cows would like your help to play their game. They have K (1 <= K <= 10,000) queries that they need help with. Query i has two parts: C_i will be the command, which is either 'P' or 'Q'.

If C_i is 'P', then the second part of the query will be one integer A_i (1 <= A_i <= N!), which is a line number. This is Farmer John challenging the cows to line up in the correct cow line.

If C_i is 'Q', then the second part of the query will be N distinct integers B_ij (1 <= B_ij <= N). This will denote a cow line. These are the cows challenging Farmer John to find their line number.

N (1 <= N <= 20) cows, numbered 1 ... N, is working with FJ play a crazy game. Cows will line up (bull route), this time asking FJ line number is. After, FJ will give a line number of cattle, cattle must be arranged in line with the new line number.

The line numbers are arranged by number to all the lines to the lexicographic order of the allocation. For example: FJ five head of cattle, so that they ranked as the No. 3 line, the order is:

1:1 2 3 4 5

2:1 2 3 5 4

3:1 2 4 3 5

Thus, the bovine cattle line 12435 in.

After that, the cows arrangement of "12534", and asked FJ their line numbers. The list continues:

4:1 2 4 5 3

5:1 2 5 3 4

FJ can see the answer here is 5.

FJ cows and you want to help play their game. They need K (1 <= K <= 10000) queries, the query has two parts: C_i will be "P" or "Q" command.

If C_i is 'P', the second part of the query will be an integer A_i (1 <= A_i <= N!), Which is the line number. At this point, you need to answer correctly cattle line.

If C_i is "Q", of the second part of the query will be of N different integers B_ij (1 <= B_ij <= N). This would represent a cattle line, then you need to output the correct line number.

Input Format

* Line 1: Two space-separated integers: N and K

* Lines 2..2*K+1: Line 2*i and 2*i+1 will contain a single query.

Line 2*i will contain just one character: 'Q' if the cows are lining up and asking Farmer John for their line number or 'P' if Farmer John gives the cows a line number.

If the line 2*i is 'Q', then line 2*i+1 will contain N space-separated integers B_ij which represent the cow line. If the line 2*i is 'P', then line 2*i+1 will contain a single integer A_i which is the line number to solve for.

Output Format

* Lines 1..K: Line i will contain the answer to query i.

If line 2*i of the input was 'Q', then this line will contain a single integer, which is the line number of the cow line in line 2*i+1.

If line 2*i of the input was 'P', then this line will contain N space separated integers giving the cow line of the number in line 2*i+1.

Sample input and output

Input # 1
5 2 
P 
3 
Q 
1 2 5 3 4 
Output # 1
1 2 4 3 5 
5 

Description / Tips

Thank @prcups translation

 

This question title to a more important message

"Obviously, the answer has nothing to do with the order in question cows into the barn."

This tells us that the idea of ​​a theme: all data will be processed together

We can assume that all bullpen can put an unlimited number of dairy cows

Then one by one pushed back

This gives the answer is to do a direct answer (of course, cattle barn and the corresponding specific number is not known)

Pay attention to possible explosion int, and after sweeping the first pass may have to head a cowshed, to do it again

 

#include<cstdio>
using namespace std;

long long int n,k,i,j,ans[3000005],x,y,a,b;

inline long long int read(){
    long long int s=0,w=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-'){
            w=-1;
        }
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        s=s*10+ch-'0';
        ch=getchar();
    }
    return s*w;
}

int main(){
    n=read();
    k=read();
    while(k--){
        x=read();
        y=read();
        a=read();
        b=read();
        for(int i=1;i<=y;i++){
            ans[(a*i+b)%n]+=x;
        }
    }
    for(int i=0;i<n;i++){
        if(ans[i]>0){
            ans[(i+1)%n]+=ans[i]-1;
            ans[i]=1;
        }
    }
    while(ans[0]>1)
        for(int i=0;i<n;i++){
            if(ans[i]>0){
                ans[(i+1)%n]+=ans[i]-1;
                ans[i]=1;
            }
        }
    for(int i=0;i<n;i++){
        if(ans[i]==0){
            printf("%lld\n",i);
            return 0;
        }
    }
    return 0;
}

 

Guess you like

Origin www.cnblogs.com/hrj1/p/11223359.html