首页 > 其他分享 >CF1858C Yet Another Permutation Problem

CF1858C Yet Another Permutation Problem

时间:2023-11-22 21:48:38浏览次数:42  
标签:CF1858C int 整数 Another Permutation Problem Yet

CF1858C Yet Another Permutation Problem

Yet Another Permutation Problem - 洛谷

这题本来很简单,思路我也想到了,但是代码一直没写对,思路也一直换来换去(悲

然而发现最开始的思路是对的

题意

Alex 收到了一个名为 "GCD 排列" 的游戏作为生日礼物。这个游戏的每一轮进行如下操作:

  • 首先,Alex 选择一个整数序列$a_1,a_2,…,a_n$ ,其中整数范围从 $1$ 到 $n$ 。
  • 然后,对于每个 i 从 1 到 n ,计算整数 $di=gcd(ai,a(imodn)+1)$ 。
  • 本轮的得分是 $d_1,d_2,…,d_n$ 中不同数字的数量。

Alex 已经玩了几轮游戏,所以他决定找一个整数序列 $a_1,a_2,…,a_n$ ,使得它的得分尽可能地大。

回顾一下,$gcd(x,y)$ 表示 $x$ 和 $y$ 的 最大公约数(GCD),而 $x\space mod\space y$ 表示将 $x$ 除以 $y$ 的余数。

长度为 $n$ 的排列是一个由 $n$ 个不同整数组成的数组,整数范围从 $1$ 到 $n$ 且顺序任意。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是排列(数组中有重复的 $2$),$[1,3,4]$ 也不是排列(虽然 $n=3$,但数组中有 $4$)。

思路

可以发现,如果想让$d$里面有尽量多的不重复数字,就要让$a$中的每个数字都被利用。即,尽量使$a_i=2\times a_{i-1}$

另:不要过于参考样例,没啥用

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,cnt,f[maxn];
int run()
{
	cin>>n;
	for(int i=0;i<=n;i++) f[i]=0;
	for(int i=1;i<=n;i++)
	{
		int cnt=i;
		if(f[i]==0)
		{
			while(cnt<=n)
			{
				cout<<cnt<<" ";
				f[cnt]=1;
				cnt*=2;
			}
		}
	}
	cout<<endl;
	return 0;
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		run();
	}
	return 0;
}

标签:CF1858C,int,整数,Another,Permutation,Problem,Yet
From: https://www.cnblogs.com/lyk2010/p/17850363.html

相关文章

  • git SSL certificate problem: unable to get local issuer certificate
    错误:gitSSLcertificateproblem:unabletogetlocalissuercertificate这个问题是由于没有配置信任的服务器HTTPS验证。默认,cURL被设为不信任任何CAs,就是说,它不信任任何服务器验证。解决方法gitconfig--globalhttp.sslVerifyfalse......
  • JWT - Problem of JWT
        ......
  • Applying sewage charging system to deal with water pollution problem in Russia.
    Whatisthe sewage charging system? Although manufacturing has always been a key driving force for China's economic growth, it is also the root cause of water pollution. In the face of rapid industrialization, China has take......
  • Solving 0/1 knapsack problem with dynamic programming (英语课汇报)
    Solving0/1knapsackproblemwithdynamicprogrammingIntroduction0/1knapsackproblemsAlongtimeago,anexplorerwenttoanislandwherethereweretreasures,buthisknapsackcouldonlyholdamaximumweightof\(W\).Eachtreasurehaditscorresp......
  • java.io.IOException: Problem reading font data.
    字体库问题:运行命令fc-list 在运行yuminstallfontconfig后并没有解决这个问题那就是是临时文件的问题在查看Tomcat下bin/catalina.sh文件找到java的JVM临时目录java.io.tmpdir的配置是CATALINA_TMPDIR=“$CATALINA_BASE”/tempCATALINA_BASE指向的是Tomcat安装目录,由于是迁......
  • NEFU OJ Problem 1489 青蛙赶路 题解【动态规划DP】
    Problem:GTimeLimit:2000msMemoryLimit:65535KDescription有一只青蛙,每秒选择走1米或跳m米,青蛙体力不足,所以不能连续两秒都在跳。青蛙将移动到[l,r]之间,它想知道有多少种不同的方式来实现其目标。两种方式是不同的,当且仅当它们移动不同的米或花费不同的秒,或者是在一秒......
  • NEFU OJ Problem1485 贪吃蛇大作战 题解
    Problem:FTimeLimit:1000msMemoryLimit:65535K题目Description贪吃蛇大家一定都玩过吧,现在宋哥也要玩这个游戏,最初的时候贪吃蛇从屏幕的左下角出发,但是有一个非常不幸的事情,就是宋哥的游戏机的左键和下键坏掉了,这意味着什么?没错!他只能操控他的蛇向右或向上走了,假设屏幕......
  • NEFU OJ Problem1487 时空乱流题解
    时空乱流Problem:ETimeLimit:1500msMemoryLimit:65535KDescription星际飞行员Alice在一次航行中遭遇了时空乱流,时空乱流将导致Alice乘坐的飞船在n个位面之间穿梭。星际宇航局管理员Bob收到了Alice的求救信号,决定在某些位面上设立监测站,当Alice进入某个已经设立监......
  • T399753 counting problem(计数问题)题解
    LinkT399753countingproblem(计数问题)Question给出一个正整数\(n\),求\(AB+CD=n\)的方案数,\(A,B,C,D\)都是要求是正整数Solution考虑直接枚举\(ABCD\)显然是不切实际的那么就折半枚举设\(F_i\)表示两个数的乘积为\(i\)的方案数答案就是\(\sum\limits_{i=1......
  • T399751 Liangle's Rose Problem(亮亮的玫瑰问题)题解
    LinkT399751Liangle'sRoseProblem(亮亮的玫瑰问题)Question给出一个数组\(a\),有\(Q\)次询问,每次询问\([L,R]\)种随便挑选几个连续的\(a_i\)使得,他们几个的或的值最大Solution考虑贪心,如果把负数视为\(0\),那么一个数或上另外一个数,数肯定是变大的,那么就应该或上\(......