bestcoder杯回顾
题目列表: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杯回顾的更多相关文章
- IDDD 实现领域驱动设计-一个简单业务用例的回顾和理解
上一篇:<IDDD 实现领域驱动设计-由贫血导致的失忆症> 这篇博文是对<实现领域驱动设计>第一章后半部分内容的理解. Domain Experts-领域专家 这节点内容是昨天 ...
- 4星|《情感驱动》:可口可乐营销VP的案例回顾与经验总结
情感驱动 作者是西班牙人,1963年出生,可口可乐前营销VP. 作者大学是法律专业,毕业后5年,在西班牙开了一个律师事务所,干了1年后去读MBA.1988年进入宝洁工作,1996年跳槽到可口可乐,辗转 ...
- 【BestCoder】【Round#42】
模拟+链表+DP Orz AK爷faebdc A Growin要跟全部的n个人握手共2n杯香槟,再加上每对关系的两杯香槟,直接统计邻接矩阵中1的个数,再加2n就是answer //BestCoder ...
- 如何获取(GET)一杯咖啡——星巴克REST案例分析
英文原文:How to GET a Cup of Coffee 我们已习惯于在大型中间件平台(比如那些实现CORBA.Web服务协议栈和J2EE的平台)之上构建分布式系统了.在这篇文章里,我们将采取另 ...
- [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)
期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...
- 程序语言与编程实践2-> 蓝桥杯C/C++备赛记录1 | 入门了解与首周训练
寒假前班主任帮我们报了名,是得好好准备准备.作为一个CSer,coding能力一定不能太弱.我反思,好久没写C/C++代码了,净是些随手写的python脚本,刚开始上手题目bug一大堆. 由于也不是啥 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- SQL Server-表表达式基础回顾(二十四)
前言 从这一节开始我们开始进入表表达式章节的学习,Microsoft SQL Server支持4种类型的表表达式:派生表.公用表表达式(CTE).视图.内嵌表值函数(TVF).简短的内容,深入的理解, ...
- [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
随机推荐
- iOS APNS配置(转)
Introduction To send Push notification to an application/device couple you need an unique device tok ...
- .NET Core)的ZooKeeper异步客户端
支持断线重连.永久watcher.递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端 阅读目录 什么是ZooKeeper? 项目介绍 提供的功能 使用说明 FAQ 在公司内部 ...
- 细细品味Storm_Storm简介及安装
Storm是由专业数据分析公司BackType开发的一个分布式实时数据处理软件,可以简单.高效.可靠地处理大量的数据流.Twitter在2011年7月收购该公司,并于2011年9月底正式将Storm项 ...
- log4j导致的性能问题
问题背景 双十一零点时,有一个服务A(后文该服务都用A来代替)的tp99由平常的50ms左右突然彪到60000ms,导致调用端积累了几十W的数据,同时,也影响到了同一个docker上的其他服务.那为什 ...
- 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 ...
- FineUI小技巧(4)关闭窗体那些事
前言 FineUI中的Window控件常用作选择.新增或编辑内容.而关闭Window控件却有很多技巧,了解这些技巧有助于项目的快速开发. 如何关闭Window控件 第一个问题就是如何关闭Window控 ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- UWP 快速的Master/Detail实现
最近在写快报(还没有写完)的过程中,一开始就遇到了这个Master/Detail如何实现的问题. 微软给出Demo并不符合要求,搜索后找到了今日头条开发者写的一篇 :实现Master/Detail布局 ...
- 【有人@我】Android中高亮变色显示文本中的关键字
应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助, ...
- SublimeText3下的Python开发环境配置
最近重装了机器,需要重新安装Python的开发环境,中间遇到了几个问题,特些记录一下,以防下次备忘. 从Python的网站下载安装Python,这个非常简单,没有什么值得说的,大家可以参考廖雪峰的这个 ...