Luogu题目集合[6/未完待续]
1. P1327数列排序
题目描述
给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换?
输入输出格式
输入格式:
第一行,正整数n (n<=100,000)。
以下若干行,一共n个数,用空格分隔开,表示数列{an},任意-231<ai<231。
输出格式:
只有一行,包含一个数,表示最少的交换次数。
输入输出样例
8
8 23 4 16 77 -5 53 100
5 ---------------------------------------------------------------------------------------------------------------
本以为是逆序对,发现不一定相邻交换
找一条交换链,从原位置到新位置不停地走,最终会是一个环
注意每次加cnt-1,因为最后一次两个都到了正确位置
代码实现原位置封装结构体,排序,flag代表归位,走就行了
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100005; struct node{
int o,w;
}a[N];
bool cmp(const node &a,const node &b){
return a.w<b.w;
}
int n,flag[N],ans=0; //guiwei
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i].w); a[i].o=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(flag[i]==0){
int now=i,cnt=0;
while(flag[now]==0){
cnt++;
flag[now]=1;
now=a[now].o;
}
ans+=cnt-1;
}
}
cout<<ans;
}
2.P1630求和
题目描述
求1^b+2^b+……+a^b的和除以10000的余数。
输入输出格式
输入格式:
第一行包含一个正整数N,表示共有N组测试数据;
接下来N行,每行包含两个正整数a和b。
【数据规模】
对于30%的数据中,满足N<=10,a,b<=1000;
对于100%的数据中,满足N<=100,a,b<=1000000000;
输出格式:
共N行,每行一个对应的答案。
输入输出样例
1
2 3
9
------------------------------------------------------------------------------------------
暴力只能拿30分
用f[i]表示i^b%10000的结果,考虑每个fi对答案的贡献 a^b mod 10000=(a+10000)^b mod 10000
复杂度O(10000*logb*N)
不用long long也可以
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MOD=10000,N=10005;
typedef long long ll;
int n;
ll a,b;
ll f[N]; ll powMod(ll a,ll b){
ll ans=1;
for(;b;b>>=1,a=(a*a)%MOD)
if(b&1) ans=(ans*a)%MOD;
return ans;
}
ll solve(ll a,ll b){
for(int i=1;i<=MOD;i++)
f[i]=powMod(i,b);
ll div=a/MOD,mod=a%MOD;
ll ans=0;
for(int i=1;i<=MOD;i++){
ans=(ans+div*f[i])%MOD;
if(i<=mod) ans=(ans+f[i])%MOD;
}
return ans;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
memset(f,0,sizeof(f));
scanf("%lld%lld",&a,&b);
cout<<solve(a,b)<<"\n";
}
}
3.P1403约数研究
题目描述
科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel2”的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联允许用“Samuel2”进行数学研究。
小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示。现在小联希望用“Samuel2”来统计f(1)到f(N)的累加和M。
f(n)表示n的约数个数,现在给出n,要求求出f(1)到f(n)的总和。
输入输出格式
输入格式:
输入一行,一个整数n
输出格式:
输出一个整数,表示总和
输入输出样例
3
5
------------------------------------
一开始想用唯一分解加约数个数然和求和
看到是求1~n,能不能像筛法那样,突然一想,考虑每个数的贡献不就是n/i,太水了,━━( ̄ー ̄*|||━━
#include<iostream>
using namespace std;
int n,ans=;
int main(){
cin>>n;
for(int i=;i<=n;i++) ans+=n/i;
cout<<ans;
}
4. gcd区间
题目描述
给定一行n个正整数a[1]..a[n]。
m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数。
输入输出格式
输入格式:
第一行两个整数n,m。
第二行n个整数表示a[1]..a[n]。
以下m行,每行2个整数表示询问区间的左右端点。
保证输入数据合法。
输出格式:
共m行,每行表示一个询问的答案。
输入输出样例
5 3
4 12 3 6 7
1 3
2 3
5 5
1
3
7
说明
对于30%的数据,n <= 100, m <= 10
对于60%的数据,m <= 1000
对于100%的数据,1 <= n <= 1000,1 <= m <= 1,000,000
0 < 数字大小 <= 1,000,000,000-------------------------------------
O(n*n)预处理就好了Luogu题目集合[6/未完待续]的更多相关文章
- Codeforces水题集合[14/未完待续]
Codeforces Round #371 (Div. 2) A. Meeting of Old Friends |B. Filya and Homework A. Meeting of Old Fr ...
- 关于DOM的一些总结(未完待续......)
DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...
- C++语言体系设计哲学的一些随想(未完待续)
对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...
- 布隆过滤器(Bloom Filter) 未完待续
布隆过滤器雏形 未完待续..... 计算错误率 现在有一个空额布隆过滤器, 过滤器里的bit array的大小是m. 咱来插入一个元素. 这次插入过程中的第一个hash函数会算出一个位置, 然后把这个 ...
- odoo11 model+Recordset 基础未完待续
Model 一个模型代表了一个业务对象 本质上是一个类,包含了同django flask一样的数据字段 所有定义在模型中的方法都可以被模型本身的直接调用 现在编程范式有所改变,不应该直接访问模型,而是 ...
- PAT A1098 Insertion or Heap Sort (25 分)——堆排序和插入排序,未完待续。。
According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...
- Hibernate二级缓存(未完待续)
1.Hibernate的cache介绍: Hibernate实现了良好的Cache机制,可以借助Hibernate内部的Cache迅速提高系统的数据读取性能.Hibernate中的Cache可分为两层 ...
- 构建Linux根文件系统(未完待续)
所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...
- asp.net面试题总结1(未完待续。。。。)
1.MVC中的TempData\ViewBag\ViewData区别? 答:页面对象传值,有这三种对象可以传. Temp:临时的 Bag:袋子 (1) TempData 保存在Session中,C ...
随机推荐
- 【MVC学习笔记01】初窥奥秘
前言 最近工作落实了,是我非常喜欢的无线前端,会接触很多新东西啦,需要努力才行.因为会用到backbone,所以要学习MVC啦. MVC(模型-视图-控制器),这种模式最早被用于构建桌面程序和服务器端 ...
- SubSonic2.2框架的使用方法和配置说明
网上.net ORM框架也不少,但是我感觉这个框架配置很简单的,前几年貌似用的人很多,现在好像用得比较少了,随着它官方的升级现在已经到3.0了, 并且采用T4 模板生成的方式,代码量好像减少了.不过我 ...
- 安装 Ubuntu 后的个人常用配置
在 ASA 猪队友的带领下,拥抱开源世界,用上了Ubuntu.资深强迫症现身说法,配置符合自己使用习惯的Ubuntu. 1. 窗口标题栏显示菜单项 打开系统设置->外观->行为,在[显示窗 ...
- System.Security.Cryptography.CryptographicException: 指定了无效的提供程序类型
这两天在调用银联在线的支付接口,把银联提供的demo代码copy过来放到自己网站上,生成通过了,但是运行的时候就报错了: 指定了无效的提供程序类型. 说明: 执行当前 Web 请求期间,出现未经处理的 ...
- Mac 常用快捷键
Command+Tab 任意情况下切换应用程序 - 向前循环 Shift+Command+Tab 切换应用程序 - 向后循环 Command+Delete 把选中的资源移到废纸篓 Shift+Comm ...
- 【读书笔记】iOS网络-负载
负载指的是在服务的请求响应事务中交换的数据.常见的负载格式包括XML,JSON与HTML. 进入与发出的负载数据存在很多形式与大小.比如,有些开发者会使用原生的字符串或是以分隔符分开的数据与Web S ...
- 禁止uiscrollview垂直方向滚动,只允许水平方向滚动;或只允许垂直方向滚动
禁止UIScrollView垂直方向滚动,只允许水平方向滚动 scrollview.contentSize = CGSizeMake(你要的长度, 0); 禁止UIScrollView水平方向滚动, ...
- 什么是Java实例初始化块
在本篇文章,我将会使用一个例子展示什么是实例变量初始化块,实例初始化块和静态初始化块,然后说明在Java中实例初始化块是如何工作的. 执行顺序 查看下面的代码,你知道哪个先执行吗? package s ...
- 用了星型转换的sql跑了5小时--->5mins的过程
=================START================================ BI数据仓库环境里面跑着一个crontab job,一旦sql运行超过4hours,就会接 ...
- Servlet/JSP-04 JSP基础
一. JSP概述 Servlet 是 Java 程序,可以在 Java 程序内部返回一段 HTML 代码(字符串形式)到浏览器,供浏览器解释展示. JSP 是一种脚本语言,在 HTML 内部通过嵌入 ...