【GYM102091】2018-2019 ACM-ICPC, Asia Nakhon Pathom Regional Contest
A-Evolution Game
题目大意:有$n$个不同的野兽,定义第$i$ 个野兽有 $i$ 个眼睛和 $h[i]$ 个角,你可以任意从中选择一个野兽进行进化,每次进化角数量必须增加,而且进化后要满足眼镜的变化量 $\triangle i \leq w$,求最多的进化次数。
题解:以$h$的值从大到小排序,$f[i]$表示从第i个野兽开始进化的最多次数。对于$1 \leq i \leq j$若满足条件则$f[j]=max \{ f[i]+1 \}$。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std; int n,w,ans;
int f[];
struct hh
{
int eye,horn;
}a[];
bool cmp(hh a,hh b)
{
return a.horn>b.horn;
}
int main()
{
int i,j;;
scanf("%d%d",&n,&w);
for(i=;i<=n;i++)
scanf("%d",&a[i].horn);
for(i=;i<=n;i++)
a[i].eye=i;
sort(a+,a++n,cmp);
for(i=;i<=n;i++)
for(j=i+;j<=n;j++)//h[i]>h[j]
if(a[i].horn>a[j].horn&&abs(a[i].eye-a[j].eye)<=w)
f[j]=max(f[j],f[i]+);
for(i=;i<=n;i++)
ans=max(f[i],ans);
printf("%d",ans);
return ;
}
D-Bus Stop
题目大意:给出$n$个房子的坐标,要建立公交车站使得每个房子离最近的车站不过10公里,求最少的车站数。
题解:从左往右贪心即可。
#include <bits/stdc++.h>
using namespace std;
const int N=3e6;
int m,n;
int a[N];
int ans,lstop;
int main()
{
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}
lstop=a[]+;
ans=;
for(int i=;i<=n;i++){
if(abs(a[i]-lstop)<=){
;
}
else{
lstop=a[i]+;
ans++;
}
}
if(n==)ans=;
if(n==)ans=;
printf("%d\n",ans);
}
}
G-Communication
题目大意:求有向图强连通分量数。
题解:Floyed+并查集或者Tarjan。
#include <bits/stdc++.h>
using namespace std;
const int N=1e3;
int m,n,c,ans,a,b;
int f[N];
int edge[N][N];
int fnd(int x)
{
if(f[x]==x)return x;
return f[x]=fnd(f[x]);
}
int main()
{
scanf("%d",&m);
while(m--)
{
scanf("%d%d",&n,&c);
memset(edge,,sizeof(edge));
for(int i=;i<n;i++)
f[i]=i;
for(int i=;i<=c;i++){
scanf("%d%d",&a,&b);
edge[a][b]=;
}
for(int k=;k<n;k++)
for(int i=;i<n;i++)
for(int j=;j<n;j++){
if(edge[i][k]&&edge[k][j])edge[i][j]=;
}
ans=;
for(int i=;i<n-;i++)
for(int j=i+;j<n;j++){
if(edge[i][j]+edge[j][i]==){
f[j]=fnd(i);
}
}
for(int i=;i<n;i++){
if(f[i]==i)ans++;
}
printf("%d\n",ans);
}
}
H-As rich as Crassus
题目大意:$x^3 \equiv A_i \ \ (mod \ \ N_i) (i=3)$,求$x$。
题解:中国剩余定理
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n,t;
long long ans;
long long b[],m[];
long long exgcd(long long a,long long b,long long &x,long long &y){
if(b==){x=,y=;return a;}
long long d=exgcd(b,a%b,x,y);
long long z=x;x=y,y=z-a/b*y;
return d;
}
void print(long long x){
if(!x) return;
if(x) print(x/);
putchar(x%+'');
}
int main()
{
int i;
long long x,y,M,aa,bb,cc,d,tmp;
bool flag;n=;
scanf("%d",&t);
while(t--)
{
ans=flag=;
for(i=;i<=n;i++)
scanf("%I64d",&m[i]);
for(i=;i<=n;i++)
scanf("%I64d",&b[i]);
M=m[],ans=b[];
for(i=;i<=n;i++)
{
aa=M,bb=m[i],cc=(b[i]-ans%bb+bb)%bb;
x=,y=;
d=exgcd(aa,bb,x,y);
bb=bb/d;
if(cc%d){flag=;break;}
x=((x*cc/d)%bb+bb)%bb;
ans+=M*x;M*=bb;
ans=(ans%M+M)%M;
}
if(flag)puts("-1");
else {
if(!ans)puts("");
else
{
tmp=pow(ans,1.0/3.0);
if(tmp*tmp*tmp<ans) printf("%I64d\n",tmp+);
else printf("%I64d",tmp);
}
}
}
return ;
}
close
J-Floating-Point Hazard
题目大意:给出L,R,求$\sum_{i=L}^{R}(\sqrt[3]{i+10^{-15}}-\sqrt[3]{i})$。
题解:微分
#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
#endif // LOCAL
int a,b;
while(~scanf("%d%d",&a,&b)){
if(!a||!b) break;
double ans=;
for(ll i=a;i<=b;i++){
ans+=pow(i*i,-/3.0);
}
ans*=1.0/*(1e-);
printf("%.5E\n",ans);
}
}
K-The Stream of Corning 2
题目大意:给出若干个数和存在的时间点,问某一时刻存在的数中的第k大。
题解:将一个操作的起始点和终止点拆开标记,按时间排序后,用树状数组+二分求动态第k大数。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int t,n,totp,totq,lim;
struct hh
{
int opt,t,v,k,id;
}p[],q[];
int c[];
int lowbit(int x)
{
return x&(-x);
}
void add(int pos,int v)
{
for(;pos<=lim;pos+=lowbit(pos))
c[pos]+=v;
}
int query(int pos)
{
int ret=;
for(;pos;pos-=lowbit(pos))
ret+=c[pos];
return ret;
}
bool cmp(hh a,hh b)
{
return a.t<b.t;
}
bool cmp2(hh a,hh b)
{
return a.id<b.id;
}
int solve(int k)
{
int l,r,mid,ret,n;
l=;r=lim;
ret=lim;
if(query(lim)<k) return -;
while(l<=r)
{
mid=l+r>>;
if(query(mid)>=k)
{
r=mid-;
ret=min(ret,mid);
}
else l=mid+;
}
return ret;
}
int main()
{
int T,i,j,a,b,z,prep,opt;
scanf("%d",&t);
for(T=;T<=t;T++)
{
scanf("%d",&n);
totp=totq=;
memset(p,,sizeof(p));
memset(q,,sizeof(q));
memset(c,,sizeof(c));
for(i=;i<=n;i++)
{
scanf("%d%d%d",&opt,&a,&b);
lim=max(lim,b);
if(opt==)
{
scanf("%d",&z);
p[++totp].opt=;
p[totp].v=b;
p[totp].t=a; p[++totp].opt=-;
p[totp].v=b;
p[totp].t=z;
}
else
{
q[++totq].t=a;
q[totq].k=b;
q[totq].id=i;
}
}
sort(p+,p++totp,cmp);
sort(q+,q++totq,cmp);
prep=;
for(i=;i<=totq;i++)
{
while(p[prep].t<q[i].t&&prep<=totp)
{
add(p[prep].v,p[prep].opt);
prep++;
}
q[i].v=solve(q[i].k);
}
sort(q+,q++totq,cmp2);
printf("Case %d:\n",T);
for(i=;i<=totq;i++)
printf("%d\n",q[i].v);
}
return ;
}
L-Largest Allowed Area
题目大意:求一个最大的子矩阵,要求子矩阵的和为0或1。
题解:单调队列。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; int t,n,m,ans;
int s[][],a[][];
char c; int main()
{
int i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(s,,sizeof(s));
memset(a,,sizeof(a));
for(i=;i<=n;i++)
for(j=;j<=m;j++)
{
do{c=getchar();}while(c!=''&&c!='');
s[i][j]=c-''+s[i-][j]+s[i][j-]-s[i-][j-];
}
for(i=,ans=;i<=n;i++)
for(j=;j<=m;j++)
{
a[i][j]=a[i-][j-]-(a[i-][j-]>=);
while(i+a[i][j]<=n&&j+a[i][j]<=m&&s[i+a[i][j]][j+a[i][j]]-s[i-][j+a[i][j]]-s[i+a[i][j]][j-]+s[i-][j-]<=)
a[i][j]++;
ans=max(ans,a[i][j]);
}
printf("%d\n",ans);
}
return ;
}
【GYM102091】2018-2019 ACM-ICPC, Asia Nakhon Pathom Regional Contest的更多相关文章
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)
Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...
- 2019-2020 ICPC Asia Hong Kong Regional Contest
题解: https://files.cnblogs.com/files/clrs97/19HKEditorial-V1.zip Code:(Part) A. Axis of Symmetry #inc ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game
G: 要你去才Paul的年龄,Paul的年龄在1~n之间,你每猜一个Paul会告诉你,你猜的这个数和他年龄的gcd,问在最坏情况下最少要猜多少次. 题解: 什么是最坏情况,我们直到如果他的年龄是1的话 ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)E Eve
E: 模拟题,一开始有n个人(有男有女),对于子女来说线粒体DNA是继承母亲的.然后有m个操作(按时间顺序),一种就是给了父亲,母亲的ID,生了一个孩子(编号从n+1开始往下):还有一个就是 -x , ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)K Kingdom Roadmap
K: 给你n个点以及n-1的条边, 问你最少要加多少条边,使得每两个点割去一条联通的边,还可以使的这两个点连通. 有个一个结论,最少添加的边数为(叶子节点数+1)/ 2. 我们可以只考虑叶子节点数应该 ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)B Binary Encoding
B: 现在有一种新的2进制表示法,要你求出0~m-1的每个数的表示. 规则如下:n 是满足 m<=2n 最小数. 而0~m-1的数只能够用n-1个位和n个位来表示. 对于n个位表示的数来说不能有 ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area
A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...
- 2019-2020 ICPC Asia Hong Kong Regional Contest J. Junior Mathematician 题解(数位dp)
题目链接 题目大意 要你在[l,r]中找到有多少个数满足\(x\equiv f(x)(mod\; m)\) \(f(x)=\sum_{i=1}^{k-1} \sum_{j=i+1}^{k}d(x,i) ...
随机推荐
- 信息摘要算法 MessageDigestUtil
package com.xgh.message.digest.test; import java.math.BigInteger; import java.security.MessageDigest ...
- 安装LoadRunner11时,缺少vc2005_sp1_with_atl_fix_redist错误的解决方案
安装LoadRunner11时,会报缺少vc2005_sp1_with_atl_fix_redist错误,类似下图所示: 由提示信息可知,这里是由于本机缺少该组件所致,解决方案就是安装此组件,可以去网 ...
- MYSQL中LIMIT用法_后台分页
LIMIT是MySQL内置函数,其作用是用于限制查询结果的条数. 1)其语法格式如下: LIMIT[位置偏移量,]行数 其中,中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开 ...
- Codeforces 276D
题目链接 这题真的体现了自己思维的不足,考虑问题只是考虑他的特殊性,却不能总结出它的一般性规律. 对于这题, 如果L == R , 那么结果为0. 否则, 我们只需要找到最高的某一位 (二进制数中的某 ...
- win7 powershell版本过低问题
那台win8系统的笔记本电脑 硬盘坏掉后 在win7系统的台式机上使用 vagrant up 提示版本过低 The version of powershell currently installed ...
- ABP 重写主键ID 多表查询ID无效
1.重写ID [Column("数据库指定的ID")] [Column("CarTypeID")] public override int Id { get; ...
- BZOJ 4034 洛谷3178 树上操作题解
一个很裸的树链剖分模板.注意一下数据范围,有的地方要开longlong,这就是唯一的陷阱了. # include<iostream> # include<cstdio> # i ...
- 阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?
轻松筹首创了“大病救助”模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题.而在轻松筹这样全球5.5亿用户信赖的大病筹款平台的背后,是日益增长的各种数据.面对这样数据量所 ...
- Android SwipeActionAdapter结合Pinnedheaderlistview实现复杂列表的左右滑动操作
在上一篇博客<Android 使用SwipeActionAdapter开源库实现简单列表的左右滑动操作>里,已经介绍了利用SwipeActionAdapter来左右滑动操作列表: 然,有时 ...
- shell 解析json
未完待续 ### 解析api json文件为csv文件 cd /api ` do id=$(echo ${i}|sed 's/.html//') echo -n "${id}|" ...