2015 Multi-University Training Contest 1
最近真是太废柴了,题没做几道,也没学什么新知识,多校做了三场也没总结~诶!好好学吧!
多校第一场感觉被完虐...orz...
Hdu 5288 OO’s Sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288
题意:
f(l,r)表示满足ai%aj≠0的i的个数(i∈[l,r],j∈[l,r],j≠i)
已知n个数 a1,a2,…an,求
思路:这个题实质是对于一个包含ai的区间,如果ai符合上述条件,即对于aj,ai%aj≠0,则aj不是ai的因子
对于每一个数ai,分别向左向右去找离它最近的因子的下标L[i],R[i],ans+=(i-L[i])*(R[i]-i);
参考代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
const int N=;
#define Mod 1000000007
using namespace std;
int a[N+],id[N+],L[N+],R[N+];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=; i<=n; i++)
scanf("%d",&a[i]);
memset(id,,sizeof(id));
for(int i=; i<=n; i++) //向左找最近的因子下标
{
L[i]=;
for(int j=; j*j<=a[i]; j++)
if(a[i]%j==) //j和a[i]/j都为a[i]的因子
{
if(id[j])
L[i]=max(L[i],id[j]); //取最大的下标即为最近的
if(id[a[i]/j])
L[i]=max(L[i],id[a[i]/j]);
}
id[a[i]]=i; //记录a[i]的下标
}
memset(id,,sizeof(id));
for(int i=n; i>=; i--) //向右找最近的因子下标
{
R[i]=n+;
for(int j=; j*j<=a[i]; j++)
if(a[i]%j==)
{
if(id[j])
R[i]=min(R[i],id[j]);
if(id[a[i]/j])
R[i]=min(R[i],id[a[i]/j]);
}
id[a[i]]=i;
}
long long ans=;
for(int i=; i<=n; i++)
ans=(ans+(long long)(i-L[i])*(R[i]-i)%Mod)%Mod;
printf("%I64d\n",ans);
}
return ;
}
Assignment
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289
题意: 求有多少个区间满足区间内任意两个数的差值小于k
思路: 区间内最大差值为区间内最大值与最小值的差,只要其差满足条件,
则该区间符合条件左区间l先固定,去找最大区间符合条件,即[l,r-1]符合,
那么ans+=((r−l)/2)+r−l,然后r不变,l不断加1,直到找到符合条件的 [l,r]为止,
那么[l,j-1]会被重复算,需要减掉.
为了更快的查询每个区间的最大最小值,用线段树实现
参考代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; #define LL(x) (x<<1)
#define RR(x) (x<<1|1)
#define MID(a,b) (a+((b-a)>>1))
const int N=;
#define INF (1<<30)
struct node
{
int lft,rht;
int maxm;
int minm;
int mid()
{
return MID(lft,rht);
}
};
struct Segtree
{
node tree[N*];
void build(int lft,int rht,int rt)
{
tree[rt].lft=lft;
tree[rt].rht=rht;
tree[rt].maxm=-INF;
tree[rt].minm=INF;
if(lft==rht)
{
scanf("%d",&tree[rt].minm);
tree[rt].maxm=tree[rt].minm;
}
else
{
int mid=tree[rt].mid();
build(lft,mid,LL(rt));
build(mid+,rht,RR(rt));
tree[rt].maxm=max(tree[LL(rt)].maxm,tree[RR(rt)].maxm);
tree[rt].minm=min(tree[LL(rt)].minm,tree[RR(rt)].minm);
}
}
int querymaxm(int st,int ed,int rt)
{
int lft=tree[rt].lft,rht=tree[rt].rht;
if(st<=lft&&rht<=ed)
return tree[rt].maxm;
else
{
int mid=tree[rt].mid();
int sum1=-INF,sum2=-INF;
if(st<=mid)
sum1=querymaxm(st,ed,LL(rt));
if(ed>mid)
sum2=querymaxm(st,ed,RR(rt));
return max(sum1,sum2);
}
}
int queryminm(int st,int ed,int rt)
{
int lft=tree[rt].lft,rht=tree[rt].rht;
if(st<=lft&&rht<=ed)
return tree[rt].minm;
else
{
int mid=tree[rt].mid();
int sum1=INF,sum2=INF;
if(st<=mid)
sum1=queryminm(st,ed,LL(rt));
if(ed>mid)
sum2=queryminm(st,ed,RR(rt));
return min(sum1,sum2);
}
}
} seg;
__int64 f(__int64 n)
{
if(n%)
{
return (n-)/*n;
}
return n/*(n-);
}
int main()
{
int T;
int i,j;
int n,k;
scanf("%d",&T);
while(T--)
{
__int64 sum=;
scanf("%d%d",&n,&k);
seg.build(,n,);
i=;
j=;
while(i<=n&&j<=n)
{
int ma=seg.querymaxm(i,j,);
int mi=seg.queryminm(i,j,);
if((ma-mi)>=k)
{
sum+=(j-i)+f(j-i);
i++;
for(; i<j; i++)
{
if((seg.querymaxm(i,j,)-seg.queryminm(i,j,))<k)
{
sum-=(j-i)+f(j-i);
j++;
break;
}
}
}
else
{
if(j==n)
sum+=(j-i+)+f(j-i+);
j++;
}
}
printf("%I64d\n",sum);
}
return ;
}
2015 Multi-University Training Contest 1的更多相关文章
- 2015 Multi-University Training Contest 8 hdu 5390 tree
tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ...
- 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】
2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North ...
- 2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】
2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据 ...
- Root(hdu5777+扩展欧几里得+原根)2015 Multi-University Training Contest 7
Root Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Su ...
- 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)
官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...
- HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- hdu 5288 OO’s Sequence(2015 Multi-University Training Contest 1)
OO's Sequence Time Limit: 4000/2000 MS (Jav ...
- HDU5294 Tricks Device(最大流+SPFA) 2015 Multi-University Training Contest 1
Tricks Device Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To ...
- hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)
CRB and Tree Time Limit: 8000/4000 MS (J ...
- 2015多校联合训练赛 hdu 5308 I Wanna Become A 24-Point Master 2015 Multi-University Training Contest 2 构造题
I Wanna Become A 24-Point Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 ...
随机推荐
- USACO Longest Prefix 【水】
用Dp的思想解决了这道题目,也就是所谓的暴力= = 题意:给出一个集合,一个字符串,找出这个字符串的最长前缀,使得前缀可以划分为这个集合中的元素(集合中的元素可以不全部使用). 还不会Trie 树QA ...
- MessageBox不能前置显示的问题
在MFC的开发中,经常会遇到一些莫名奇妙的问题,可能是经验不足的原因吧. 进入正题....在手头的项目中,用MFC做的界面应用.在某一天突然发现程序界面不能进行响应,经过反复的调试后发现:Messag ...
- const关键字详解
const在函数前与函数后的区别 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; ...
- 采用sharedPreference保存数据
1.sharedPreference保存数据 package com.example.login.service; import java.io.BufferedReader; import java ...
- Java进阶05 多线程
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/15/3000898.html 作者:Vamei 出处:http://www.cnblogs.com ...
- eclipse No Default Proposals 无提示
链接地址:http://blog.csdn.net/rogerjava/article/details/5689785 今天特抑郁,早上开机后发现eclipse的代码提示功能不好使了,Alt+/ 这么 ...
- Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)
一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应 ...
- 通过DWR简化AJAX开发
DWR(Direct Web Remoting)是一个WEB远程调用框架,采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScrip ...
- linux 解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题
解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题 http://www.lin ...
- Java基础07 包
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...