首页 > TAG信息列表 > P1031
洛谷P1031均分纸牌
原题: 思路: 左右两方向的处理 事实上这类题全部都是可以转换为“从左向右”的处理的 再回来考虑这道题 我们发现它要求我们让每堆纸牌都变成平均数 那我们可以先把它算出来,因为肯定要用 其次,由于牌堆数目参差不齐,所以我们为了将它们捋平,要对每一个数i做一个差分diffi 然后根P1031 均分纸牌
题目描述 有NN堆纸牌,编号分别为 1,2,…,N1,2,…,N。每堆上有若干张,但纸牌总数必为NN的倍数。可以在任一堆上取若干张纸牌,然后移动。 移牌规则为:在编号为11堆上取的纸牌,只能移到编号为22的堆上;在编号为NN的堆上取的纸牌,只能移到编号为N-1N−1的堆上;其他堆上取的纸牌,可以移到相邻luogu P1031 均分纸牌
题目很简单,但是可以学一学贪心策略 把纸牌均匀分布,从左往右推掉不用的纸牌 #include <iostream> using namespace std; int main() { int a,p=0,js=0; cin>>a; int q[a]; for(int y=0;y<a;y++) { cin>>q[y]; p+=q[y]; } p/=洛谷P1031 均分纸牌
https://www.luogu.org/problem/P1031 #include<bits/stdc++.h>using namespace std;int n,a[101],all,ans; int main() { scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); all+=a[i]; //累luogu P1031 均分纸牌
https://www.luogu.org/problem/P1031 题目描述 有N堆纸牌,编号分别为 1,2,…,N。每堆上有若干张,但纸牌总数必为N的倍数。可以在任一堆上取若干张纸牌,然后移动。 移牌规则为:在编号为1堆上取的纸牌,只能移到编号为2的堆上;在编号为N的堆上取的纸牌,只能移到编号为N−1的堆上;其他洛谷P1031 [NOIP2002]均分纸牌
Question 分析:题意中说扑克牌总数是n的整数倍实际上就是在暗示,我们可以先把均分后每堆纸牌的数量算出来。 "...."告诉我们只能相邻两个之间操作,但一定要少的问前一个要,多的给下一个吗,不需要,因为你问 上一个要事实上也上上一个绕了一圈给你送过来的,所以我们就一堆一堆操作,多了少了洛谷P1031题解
上代码! #include <iostream> #include <algorithm> #include <ctime> using namespace std; int n,a[110],t[110],x; bool cmp(int i1,int i2)//比较函数 { x++; if(i1==a[n-1]||i2==a[n-1])return i1<i2; else return !cmp(i1+1,i2+2)||!cmp(i1+2,i2+1); }