首页 > 其他分享 >AtCoder Beginner Contest 276

AtCoder Beginner Contest 276

时间:2022-11-06 10:25:07浏览次数:195  
标签:tmp AtCoder Beginner Contest int 276 permutation include

今天来讲解一下AtCoder Beginner Contest 276 C和D

传送地址:https://atcoder.jp/contests/abc276

一. C - Previous Permutation

题目大意:给你一个有数字 1~n 组成的序列,将数字1~n进行全排列并且从小到大排序后,这是第k个。问第k-1个是什么?

这一题由于n<=100,明显不能使用暴力枚举,所以这里引入一个新函数:prev_permutation

这个函数的功能刚好与 next_permutation 的作用相反

prev_permutation 函数是生成给定序列的上一个较小的排列。

所以代码如下:

 1 #include <iostream>
 2 #include <algorithm> //prev_permutation头文件 
 3 using namespace std;
 4 int a[101];
 5 int main()
 6 {
 7     int n;cin>>n;
 8     for(int i=0;i<n;i++) cin>>a[i];
 9     prev_permutation(a,a+n); //使用函数得到上一个排列 
10     for(int i=0;i<n;i++) cout<<a[i]<<" ";
11     return 0;
12 } 

二. D - Divide by 2 or 3

题目大意:给你一个长度为n的数组A。你可以选择一下两个操作中的一个操作任何次数或不操作

                1.选择A其中一个元素,这个元素是2的倍数,把他替换成自己除以2

                2.选择A其中一个元素,这个元素是3的倍数,把他替换成自己除以3

具体就不说了,直接看代码

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;cin>>n;
 6     int g=0,cnt=0;  
 7     set<int> s;
 8     for(int i=0;i<n;i++){
 9         int a;cin>>a;
10         g=__gcd(g,a);  //找到所有数共同的最大公因数 
11         int tmp=a;
12         while(tmp%2==0) tmp/=2,cnt++;  //累加除以2的次数 
13         while(tmp%3==0) tmp/=3,cnt++;  //累加除以3的次数 
14         s.insert(tmp); //将剩余的质数放进来 
15     }
16     if(s.size()!=1) {  //如果有两个或以上不同的质数,则一定构造不出来 
17         cout<<-1<<endl;
18         return 0;
19     }
20     while(g%2==0) g/=2,cnt-=n;  //如果g是2的倍数,则其他所有数都可以少除2,所以cnt-=n 
21     while(g%3==0) g/=3,cnt-=n;  //如果g是3的倍数,则其他所有数都可以少除3,所以cnt-=n 
22     cout<<cnt<<endl;
23     return 0;
24 }

 

标签:tmp,AtCoder,Beginner,Contest,int,276,permutation,include
From: https://www.cnblogs.com/ziyistudy/p/16862065.html

相关文章

  • AtCoder Beginner Contest 276
    咕咕咕咕。E-RoundTrip如果存在某个点双满足这个点双包含起点且点双大小大于\(4\)则有解。F-DoubleChance考虑不断在之前的基础上在末尾添加一个数,每次更新期......
  • AtCoder Beginner Contest 276 A~G 题解
    今天凌晨CFD题差一句判断AC,晚上ABCG题把插板法和快速幂搞混差点AC。事不过三,再这样一次我直接紫砂。太简单的题就不放翻译和代码了。(事实上这场A-E都是大水题......
  • 【atcoder abc276 】(a* 搜索)
    importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.*;/****@autho......
  • Atcoder Beginner Contest ABC 275 Ex (H) Monster 题解
    先明确\(a_i\)是一个怪物的血量,\(b_i\)是攻击的代价。发现如果我们想攻击一个怪物,不如找出一个极大的包含它的区间,满足这个区间内所有怪物的攻击代价都不大于它本身的代价,......
  • AtCoder Regular Contest 068
    C简单,D有点意思,但没啥用,不写。F有点好玩,想了一个小时,看了一上午题解,弄明白了。E-SnukeLine\(n\)个物品,第\(i\)个物品在\([l_i,r_i]\)间。你初始在第0格,......
  • Sugoroku 4 (Atcoder abc275 T5) DP
    题目描述题目链接https://atcoder.jp/contests/abc275/tasks/abc275_e题意从\(0\)到\(n\)有\(n+1\)个方格,你现在在第\(0\)个格子。每次移动可以随机走\(1\)......
  • Atcoder Beginner Contest 271(A~G)
    省流:赛时F假了。赛时A转进制;B简单vector。C简单贪心模拟,大概就是能走就走,不能走就先不走(较大)或者存起来(较小),最后走存起来的。挂了3发,自闭了。D第一眼看成了......
  • AtCoder Regular Contest 065
    ARC064C,E都是简单题,D猜结论也没啥意思,就不写了。ARC065还是比较好的。D-Connectivity给定\(n\)个点的无向图,有两组连边,互相独立。询问每个点通过两组连边都......
  • AtCoder Regular Contest 136 D Without Carry
    AtCoder传送门洛谷传送门一眼。将\(a\)中每个数用前导零补到\(6\)位,题目相当于问所有\(i,j\),\(a_i\)的每一位加\(a_j\)的这一位都不超过\(9\)的\((i,j)\)......
  • ATcoder F 做题记录
    ABC273F简要题意一个人要沿数轴从\(0\)处走到\(x\)处,数轴上有一些障碍,每个障碍有一把对应的锤子可以将其销毁,给定障碍和锤子的坐标及\(x\),求最短路长。简要题......