CF836div2
T2:给定数字n 构造数列a1…an s.t.
a1^a2^…^an=(a1+a2+…+an)/n &&(ai>=1)
intput:
3
1
4
3
output:
69
13 2 8 1
7 7 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 性质 a为偶数的时候a^1==a+1 a为奇数的时候 a^1==a-1 a^a=0 0^a=a so: 当n为奇数的时候 n个1满足条件 1^1^1==1 (1+1+1)/3=1成立 当n为偶数的时候 1^3==2 (1+3)/2==2 只需让其余的全为2即可 void solve(){ int t=read();while(t--){ int n=read(); if(t%2){ for(int i=0;i<n;i++){ cout<<"1 "; } } else{ cout<<"1 3 "; for(int i=0;i<n-2;i++){ cout<<"2 "; } } puts(""); } }
|
T4 构造严格递增数列满足 max(a1,a2,a3…an)-min(a1,a2,a3…an)=√a1+a2+…+an
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 假定每个数为4n 那么 a1+a2+...+an==4n^2 √a1+a2+...+an==2n 设最大值为x最小值为y x+y=8n x-y=2n -> x=5n y=3n 如果输入的n是奇数 中间的数为4n 向左为4n-1 4n-2... 向右为4n+1 4n+2... void solve(){ int t=read();while(t--){ int n=read(); cout<<3*n<<" "; int t=4*n-n/2+1; for(int i=0;i<n/2-1;i++){ cout<<t<<" "; t++; } if(n%2)cout<<4*n<<" "; t=4n+1; for(int i=0;i<n/2-1;i++){ cout<<t<<" "; t++; } cout<<5*n; puts(""); } }
|
ABC279
T3 给定两个大小相同A B字符矩阵 问A矩阵可以通过列的交换化成B矩阵吗? 可以的话输出Yes 否则输出No
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| 将A字符矩阵的每一个列向量存入map中 接着讲B字符矩阵从map中减去 const int N=4e5; mp<vector<char>,int>mp; string s[N]; int main(){ int h=read(),w=read(); for(int i=0;i<h;i++){ cin>>s[i]; } for(int j=0;j<w;j++){ vector<char>v; for(int i=0;i<h;i++){ v.push_back(s[i][j]); } mp[v]++; } for(int i=0;i<h;i++){ cin>>s[i]; } for(int j=0;j<w;j++){ vector<char>v; for(int i=0;i<h;i++){ v.push_back(s[i][j]); } mp[v]--; } for(auto i:mp){ if(i.second){ puts("No"); return 0; } } puts("Yes"); return 0; }
|