首页 > 其他分享 >CF334A Candy Bags 题解

CF334A Candy Bags 题解

时间:2022-12-25 08:00:17浏览次数:65  
标签:dfrac Bags 题目 输出 int 题解 CF334A 权值

题目传送门

题目大意:

给你 \(n^2\) 颗糖,分给 \(n\) 人,使每个人的权值相等(第 \(i\) 块的权值为 \(i\) ),输出第 \(i\) 个人选的糖果集合,注意题目中说 \(n\) 为偶数。

解题思路:

根据 \(1+2+\ldots+n-1+n= \dfrac{n}{2}(n+1)\) 的规律,总结出每组的权值的和其实都是 \(n^2+1\)。

从 \(\ 1\) 和 \(n^2\) 之间找出每一组相加为 \(n^2+1\) 的组合,这两个数是相对应的,如当 \(n\ =4\) 时,这 \(n\) 个人的权值可为 \(\ 1\) 和 \(\ 16\),\(\ 2\) 和 \(\ 15\),\(\ 3\) 和 \(\ 14\) 等;再把每一种组合都输出出来即可。

如何找出每一种组合?

把 \(n^2\) 分为两节,分别是从 \(1\) 到 \(\dfrac{n^2}{2}\),和从 \(n^2\) 到 $ \dfrac{n^2}{2}$,当第一节中的数字 \(i\) 与第二节中的数字 \(j\) 是一组时,\(i+j==n^2+1\);

所以只需要判断 \(i+j\) 是否与 \(n^2+1\) 相等。

当然,也可以直接从 \(1\) 到 \(\frac{n^2}{2}\) 找,先把每一个数都输出,再输出 \(n^2-i+1\)( \(\ 1\) 也可以加在 \(i\) 上)。

为什么要加 \(\ 1\) 呢?

因为第一组为 \(\ 1\) 和 \(n^2\),而不是 \(\ 0\) 和 \(n^2\)。

代码1:

#include<iostream> 
using namespace std;
int n,b,c; 
int main()
{ 
   cin>>n;
   b=n*n; 
   c=b/2;
   for(int i=1;i<=c;i++) {              //第一节查找 
   		for(int j=b;j>=c;j--){           //第二节查找
   			if(i+j==b+1)               //判断是否为一组
   				cout<<i<<' '<<j<<"\n";
		}    
   }
   return 0; 
}

代码2:

#include<iostream> 
using namespace std;
int n,b,c; 
int main()
{ 
   cin>>n;
   b=n*n; 
   c=b/2; 
   for(int i=1;i<=c;i++) {                
       cout<<i<<' '<<b-i+1<<"\n";         
   }
   return 0; 
}

标签:dfrac,Bags,题目,输出,int,题解,CF334A,权值
From: https://www.cnblogs.com/zzyblog0619/p/17003659.html

相关文章

  • CF465B Inbox (100500) 题解
    题目传送门题目大意有已读或未读的邮件,可以进行以下操作:读完邮件后回到邮件列表;回到列表后选取任意一个未读邮件读;读完一个邮件之后读这个邮件的下一个或者上一个邮......
  • P8752 [蓝桥杯 2021 省 B2] 特殊年份 题解
    题目传送门题目大意输入\(5\)个年份,请计算这里面有多少个千位和十位相等,个位比百位大\(1\)的年份。解题思路将每一个年份按分离数位规则把每一位都分离,赋给\(a,......
  • AT_past202010_b 電卓 题解
    题目传送门题目大意给定\(x\)和\(y\),求$\dfrac{x}{y}$。舍弃小数点后第三及以下位。解题思路首先判断$\dfrac{x}{y}$是否可以成立,也就是判断\(y\)是否等于......
  • AT_pakencamp_2021_day2_b Pasokon Power 题解
    题目传送门题目大意输入\(a\)和\(b\),输出\(a^2\cdotb\)的值。解题思路计算\(a^2\cdotb\)的值。用pow函数,表示\(a\)的\(b\)次幂,再乘\(b\),最后不要忘了......
  • AT_pakencamp_2020_day2_a Participants 题解
    题目传送门题目大意集训有\(2\)天,\(2\)天中参加\(1\)天以上的人数最少是多少,最多是多少?解题思路参加一天以上的人数最少就是\(A\)和\(B\)的最大值,而最多就是......
  • T_pakencamp_2021_day2_a Participants 2 题解
    题目传送门题目大意输出帕研集训2021的参加人数。解题思路输出51。代码C++:#include<iostream>intmain(){::std::cout<<51<<::std::endl;retur......
  • AT_pakencamp_2019_day3_b 多数決 题解
    题目传送门题目大意给定\(n\)个字符串,如果black比white的数量多,就输出black,否则输出white。解题思路如果第\(i\)个字符串是black,black的数量加一,如果是wh......
  • AT_pakencamp_2018_day2_a ひふみ (Hihumi) 题解
    题目传送门题目大意从\(1\)到\(N\)数数的时候,会数几个整数呢(除123外)?解题思路如果\(N\)小于123,就不会数到123,所以数了\(N\)次。否则,就会数到123,所以数的......
  • CF1750A Indirect Sort 题解
    题目传送门题目大意有\(T\)组长度为\(n\)的排列;每组进行若干次操作(每次操作选择三个数\(i\),\(j\),\(k\)):若\(a_i>a_k\)将\(a_i\)加上\(a_j\),否则就交换\(a_j......
  • AT_abc279_a [ABC279A] wwwvvvvvv 题解
    题目传送门题目大意给定仅由v和w构成的字符串\(S\),输出\(S\)中有几处向下凸出的部分。解题思路v有一处向下凸出的部分,w有两处向下凸出的部分,所以如果\(S_i\)......