1. P1327数列排序

题目描述

给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换?

输入输出格式

输入格式:

第一行,正整数n (n<=100,000)。

以下若干行,一共n个数,用空格分隔开,表示数列{an},任意-231<ai<231。

输出格式:

只有一行,包含一个数,表示最少的交换次数。

输入输出样例

输入样例#1:

  1. 8
  2. 8 23 4 16 77 -5 53 100
输出样例#1:

  1. 5
  2.  
  3. ---------------------------------------------------------------------------------------------------------------
    本以为是逆序对,发现不一定相邻交换
    找一条交换链,从原位置到新位置不停地走,最终会是一个环
    注意每次加cnt-1,因为最后一次两个都到了正确位置
    代码实现原位置封装结构体,排序,flag代表归位,走就行了
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N=100005;
  6.  
  7. struct node{
  8. int o,w;
  9. }a[N];
  10. bool cmp(const node &a,const node &b){
  11. return a.w<b.w;
  12. }
  13. int n,flag[N],ans=0; //guiwei
  14. int main(){
  15. scanf("%d",&n);
  16. for(int i=1;i<=n;i++){
  17. scanf("%d",&a[i].w); a[i].o=i;
  18. }
  19. sort(a+1,a+1+n,cmp);
  20. for(int i=1;i<=n;i++){
  21. if(flag[i]==0){
  22. int now=i,cnt=0;
  23. while(flag[now]==0){
  24. cnt++;
  25. flag[now]=1;
  26. now=a[now].o;
  27. }
  28. ans+=cnt-1;
  29. }
  30. }
  31. cout<<ans;
  32. }
  1.  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:

  1. 1
  2. 2 3
输出样例#1:

  1. 9
    ------------------------------------------------------------------------------------------
    暴力只能拿30
    f[i]表示i^b%10000的结果,考虑每个fi对答案的贡献 a^b mod 10000=(a+10000)^b mod 10000
    复杂度O(10000*logb*N)
    不用long long也可以
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cstring>
  5. using namespace std;
  6. const int MOD=10000,N=10005;
  7. typedef long long ll;
  8. int n;
  9. ll a,b;
  10. ll f[N];
  11.  
  12. ll powMod(ll a,ll b){
  13. ll ans=1;
  14. for(;b;b>>=1,a=(a*a)%MOD)
  15. if(b&1) ans=(ans*a)%MOD;
  16. return ans;
  17. }
  18. ll solve(ll a,ll b){
  19. for(int i=1;i<=MOD;i++)
  20. f[i]=powMod(i,b);
  21. ll div=a/MOD,mod=a%MOD;
  22. ll ans=0;
  23. for(int i=1;i<=MOD;i++){
  24. ans=(ans+div*f[i])%MOD;
  25. if(i<=mod) ans=(ans+f[i])%MOD;
  26. }
  27. return ans;
  28. }
  29. int main(){
  30. scanf("%d",&n);
  31. for(int i=1;i<=n;i++){
  32. memset(f,0,sizeof(f));
  33. scanf("%lld%lld",&a,&b);
  34. cout<<solve(a,b)<<"\n";
  35. }
  36. }
  1.  3.P1403约数研究

题目描述

科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel2”的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联允许用“Samuel2”进行数学研究。

小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示。现在小联希望用“Samuel2”来统计f(1)到f(N)的累加和M。

f(n)表示n的约数个数,现在给出n,要求求出f(1)到f(n)的总和。

输入输出格式

  1. 输入格式:

输入一行,一个整数n

  1. 输出格式:

输出一个整数,表示总和

输入输出样例

输入样例#1:

  1. 3
输出样例#1:

  1. 5
  1. ------------------------------------
    一开始想用唯一分解加约数个数然和求和
    看到是求1~n,能不能像筛法那样,突然一想,考虑每个数的贡献不就是n/i,太水了,━━( ̄ー ̄*|||━━
  1. #include<iostream>
  2. using namespace std;
  3. int n,ans=;
  4. int main(){
  5. cin>>n;
  6. for(int i=;i<=n;i++) ans+=n/i;
  7. cout<<ans;
  8. }
  1.  
  1. 4. gcd区间

题目描述

给定一行n个正整数a[1]..a[n]。

m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数。

输入输出格式

  1. 输入格式:

第一行两个整数n,m。

第二行n个整数表示a[1]..a[n]。

以下m行,每行2个整数表示询问区间的左右端点。

保证输入数据合法。


  1. 输出格式:

共m行,每行表示一个询问的答案。

输入输出样例

输入样例#1:

  1. 5 3
  2. 4 12 3 6 7
  3. 1 3
  4. 2 3
  5. 5 5
输出样例#1:

  1. 1
  2. 3
  3. 7

说明

对于30%的数据,n <= 100, m <= 10

对于60%的数据,m <= 1000

对于100%的数据,1 <= n <= 1000,1 <= m <= 1,000,000

  1. 0 < 数字大小 <= 1,000,000,000
    -------------------------------------
    O(n*n)预处理就好了
  2. Luogu题目集合[6/未完待续]的更多相关文章

      1. Codeforces水题集合[14/未完待续]
      1. Codeforces Round #371 (Div. 2) A. Meeting of Old Friends |B. Filya and Homework A. Meeting of Old Fr ...

      1. 关于DOM的一些总结(未完待续......)
      1. DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...

      1. C++语言体系设计哲学的一些随想(未完待续)
      1. 对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...

      1. 布隆过滤器(Bloom Filter) 未完待续
      1. 布隆过滤器雏形 未完待续..... 计算错误率 现在有一个空额布隆过滤器, 过滤器里的bit array的大小是m. 咱来插入一个元素. 这次插入过程中的第一个hash函数会算出一个位置, 然后把这个 ...

      1. odoo11 model+Recordset 基础未完待续
      1. Model 一个模型代表了一个业务对象 本质上是一个类,包含了同django flask一样的数据字段 所有定义在模型中的方法都可以被模型本身的直接调用 现在编程范式有所改变,不应该直接访问模型,而是 ...

      1. PAT A1098 Insertion or Heap Sort 25 分)——堆排序和插入排序,未完待续。。
      1. According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

      1. Hibernate二级缓存(未完待续)
      1. 1.Hibernatecache介绍: Hibernate实现了良好的Cache机制,可以借助Hibernate内部的Cache迅速提高系统的数据读取性能.Hibernate中的Cache可分为两层 ...

      1. 构建Linux根文件系统(未完待续)
      1.       所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...

      1. asp.net面试题总结1(未完待续。。。。)
      1. 1.MVC中的TempData\ViewBag\ViewData区别? 答:页面对象传值,有这三种对象可以传. Temp:临时的 Bag:袋子 (1)  TempData  保存在Session中,C ...

    1. 随机推荐

        1. 【高级功能】使用Web存储
        1. Web存储允许我们在浏览器里保存简单的键/值数据.Web存储和cookie很相似,但它有着更好的实现方式,能保存的数据量也很大.这两种类型共享相同的机制,但是被保存数据的可见性和寿命存在区别. PS: ...

        1. SharePoint解决The security validation for this page is invalid.
        1. 我是在一个service后台用object modelcheck in一个spfile的时候报的这个错.这是SharePoint的一种保护机制,在处理不能确定是安全的请求时,sharepoint就会 ...

        1. ubuntu处理中文时设置locale
        1. ubuntu下涉及中文处理的程序时,需要正确设置,否则会出现问号或者乱码的情况 具体的原因: http://wiki.ubuntu.org.cn/Locale locale的解释 http://wik ...

        1. iOS开发-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"
        1. 转载自:http://www.jianshu.com/p/e38a609f786e

        1. Android http 的使用
        1. 1.okHttp https://github.com/square/okhttp 2.okhttp-utils       https://github.com/hongyangAndroid/ok ...

        1. 获取设备IMEI ,手机名称,系统SDK版本号,系统版本号
        1. 1.获取设备IMEI TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); Str ...

        1. UI键盘通知
        1. #import "ViewController.h" @interface ViewController () @property (nonatomic,strong) UITex ...

        1. sqlite3 not found问题解决方法
        1. 测试发现,有些Android手机自带sqlite3命令,有些不带.对于不带sqlite3的手机,我们可以手动将sqlite3加入系统. 执行如下命令 adb remount adb push 路径/s ...

        1. iOS 更改webView文字颜色丶文字大小丶背景色的方法
        1. webViewdelegate回调方法    - (void)webViewDidFinishLoad:(UIWebView *)webView;中写上一下语句即可 //字体大小 [webView ...

        1. 【代码笔记】iOS-UIScrollerView里有两个tableView
        1. 一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...