题目列表:hdu5214~5223

5214:

当时第一反应是由递推公式推出通项公式,事实证明这就是作!大!死!

因为通项公式是这样的:L[n]=a^(n-1)*(b+L[1])-b

于是就需要快速幂。然而用了快速幂还是慢。。。【实际上是被卡在了7000ms多一点点。。。】

其实直接放到数组里一项一项递推就行。。速度并不慢还省事

另外本题还有一个point:被mod的那个数字很奇怪,所以直接用unsigned int存就行。不仅省空间还不用mod了(溢出相当于自动mod)

当时没想起来这个于是用了long long,于是数组存不下,于是T^T

 #include <iostream>
#include <cstdio>
#include <cstring>
#define LL unsigned int
//#define MOD 4294967296
using namespace std;
LL N,L1,R1,a,b,c,d,T;
LL ll[],rr[];
LL li,ri; int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d%d%d%d",&N,&L1,&R1,&a,&b,&c,&d);
ll[]=L1; rr[]=R1;
if(L1>R1) swap(L1,R1);
LL minl=L1,minr=R1,maxl=L1,maxr=R1;
for(LL i=;i<=N;i++)
{
ll[i]=ll[i-]*a+b;
rr[i]=rr[i-]*c+d;
li=ll[i],ri=rr[i];
if(li>ri) swap(li,ri);
if (ri<minr)
{
minl=li;
minr=ri;
}
if (li>maxl)
{
maxl=li;
maxr=ri;
}
}
bool ok=false;
//cout<<minl<<","<<minr<<" "<<maxl<<","<<maxr<<endl;
for(LL i=;i<=N;i++)
{
li=ll[i]; ri=rr[i];
if(li>ri) swap(li,ri);
//cout<<li<<","<<ri<<endl;
if((li>minr)&&(ri<maxl))
{
ok=true;
break;
}
}
if (ok) printf("YES\n"); else printf("NO\n");
}
return ;
}

5222:

并查集+拓扑排序

对于双向边联通的那些点,可以看作一个点。(因为它们任意两点之间都可以到达)

最后把这个union作为一个点,和剩下的单向边放一起构图。然后拓扑排序判断有没有环。

  #pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstdio>
#include<vector>
#include<cstring>
using namespace std;
#define MAXN 10000000
int f[MAXN]; //father
int d[MAXN]; //->i
int nxt[MAXN];
int head[MAXN];
int ev[MAXN];
int cnt;
int N,M1,M2,T,x,y; int find(int x)
{
if (f[x]!=x)
f[x]=find(f[x]);
return f[x];
} void iunion(int x,int y)
{
int fx,fy;
fx=find(x);
fy=find(y);
if (fx!=fy)
f[fx]=fy;
} void addedge(int x,int y) //x->y
{
d[y]++; //d[i]:点i的入度
ev[cnt]=y; //ev[i]:第i条边的destination
nxt[cnt]=head[x]; //nxt[i]:第i条边的下一条边
head[x]=cnt; //head[i]:由i节点出发的第一条边的序号
cnt++;
} void topsort()
{
int res=;
vector<int>vec;
for(int i=; i<=N; i++)
if(i==find(i))
{
++res;
if(d[i]==)
vec.push_back(i);
}
for(int i=; i<vec.size(); i++)
{
int u=vec[i];
for(int j=head[u]; ~j; j=nxt[j])
{
int v=ev[j];
d[v]--;
if(!d[v])
vec.push_back(v);
}
}
int last=vec.size();
if(last!=res)
printf("YES\n");
else printf("NO\n");
} int main()
{
cin>>T;
while(T--)
{
scanf("%d%d%d",&N,&M1,&M2);
for(int i=; i<=N; i++) f[i]=i;
bool ok=false;
for(int i=; i<=M1; i++)
{
scanf("%d%d",&x,&y);
int fx=find(x),fy=find(y);
if(fx==fy) ok=true;
else f[fx]=fy;
}
cnt=;
memset(d,,sizeof(d));
memset(head,-,sizeof(head));
for(int i=; i<=M2; i++)
{
scanf("%d%d",&x,&y);
int tx=find(x),ty=find(y);
addedge(tx,ty);
}
if(ok)
{
printf("YES\n");
}
else
topsort(); } return ;
}

5223:

这题当时交给队友了。。。。

题意:给出若干L,R,A,表示gcd(p[L],p[L+1],...,p[R])=A。要求解出原数组p[]

sol:首先来看几个有代表性的情况:

1 9 7     1 9 6    1 9 8    1 9 3    1 9 4    1 9 8    1 5 3

2 5 3     2 5 4    2 5 4    2 5 7    2 5 6    2 5 4    2 7 7

stupid     stupid     stupid    stupid     stupid    ok      ok

对所有的L,R,A,令p[i]=lcm(p[i],A)(L<=i<=R)。最后再验证一遍

其实最后验证的时候求区间的gcd可以用优化的方法(类似RMQ的那个)。本题数据小懒得用了= =

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LL long long LL p[]; //array
int L[],R[]; //Li,Ri
LL A[]; //Ansi
int T,N,Q; LL gcd(LL a,LL b) //辗转相除法,返回gcd(a,b)
{
if (b==) return a;
return gcd(b,a%b);
} LL lcm(LL a,LL b)
{
LL t=gcd(a,b);
t=a*b/t;
return t;
} LL ggcd(int l,int r)
{
LL aa=p[l];
for(int i=l+;i<=r;i++)
aa=gcd(aa,p[i]);
return aa;
} LL llcm(int l,int r)
{
LL aa=p[l];
for(int i=l+;i<=r;i++)
aa=lcm(aa,p[i]);
return aa;
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&N,&Q);
for(int i=;i<=;i++)p[i]=;
for(int i=;i<=Q;i++)
{
scanf("%d%d%I64d",&L[i],&R[i],&A[i]);
//LL t=llcm(L[i],R[i]);
//t=lcm(t,A[i]);
for(int j=L[i];j<=R[i];j++)
p[j]=lcm(p[j],A[i]);
//p[j]=t;
}
bool ok=true;
for (int i=;i<=Q;i++)
{
LL t=ggcd(L[i],R[i]);
// printf("%d,%d = %I64d\n",L[i],R[i],t);
if (t!=A[i]) ok=false;
}
// for(int i=1;i<=N;i++)
// printf("%d ",p[i]);
// printf("\n");
if(ok)
{
for(int i=;i<N;i++)
printf("%I64d ",p[i]);
printf("%I64d\n",p[N]);
}
else
printf("Stupid BrotherK!\n");
}
return ;
}

bestcoder杯回顾的更多相关文章

  1. IDDD 实现领域驱动设计-一个简单业务用例的回顾和理解

    上一篇:<IDDD 实现领域驱动设计-由贫血导致的失忆症> 这篇博文是对<实现领域驱动设计>第一章后半部分内容的理解. Domain Experts-领域专家 这节点内容是昨天 ...

  2. 4星|《情感驱动》:可口可乐营销VP的案例回顾与经验总结

    情感驱动 作者是西班牙人,1963年出生,可口可乐前营销VP. 作者大学是法律专业,毕业后5年,在西班牙开了一个律师事务所,干了1年后去读MBA.1988年进入宝洁工作,1996年跳槽到可口可乐,辗转 ...

  3. 【BestCoder】【Round#42】

    模拟+链表+DP Orz AK爷faebdc A Growin要跟全部的n个人握手共2n杯香槟,再加上每对关系的两杯香槟,直接统计邻接矩阵中1的个数,再加2n就是answer //BestCoder ...

  4. 如何获取(GET)一杯咖啡——星巴克REST案例分析

    英文原文:How to GET a Cup of Coffee 我们已习惯于在大型中间件平台(比如那些实现CORBA.Web服务协议栈和J2EE的平台)之上构建分布式系统了.在这篇文章里,我们将采取另 ...

  5. [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)

    期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...

  6. 程序语言与编程实践2-> 蓝桥杯C/C++备赛记录1 | 入门了解与首周训练

    寒假前班主任帮我们报了名,是得好好准备准备.作为一个CSer,coding能力一定不能太弱.我反思,好久没写C/C++代码了,净是些随手写的python脚本,刚开始上手题目bug一大堆. 由于也不是啥 ...

  7. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  8. SQL Server-表表达式基础回顾(二十四)

    前言 从这一节开始我们开始进入表表达式章节的学习,Microsoft SQL Server支持4种类型的表表达式:派生表.公用表表达式(CTE).视图.内嵌表值函数(TVF).简短的内容,深入的理解, ...

  9. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

随机推荐

  1. iOS APNS配置(转)

    Introduction To send Push notification to an application/device couple you need an unique device tok ...

  2. .NET Core)的ZooKeeper异步客户端

    支持断线重连.永久watcher.递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端   阅读目录 什么是ZooKeeper? 项目介绍 提供的功能 使用说明 FAQ 在公司内部 ...

  3. 细细品味Storm_Storm简介及安装

    Storm是由专业数据分析公司BackType开发的一个分布式实时数据处理软件,可以简单.高效.可靠地处理大量的数据流.Twitter在2011年7月收购该公司,并于2011年9月底正式将Storm项 ...

  4. log4j导致的性能问题

    问题背景 双十一零点时,有一个服务A(后文该服务都用A来代替)的tp99由平常的50ms左右突然彪到60000ms,导致调用端积累了几十W的数据,同时,也影响到了同一个docker上的其他服务.那为什 ...

  5. Use Dapper ORM With ASP.NET Core

    Dapper.NET is not just another ORM tool, it's considered as the king of ORM. Because it's fast, easy ...

  6. FineUI小技巧(4)关闭窗体那些事

    前言 FineUI中的Window控件常用作选择.新增或编辑内容.而关闭Window控件却有很多技巧,了解这些技巧有助于项目的快速开发. 如何关闭Window控件 第一个问题就是如何关闭Window控 ...

  7. C#微信公众号开发系列教程五(接收事件推送与消息排重)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  8. UWP 快速的Master/Detail实现

    最近在写快报(还没有写完)的过程中,一开始就遇到了这个Master/Detail如何实现的问题. 微软给出Demo并不符合要求,搜索后找到了今日头条开发者写的一篇 :实现Master/Detail布局 ...

  9. 【有人@我】Android中高亮变色显示文本中的关键字

    应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助, ...

  10. SublimeText3下的Python开发环境配置

    最近重装了机器,需要重新安装Python的开发环境,中间遇到了几个问题,特些记录一下,以防下次备忘. 从Python的网站下载安装Python,这个非常简单,没有什么值得说的,大家可以参考廖雪峰的这个 ...