现代网站制作,wordpress的知名网站,北京网站提升排名,推广渠道有哪些方式目录 A. Dalton the Teacher题目大意题解思路代码 B. Longest Divisors Interval题目大意题解思路代码 C1. Dual (Easy Version)题目大意题解思路代码 A. Dalton the Teacher
题目链接
题目大意
Dalton是一个班级的老师#xff0c;这个班级有 n n n个学生#xff0c;分别… 目录 A. Dalton the Teacher题目大意题解思路代码 B. Longest Divisors Interval题目大意题解思路代码 C1. Dual (Easy Version)题目大意题解思路代码 A. Dalton the Teacher
题目链接
题目大意
Dalton是一个班级的老师这个班级有 n n n个学生分别使用1~n来代表这些学生。课室包含 n n n张椅子编号也是对应1 ~ n一开始学生 i i i坐在凳子 p i pi pi,我们保证 p 1 p1 p1, p 2 p2 p2,…, p n pn pn是一个长度为 n n n排列组合序列。 如果他/她的号码与他/她的椅子号码不同学生就会感到高兴。为了让他所有的学生都高兴道尔顿可以反复执行以下操作:选择两个不同的学生交换他们的椅子。让所有学生满意的最少动作数是多少?我们可以证明在这个问题的约束下有可能用有限的移动次数让所有的学生都满意。 长度为n的排列是由n个不同的整数以任意顺序从1到n组成的数组。例如[2,3,1,5,4]是一个排列但[1,2,2]不是一个排列(2在数组中出现两次)[1,3,4]也不是一个排列(n3但数组中有4)。
题解思路 题目要求我们尽可能少的步骤完成这个换换座位的操作那我们只需要关注不符合位置的学生即可只需要在输入的时候进行特殊判断即可然后就是如何进行换位置的判断如果是有两个人的位置不符合要求的话我们直接两个人的位置互换即可比如说12我们可以直接对换变成21如果是三个人的情况我们就需要额外多进行一次操作比如说是123对换两次变成231。这上面的两种情况也分别对应奇数次数以及偶数次数的情况。 代码
#includebits/stdc.h
using namespace std;
#define debug(x) cout#x xendlint main()
{int t;cint;while(t--){int n;scanf(%d,n);int ans0;for(int i1;in;i){int shuru;scanf(%d,shuru);if(shurui)ans;}printf(%d\n,ans/2ans%2);}return 0;
}B. Longest Divisors Interval
题目链接
题目大意
给定一个正整数n求一个正整数区间[l,r]的最大值使得对于区间内的每一个i(即l≤i≤r) n是i的倍数。 给定两个整数l≤r区间[l,r]的大小为r−l1(即与属于该区间的整数个数重合)。
题解思路 如果一个数是区间[k1,ky]里面任意一个数的倍数那么这个数一定是区间[1,y]里面任意一个数的倍数 代码
#includebits/stdc.h
#includemath.h
using namespace std;
#define debug(x) cout#x xendlint main()
{int t;cint;while(t--){long long n;scanf(%lld,n);long long ans0;//int m(int)sqrt(n);for(long long i1;in;i){if(n%i0)ans;else break;}printf(%lld\n,ans);}return 0;
}C1. Dual (Easy Version)
题目链接
题目大意
给定一个数组a1,a2…anof整数(正负或0)。您可以对该数组执行多个操作(可能为0操作)。 在一个操作中你选择i,j(1≤i,j≤n它们可以相等)并设置ai:aiaj(即(在ai后面加上aj)。 在最多50次操作中使数组不递减(即当1≤i≤n - 1时ai≤ai1)。您不需要最小化操作的数量。
题解思路 这道题目给的次数比较大我们可以分类来进行处理如果这里面的数字存在正整数那么肯定可以把这些数字转化为正整数那么我们只需要后面的数加前面的数就肯定能够符合条件如果所有的数字都是负数那我们只需要前面的数字加上后面的数字也肯定能够满足条件。还有一种情况全部都是0那就直接输出0即可。 代码
#includebits/stdc.h
using namespace std;
#define debug(x) cout#x xendlint main()
{int t;cint;int cnt;while(t--){int n;scanf(%d,n);int arr[30]{0};int maxzhi-30,maxweizhi;int minzhi30,minweizhi;cnt0;int a[50]{0};int b[50]{0};for(int i1;in;i){scanf(%d,arr[i]);if(arr[i]maxzhi){maxzhiarr[i];maxweizhii;}if(arr[i]minzhi){minzhiarr[i];minweizhii;}}if(maxzhi0){while(maxzhi20){maxzhi2*maxzhi;arr[maxweizhi]*2;a[cnt]maxweizhi;b[cnt]a[cnt];cnt;}for(int i1;in;i){if(arr[i]0){arr[i]maxzhi;a[cnt]i;b[cnt]maxweizhi;cnt;}}for(int i2;in;i){if(arr[i]arr[i-1]){arr[i]arr[i-1];//printf(%d %d\n,i,i-1);a[cnt]i;b[cnt]i-1;cnt;}}}else if(minzhi0){while(minzhi-20){minzhiminzhi;a[cnt]minweizhi;b[cnt]minweizhi;cnt;}for(int in-1;i1;--i){if(arr[i]arr[i1]){while(arr[i]arr[i1]){arr[i]arr[i1];a[cnt]i;b[cnt]i1;cnt;}}}}printf(%d\n,cnt);for(int i0;icnt;i){printf(%d %d\n,a[i],b[i]);}}return 0;
}