10.1综合强化刷题 Day7
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的更多相关文章
- 10.1综合强化刷题 Day3 morning
竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s ...
- 10.1综合强化刷题 Day3 afternoon
竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s ...
- 10.1综合强化刷题 Day2 morning
一道图论神题(god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有 ...
- 10.1综合强化刷题 Day2 afternoon
最大值(max) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n的 ...
- 10.1综合强化刷题 Day1 afternoon
一道图论好题(graph) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图, ...
- 10.1综合强化刷题 Day6
T1 排序 题目描述 小Z 有一个数字序列a1; a2; .... ; an,长度为n,小Z 只有一个操作:选 定p(1<p<n),然后把ap 从序列中拿出,然后再插⼊到序列中任意位置. ...
- 10.1综合强化刷题 Day5
T1 拼不出的数 lost.in/.out/.cpp[问题描述]3 个元素的集合{5; 1; 2}的所有子集的和分别是0; 1; 2; 3; 5; 6; 7; 8.发现最小的不能由该集合子集拼出的数字 ...
- 10.1综合强化刷题 Day4
财富(treasure) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以 ...
- 10.1综合强化刷题 Day3
括号序列(bracket) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一个括号序列,但这个序列不一定合法. 一个合法的括号序列如下: ()是合法的 ...
随机推荐
- 【转载】2015年8月编程语言排行榜:Java遥遥领先
Java以4.5%的差距遥遥领先于第二名,回顾以前Java有这样的成绩还是在2008年.Java version 8的成功主要是因为函数式编程习语的添加.Java出现下滑是在2010年 Oracle收 ...
- html调用commonjs规范的js
a.js define(function(require, exports, module) { var test = function(){ console.log("hello worl ...
- 连接Oracle 10g时ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME错误的解决
近日服务器断电,导致客户端连接ORACLE服务器时出现ORA-12514错误,在网上查得解决方法如下 解决方法: 1. 打开/network/admin/listener.ora文件,找到: SID_ ...
- 通过 purge_relay_logs 自动清理relaylog
使用背景 线上物理备份任务是在从库上进行的,xtrabackup会在备份binlog的时候执行flush logs,relay-log会rotate到新的一个文件号,导致sql thread线程应用完 ...
- top/free/df/jstack/jmap
上面的输出,load average后面分别是1分钟.5分钟.15分钟的负载情况.数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的.如果这个数除以CPU 的数目,结果高于5的时候就表明系 ...
- sql server 韩文查询匹配失败
在SQL Server 中查询韩文信息时,没有匹配到对应的信息,检查程序后发现字段类型是nvarchar类型的没有问题, 打开存储过程后找到问题了:原来是拼接后的查询语句存储在一个varchar变量中 ...
- hdu6136[模拟+优先队列] 2017多校8
有点麻烦.. /*hdu6136[模拟+优先队列] 2017多校8*/ #include <bits/stdc++.h> using namespace std; typedef long ...
- 【bzoj2127】happiness 网络流最小割
题目描述 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文 ...
- 【Luogu】P2485计算器(快速幂,exgcd和Bsgs模板)
题目链接 题目描述非常直接,要求你用快速幂解决第一问,exgcd解决第二问,bsgs解决第三问. emmmm于是现学bsgs 第二问让求最小整数解好烦啊…… 假设我们要求得方程$ax+by=c(mod ...
- HDU 3395 Special Fish(拆点+最大费用最大流)
Special Fish Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...