Codeforces Round #183 (Div. 2) C
?
思維題,想到就秒殺,沒(méi)想到或者想錯(cuò)方向了那么就完蛋了
0 1 2 3 4?
1 2 3 4 0
你就會(huì)發(fā)現(xiàn)是可以的。
我經(jīng)歷了很久錯(cuò)誤的思維,找到了一些性質(zhì)
1. ?ai+bi的和一定為一串從(n/2)遞增的序列, 因?yàn)樗衋i+bi(i從0-n-1)的和為一個(gè)固定的數(shù),而得到的ci又要是0-n-1各一次。 所以也同時(shí)說(shuō)明偶數(shù)的情況是不可行的。
然后稍加組合就可以發(fā)現(xiàn)將兩個(gè) 0-n-1 的序列錯(cuò)開相加就可以得到結(jié)果。。
C. Lucky Permutation Triple time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard outputBike is interested in permutations. A permutation of length?n?is an integer sequence such that each integer from 0 to?(n?-?1)?appears exactly once in it. For example,?[0,?2,?1]?is a permutation of length 3 while both?[0,?2,?2]?and?[1,?2,?3]?is not.
A permutation triple of permutations of length?n?(a,?b,?c)?is called a Lucky Permutation Triple if and only if?. The sign?ai?denotes the?i-th element of permutation?a. The modular equality described above denotes that the remainders after dividing?ai?+?bi?by?n?and dividing?ci?by?n?are equal.
Now, he has an integer?n?and wants to find a Lucky Permutation Triple. Could you please help him?
InputThe first line contains a single integer?n?(1?≤?n?≤?105).
OutputIf no Lucky Permutation Triple of length?n?exists print?-1.
Otherwise, you need to print three lines. Each line contains?n?space-seperated integers. The first line must contain permutation?a, the second line — permutation?b, the third — permutation?c.
If there are multiple solutions, print any of them.
Sample test(s) input 5 output 1 4 3 2 01 0 2 4 3
2 4 0 1 3 input 2 output -1 Note
In Sample 1, the permutation triple?([1,?4,?3,?2,?0],?[1,?0,?2,?4,?3],?[2,?4,?0,?1,?3])?is Lucky Permutation Triple, as following holds:
?
- ;
- ;
- ;
- ;
- .
?
In Sample 2, you can easily notice that no lucky permutation triple exists.
?
#include <iostream> #include <stdio.h> #include <string.h> using namespace std;int g[100100]; int g1[100100];int main() {int n;scanf("%d",&n);if(n%2==0) printf("-1");else{int cnt=0;for(int i=n/2;i<n;i++)g[cnt++]=i;for(int i=0;i<n/2;i++)g[cnt++]=i;for(int i=0;i<n;i++)g1[i]=(g[i]+i)%n;for(int i=0;i<n;i++)printf("%d ",i);printf("\n");for(int i=0;i<n;i++)printf("%d ",g[i]);printf("\n");for(int i=0;i<n;i++)printf("%d ",g1[i]);}return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/chenhuan001/archive/2013/05/13/3075870.html
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #183 (Div. 2) C的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 批处理相对路径51CTO自动领豆(Pyt
- 下一篇: 想问一下,怎么挑选地暖管比较好?