题意:输入一个序列,可以交换两个数直到有序,要求每一次交换的两个数下标只能为素数

题解:贪心,每一个数都有他最后的位置,直接和他最后的位置进行互换就可以,而大于2的数可以分为多个素数相加,那么一次交换可以分解为多个素数的交换

#include <bits/stdc++.h>
#define maxn 101000
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;
bool isprime[maxn];
int prime[maxn], num, a[maxn], pos[maxn], ans[5*maxn][2], sum, cnt;
void doprime(ll n){num = 0;isprime[1] = 0;memset(isprime, 1, sizeof(isprime));for(ll i=2;i<=n;i++){if(isprime[i]){prime[num++] = i;for(ll j=i*i;j<=n;j+=i)isprime[j] = 0;}}
}
int main(){int n;scanf("%d", &n);doprime(maxn);for(int i=1;i<=n;i++){scanf("%d", &a[i]);pos[a[i]] = i;}for(int i=1;i<=n;i++){while(pos[i] != i){for(int j=i;j<pos[i];j++){if(isprime[pos[i]-j+1]){ans[cnt][0] = j;ans[cnt++][1] = pos[i];int t = pos[i];pos[i] = j;pos[a[j]] = t;swap(a[j], a[t]);break;}}}}printf("%d\n", cnt);for(int i=0;i<cnt;i++){printf("%d %d\n", ans[i][0], ans[i][1]);}return 0;
}

转载于:https://www.cnblogs.com/Noevon/p/8330457.html

Codeforce432 Prime Swaps相关推荐

  1. ccf 最优灌溉(prime模板)

    模板题 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f int lowcost[1010]; int ...

  2. usaco Prime Palindromes

    新技能get,可以这样遍历回文数,的确厉害.注意剪枝不然超时. /* ID: jinbo wu LANG:C++ TASK: pprime */ #include <stdio.h> #i ...

  3. ACMNO.23 C语言-素数判定 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime

    题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 prime 来源/ ...

  4. Prime Path(bfs)广度优先搜索

    题目描述 The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...

  5. F - Prime Path POJ - 3126

    F - Prime Path POJ - 3126 题意修改一个四位数质数的某一位,使得该质数又变为一个质数,求从当前数变为目标质数的最少变化次数. bfs枚举每一位的每种变化 #include< ...

  6. 小白都能看懂最小生成树prime算法

    定义不多说,说说代码的实现. 用落谷上的题目来说明代码的正确性 落谷上的题目 邻接矩阵的实现 定义一个生成树点的集合A,和图中其他点 的集合B 先任意选择一个点a加入到A中,即visit[a]=tru ...

  7. Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力

    A. Prime Permutation 题目连接: http://www.codeforces.com/contest/123/problem/A Description You are given ...

  8. 并查集和prime和kruskal

    现在有10个强盗,下面9行两个人是一个团伙 1 2 3 4 5 2 4 6 2 6 8 7 9 7 1 6 2 4 求有几个团伙 //并查集 #include<stdio.h> int f ...

  9. poj 2739 Sum of Consecutive Prime Numbers

    悲剧,如此水题,竟搞了许久.唉,只因题目没看清. 准确的说:应该是准备工作没做好就开始敲代码了!! 下次一定要想的很清楚了再code ing ! //144K 63MS #include <st ...

  10. Project Euler 50 Consecutive prime sum

    题意: 素数41可以写成六个连续素数的和: 41 = 2 + 3 + 5 + 7 + 11 + 13 在小于一百的素数中,41能够被写成最多的连续素数的和. 在小于一千的素数中,953能够被写成最多的 ...

最新文章

  1. 电子学会青少年编程等级考试Python一级题目解析11
  2. ViewPager一屏显示多个item,及边缘滑动事件优化
  3. 检查点重做检查点队列简单总结Strut2教程-java教程
  4. [转]autoid文件上传
  5. asp和php数据库怎么区分,asp与php的数据库有哪些区别
  6. Oracle数据库管理›oracle内部的jdk版本
  7. python爬虫——爬取b站APP视频信息(通过fiddler抓包工具)
  8. android-应用签名
  9. 用AS3+Flash+FlashBuilder开发AIR
  10. malloc函数说明
  11. Jenkins杀掉子进程解决方法(转载)
  12. 网工神器:PNETLab模拟器踩坑过程
  13. 例题9-27 方块消除 UVa10559
  14. java编译和反编译
  15. FTP服务器vsftpd配置项-黑白名单(userlist_enable、userlist_deny)
  16. 分布式基础——GFS(Google file system)
  17. 再揭国产COS操作系统的内幕
  18. Pycharm创建conda新环境失败问题
  19. elixir 教程_认识Elixir,Laravel编译资产的方式
  20. C语言字符串转换为整数

热门文章

  1. C语言文件读写操作中缓冲区问题和setbuf函数详解
  2. python归并排序算法实现_排序算法之归并排序(附 Python 与 JS 实现)
  3. 【“新智认知”杯上海大学联赛】D-CSL的字符串(贪心)
  4. this指向问题 php,js中的this指向问题
  5. 信用评分卡(python)
  6. 如不指定存储类型c语言,总结C语言的五种存储类型
  7. TSAP(4) : 时间序列采样[asfreq( ) VS resample( )]
  8. 翻译: 全球导航卫星系统 (GNSS) 的演进
  9. IntelliJ IDEA 查看类结构,查看类图,继承关系,查看package包关系
  10. Charles Https 请求 SSL乱码问题 charles unreadable