noip提高组模拟赛                                                                                                                                                                                                                                                                     (不想改了,弃疗了、、)

                                            (哈哈,三个题打了三个暴力、、)

1.计数

(count.cpp/c/pas)

时间限制:1s

内存限制:256MB

【问题描述】

给出m个数a[1],a[2],…,a[m]

求1~n中有多少数不是a[1],a[2],…,a[m]的倍数。

【输入】

输入文件名为count.in。

第一行,包含两个整数:n,m

第二行,包含m个数,表示a[1],a[2],…,a[m]

【输出】

输出文件名为count.out。

输出一行,包含1个整数,表示答案

【输入输出样例】

count.in

count.out

10 2

2 3

3

【数据说明】

对于60%的数据,1<=n<=106

对于另外20%的数据,m=2

对于100%的数据,1<=n<=109,0<=m<=20,1<=a[i]<=109

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 1000010
#define LL long long
using namespace std;
bool vis[N];
int n,m,x;
int read()
{
    ,f=; char ch=getchar();
    ; char ch=getchar();}
    +ch-',ch=getchar();
    return x*f;
}
int main()
{
    freopen("count.in","r",stdin);
    freopen("count.out","w",stdout);
    n=read(),m=read();
    int j,ans=n;LL s;
    ;i<=m;i++)
    {
        x=read(),j=,s=;
        while(s<n)
        {
            s=(LL)x*(LL)j;j++;
            if(s<=n&&!vis[s]) ans--,vis[s]=true;
        }
    }
    printf("%d",ans);
    ;
}

60分暴力

容斥原理+搜索

都会容斥原理吧,有一个数的时候为+,两个数的时候为- ,三个数的时候+、、、总的来说就是奇数的时候为+偶数的时候为-。(这不废话吗、、)

不是这些数的倍数的数的个数为总共的-每一个数的的倍数的个数+两两的倍数的个数(即为这两个数最小公倍数的倍数的个数)-每三个数的公共倍数的个数(这三个数的最小公倍数的倍数个数)、、、、

a和b最小公倍数=a*b/gcd(a,b)         ,n以内a的倍数的个数为n/a

我们用搜索判断这个数选不选,选的话数的个数+1,与原来的符号就相反,反之就相同,然后进行下一轮搜索

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 50
#define LL long long
using namespace std;
int n,m,a[N];
long long ans;
int read()
{
    ,f=; char ch=getchar();
    ;ch=getchar();}
    +ch-',ch=getchar();
    return x*f;
}
void dfs(int f,int cnt,LL sum)
{
    if(sum>n) return ;
    )
    {
        ans+=n/sum*f;
        return ;
    }
    dfs(-f,cnt+,sum*(LL)a[cnt]/__gcd(sum,(LL)a[cnt]));
    dfs(f,cnt+,sum);
}
int main()
{
    n=read(),m=read();
    ;i<=m;i++) a[i]=read();
    dfs(,,);
    printf("%lld",ans);
    ;
}

AC代码

2.第k大区间

(kth.cpp/c/pas)

时间限制:1s

内存限制:256MB

【问题描述】

定义一个长度为奇数的区间的值为其所包含的的元素的中位数。

现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少。

【输入】

输入文件名为kth.in。

第一行两个数n和k

第二行,n个数。(0<=每个数<231

【输出】

输出文件名为kth.out。

一个数表示答案。

【输入输出样例】

kth.in

kth.out

4 3

3 1 2 4

2

【样例解释】

[l,r]表示区间l~r的值

[1,1]:3

[2,2]:1

[3,3]:2

[4,4]:4

[1,3]:2

[2,4]:2

【数据说明】

对于30%的数据,1<=n<=100;

对于60%的数据,1<=n<=300

对于80%的数据,1<=n<=1000

对于100%的数据,1<=n<=100000, k<=奇数区间的数

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 1010
using namespace std;
int n,k,now,s,a[N],q[N*N],tmp[N];
int read()
{
    ,f=; char ch=getchar();
    ; ch=getchar();}
    +ch-',ch=getchar();
    return x*f;
}
int cmp(int a,int b){return a>b;}
int main()
{
    freopen("kth.in","r",stdin);
    freopen("kth.out","w",stdout);
    n=read(),k=read();
    ;i<=n;i++) a[i]=read();
    ;i<=n;i++)
    {
        now=;
        for(int j=i;j<=n;j++)
        {
            tmp[++now]=a[j];
            ==) continue;
            sort(tmp+,tmp++now);
            q[++s]=tmp[now/+];
        }
     }
    sort(q+,q++s,cmp);
    printf("%d",q[k]);
}

60分暴力

3. 区间求和

(sum.cpp/c/pas)

时间限制:2s

内存限制:256MB

【问题述】

有n个数,给定一个k,求所有长度大于等于k的区间中前k大数的总和。这样就比较简单相信大家都会,所以此题要求当k=1~n的总和,即求

【输入】

输入文件名为sum.in。

输入五个数n,a1,A,B,C。a1表示第一个数,A,B,C用来生成其余n-1个数。a(i)=(a(i-1)*A+B)mod C。1<=n<=1,000,000,0<=a1,A,B,C<=1,000,000,000

【输出】

输出文件名为sum.out。

一个数表示答案,最后答案对1,000,000,007取模。

【输入输出样例】

sum.in

sum.out

3 3 1 1 10

63

样例解释】

三个数为3,4,5

K=1:[1,1]=3,[1,2]=[2,2]=4,[1,3]=[2,3]=[3,3]=5

(表示各个区间在k=1时的答案)

K=2:[1,2]=7,[2,3]=[1,3]=9

K=3:[1,3]=12

【数据说明】

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

对于60%的数据,1<=n<=300

对于80%的数据,1<=n<=1000

对于100%的数据,1<=n<=1000000

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 1010
#define mod 1000000007
#define LL long long
using namespace std;
long long ans,a[N],tmp[N];
int n,A,B,C,now;
int read()
{
    ,f=; char ch=getchar();
    ; char ch=getchar();}
    +ch-',ch=getchar();
    return x*f;
}
LL cmp(LL a,LL b){return a>b;}
int main()
{
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    n=read(),a[]=read();
    A=read(),B=read(),C=read();
    ;i<=n;i++)
     a[i]=(a[i-]*A%C+B%C)%C;
    ;i<=n;i++)
    {
        now=;
        for(int j=i;j<=n;j++)
        {
            tmp[++now]=a[j];
            sort(tmp+,tmp++now,cmp);
            ;k<=now;k++)
             ans=(ans%mod+tmp[k]*(now-k+)%mod)%mod;
        }
    }
    printf("%lld",ans%mod);
    ;
}

60分暴力

10.1综合强化刷题 Day7的更多相关文章

  1. 10.1综合强化刷题 Day3 morning

    竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s ...

  2. 10.1综合强化刷题 Day3 afternoon

    竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s ...

  3. 10.1综合强化刷题 Day2 morning

    一道图论神题(god) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有 ...

  4. 10.1综合强化刷题 Day2 afternoon

    最大值(max) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n的 ...

  5. 10.1综合强化刷题 Day1 afternoon

    一道图论好题(graph) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图, ...

  6. 10.1综合强化刷题 Day6

    T1 排序 题目描述 小Z 有一个数字序列a1; a2; .... ; an,长度为n,小Z 只有一个操作:选 定p(1<p<n),然后把ap 从序列中拿出,然后再插⼊到序列中任意位置. ...

  7. 10.1综合强化刷题 Day5

    T1 拼不出的数 lost.in/.out/.cpp[问题描述]3 个元素的集合{5; 1; 2}的所有子集的和分别是0; 1; 2; 3; 5; 6; 7; 8.发现最小的不能由该集合子集拼出的数字 ...

  8. 10.1综合强化刷题 Day4

    财富(treasure) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以 ...

  9. 10.1综合强化刷题 Day3

    括号序列(bracket) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一个括号序列,但这个序列不一定合法. 一个合法的括号序列如下: ()是合法的 ...

随机推荐

  1. layer父页面调用子页面的方法

    由于不知道如何在子页面获取到layer定义的确定按钮,于是就在子页面上定义了一个方法,然后在由父页面在点确定按钮时调用子页面所定义的这个方法,从而执行子页面方法里面的内容: 子页面代码: functi ...

  2. proguaid 混淆代码

    注意:这里有一个坑.就是-ignorewarnings 他老是混淆不了,告诉你不行.其实加上这句话,就可以了. 下面贴一下代码: -injars c:/ceb_lib.jar -outjars c:/ ...

  3. 有关js的一些小问题

    忘了从哪里找来抄下来的: js执行顺序问题 1.函数的声明和调用 “定义式”函数声明 function fn1() {......} "赋值式"函数声明 var f=functio ...

  4. idea 占用内存优化调整

      idea 占用内存优化调整 https://www.cnblogs.com/metoy/p/5967696.html   https://blog.csdn.net/zdxxinlang/arti ...

  5. 【Best Time to Buy and Sell Stock III 】cpp

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  6. [DM8168]Linux下控制GPIO控制12864液晶屏(ST7565控制器)

    首先加载驱动模块,应用程序通过调用API实现GPIO控制功能. 驱动函数: /* * fileName: st7565_driver.c * just for LCD12864 driver * GP ...

  7. 如何删除本地docker images镜像

    背景 本地空间较小,想删除无效的docker镜像内容. 操作步骤 查看本地docker镜像 尝试删除本地镜像 发现无法直接删除镜像 原因分析: 有关联docker容器,无法删除 删除docker容器 ...

  8. mysql的下载及配置(复制1)

    ---恢复内容开始--- MySQL数据库安装与配置详解 目录 一.概述 二.MySQL安装 三.安装成功验证 四.NavicatforMySQL下载及使用 一.概述 MySQL版本:5.7.17 下 ...

  9. VS 2013插件

    http://www.spersky.com/post/vsPlugins.html http://vswebessentials.com/download http://developer.51ct ...

  10. Java简明教程 12.多线程(multithreading)

    单线程和多线程 关于它们的区别,zhihu上有一个回答,我认为十分不错,如下: . 单进程单线程:一个人在一个桌子上吃菜. . 单进程多线程:多个人在同一个桌子上一起吃菜. . 多进程单线程:多个人每 ...