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的更多相关文章

  1. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  2. 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, ...

  3. 2019-2020 ICPC Asia Hong Kong Regional Contest

    题解: https://files.cnblogs.com/files/clrs97/19HKEditorial-V1.zip Code:(Part) A. Axis of Symmetry #inc ...

  4. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game

    G: 要你去才Paul的年龄,Paul的年龄在1~n之间,你每猜一个Paul会告诉你,你猜的这个数和他年龄的gcd,问在最坏情况下最少要猜多少次. 题解: 什么是最坏情况,我们直到如果他的年龄是1的话 ...

  5. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)E Eve

    E: 模拟题,一开始有n个人(有男有女),对于子女来说线粒体DNA是继承母亲的.然后有m个操作(按时间顺序),一种就是给了父亲,母亲的ID,生了一个孩子(编号从n+1开始往下):还有一个就是 -x , ...

  6. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)K Kingdom Roadmap

    K: 给你n个点以及n-1的条边, 问你最少要加多少条边,使得每两个点割去一条联通的边,还可以使的这两个点连通. 有个一个结论,最少添加的边数为(叶子节点数+1)/ 2. 我们可以只考虑叶子节点数应该 ...

  7. 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个位表示的数来说不能有 ...

  8. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area

    A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...

  9. 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) ...

随机推荐

  1. No.4 Verilog 表达式

    4-1 操作数 常数.参数.线网.变量.位选.存储器.数组. *部分位选: integer mark; :] inst; :] gpio; inst[mark+ : ] //选择 mark,mark+ ...

  2. IOS 后台挂起程序 当程序到后台后,继续完成Long-Running Task 任务

    我们知道,到我们程序从前台退到后台(安home)键后,将执行程序的委托方法. // 当应用程序掉到后台时,执行该方法 - (void)applicationDidEnterBackground:(UI ...

  3. 你在用 JWT 代替 Session?

    现在,JSON Web Tokens (JWT) 是非常流行的.尤其是 Web 开发领域. 流行 安全 稳定 易用 支持 JSON 所有这些因素,令 JWT 名声大振. 但是,今天我要来说说使用 JW ...

  4. Alpha版本第一周作业

    姓名 学号 周前计划安排 每周实际工作记录 自我打分 LTR 61213 1.撰写博客2.分配具体任务并完成个人任务 1.已完成博客撰写2.任务分配完成并继续构思实现方法 95 LHL 61212 完 ...

  5. 关于 KiCad 画圆弧走线

    关于 KiCad 画圆弧走线 有很多关于 关于 KiCad 画圆弧走线的帖子. 最新进展是 V6 在开发中. 但是因为关于 DRC 问题,开发好像有难度. https://bugs.launchpad ...

  6. CNN输出维度的计算

    在 CNN 的一层中的 patch 中共享权重 w ,无论猫在图片的哪个位置都可以找到.   当我们试图识别一个猫的图片的时候,我们并不在意猫出现在哪个位置.无论是左上角,右下角,它在你眼里都是一只猫 ...

  7. Redis源码解析:03字典

    字典是一种用于保存键值对(key value pair)的抽象数据结构.在字典中,一个键和一个值进行关联,就是所谓的键值对.字典中的每个键都是独一无二的,可以根据键查找.更新值,或者删除整个键值对等等 ...

  8. 【Bzoj1875】HH去散步

    [Bzoj1875]HH去散步 先说一下边点互化的思路(貌似这种题不多?),以后看见边数少的要死的记得想边点乎化,将无向边变成有向边在考虑边之间的可达性,如果边x的终点是边y的起点(前提不是同一条边) ...

  9. Sublime插件:增强篇

    Sublime Text 如何安装插件详见:https://packagecontrol.io/installation WordCount:可以实时显示当前文件的字数. 安装后,后下角多出字数 En ...

  10. Project Euler Problem 14-Longest Collatz sequence

    记忆化搜索来一发.没想到中间会爆int #include <bits/stdc++.h> using namespace std; const int MAXN = 1000000; in ...