A. Magic Mirror

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e2+; char s[maxn]; int main()
{
int t,i;
scanf("%d",&t);
while (t--)
{
scanf("%s",s);
for (i=;i<strlen(s);i++)
if (s[i]>='a' && s[i]<='z')
s[i]-=;
if (strcmp(s,"JESSIE\0")==)
printf("Good guy!\n");
else
printf("Dare you say that again?\n");
}
return ;
}

B. Mathematical Curse

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e3+; ll a[maxn];
ll f[],l[],r[],LL=3e18,rr=-3e18;
int c[]; int main()
{
int t,n,m,i,j;
scanf("%d",&t);
while (t--)
{
scanf("%d%d%lld",&n,&m,&a[]);
for (i=;i<=n;i++)
scanf("%lld",&a[i]);
l[]=r[]=a[];
scanf("%c",&c[]);
for (i=;i<=m;i++)
{
scanf("%c",&c[i]);
l[i]=LL;
r[i]=rr;
} for (j=;j<=n;j++)
{
for (i=m;i>=;i--)
{
switch(c[i])
{
case '+':
if (l[i-]!=LL)
l[i]=min(l[i],l[i-]+a[j]);
if (r[i-]!=rr)
r[i]=max(r[i],r[i-]+a[j]);
break;
case '-':
if (l[i-]!=LL)
l[i]=min(l[i],l[i-]-a[j]);
if (r[i-]!=rr)
r[i]=max(r[i],r[i-]-a[j]);
break;
case '*':
if (l[i-]!=LL)
l[i]=min(l[i],min(l[i-]*a[j],r[i-]*a[j]));
if (r[i-]!=rr)
r[i]=max(r[i],max(l[i-]*a[j],r[i-]*a[j]));
break;
case '/':
if (a[j]!=)
{
if (l[i-]!=LL)
l[i]=min(l[i],min(l[i-]/a[j],r[i-]/a[j]));
if (r[i-]!=rr)
r[i]=max(r[i],max(l[i-]/a[j],r[i-]/a[j]));
}
break;
}
}
}
printf("%lld\n",r[m]);
}
return ;
}
/*
3
5 5 1000
1000 1000 1000 1000 1000
***** 5 5 1000
-1000 -1000 -1000 -1000 -1000
*****
*/

E. Jiu Yuan Wants to Eat

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define ull unsigned long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const int maxn=1e5+; vector<int>e[maxn];
int fa[maxn],num;
int dep[maxn],siz[maxn],son[maxn],top[maxn];
int id[maxn];
bool vis[maxn];
int n;
ull add[maxn<<],mul[maxn<<],sum[maxn<<]; void dfs1(int d,int deep)
{
vector<int>::iterator j;
int dd;
vis[d]=;
siz[d]=;
dep[d]=deep;
son[d]=;
for (j=e[d].begin();j!=e[d].end();j++)
{
dd=*j;
if (!vis[dd])
{
fa[dd]=d;
dfs1(dd,deep+);
siz[d]+=siz[dd];
if (siz[dd]>siz[son[d]])
son[d]=dd;
}
}
} void dfs2(int d,int topd)
{
vector<int>::iterator j;
int dd;
id[d]=++num;
top[d]=topd;
if (son[d]!=)
{
dfs2(son[d],topd);
for (j=e[d].begin();j!=e[d].end();j++)
{
dd=*j;
if (fa[d]!=dd && son[d]!=dd)
dfs2(dd,dd);
}
}
} void build(int index,int l,int r)
{
add[index]=;
mul[index]=;
sum[index]=;
if (l!=r)
{
int m=(l+r)>>;
build(index<<,l,m);
build(index<<|,m+,r);
}
} void push_down(int index,int len)
{
///(xx*a+b)*c+d
add[index<<]=add[index<<]*mul[index]+add[index];
add[index<<|]=add[index<<|]*mul[index]+add[index]; mul[index<<]=mul[index<<]*mul[index];
mul[index<<|]=mul[index<<|]*mul[index]; sum[index<<]=sum[index<<]*mul[index]+add[index]*((len+)>>); ///
sum[index<<|]=sum[index<<|]*mul[index]+add[index]*(len>>); add[index]=;
mul[index]=;
} void update_add(int index,int l,int r,int x,int y,ull k)
{
if (x<=l && r<=y)
{
sum[index]+=k*(r-l+);
add[index]+=k;
return;
}
if (add[index]!= || mul[index]!=)
push_down(index,r-l+);
int m=(l+r)>>;
if (x<=m)
update_add(index<<,l,m,x,y,k);
if (m<y)
update_add(index<<|,m+,r,x,y,k);
sum[index]=sum[index<<]+sum[index<<|]; ///
} void update_mul(int index,int l,int r,int x,int y,ull k)
{
if (x<=l && r<=y)
{
sum[index]*=k;
add[index]*=k;
mul[index]*=k;
return;
}
if (add[index]!= || mul[index]!=)
push_down(index,r-l+);
int m=(l+r)>>;
if (x<=m)
update_mul(index<<,l,m,x,y,k);
if (m<y)
update_mul(index<<|,m+,r,x,y,k);
sum[index]=sum[index<<]+sum[index<<|];
} ull query(int index,int l,int r,int x,int y)
{
if (x<=l && r<=y)
return sum[index];
if (x>r || y<l)
return ;
if (add[index]!= || mul[index]!=)
push_down(index,r-l+);
int m=(l+r)>>;
return query(index<<,l,m,x,y)+query(index<<|,m+,r,x,y);
} void work1(int x,int y,ull k)
{
while (top[x]!=top[y])
{
if (dep[top[x]]<dep[top[y]])
swap(x,y);
update_mul(,,n,id[top[x]],id[x],k);
x=fa[top[x]];
}
if (dep[x]<dep[y])
swap(x,y);
update_mul(,,n,id[y],id[x],k);
} void work2(int x,int y,ull k)
{
while (top[x]!=top[y])
{
if (dep[top[x]]<dep[top[y]])
swap(x,y);
update_add(,,n,id[top[x]],id[x],k);
x=fa[top[x]];
}
if (dep[x]<dep[y])
swap(x,y);
update_add(,,n,id[y],id[x],k);
} void work3(int x,int y)
{
while (top[x]!=top[y])
{
if (dep[top[x]]<dep[top[y]])
swap(x,y);
update_mul(,,n,id[top[x]],id[x],-);
update_add(,,n,id[top[x]],id[x],-);
x=fa[top[x]];
}
if (dep[x]<dep[y])
swap(x,y);
update_mul(,,n,id[y],id[x],-);
update_add(,,n,id[y],id[x],-);
} ull work4(int x,int y)
{
ull tot=;
while (top[x]!=top[y])
{
if (dep[top[x]]<dep[top[y]])
swap(x,y);
tot+=query(,,n,id[top[x]],id[x]);
x=fa[top[x]];
}
if (dep[x]<dep[y])
swap(x,y);
tot+=query(,,n,id[y],id[x]);
return tot;
} int main()
{
int i,a,u,v,q,mode;
ull x;
while (~scanf("%d",&n))
{
for (i=;i<=n;i++)
e[i].clear();
memset(vis,,sizeof(vis)); for (i=;i<=n;i++)
{
scanf("%d",&a);
e[a].push_back(i);
}
dfs1(,);
num=;
dfs2(,); build(,,n); scanf("%d",&q);
while (q--)
{
scanf("%d",&mode);
if (mode==)
{
scanf("%d%d%llu",&u,&v,&x);
work1(u,v,x);
}
else if (mode==)
{
scanf("%d%d%llu",&u,&v,&x);
work2(u,v,x);
}
else if (mode==)
{
scanf("%d%d",&u,&v);
work3(u,v);
}
else
{
scanf("%d%d",&u,&v);
printf("%llu\n",work4(u,v));
}
}
}
return ;
}
/*
7
1 1 1 2 2 4
5
2 5 6 1
1 1 6 2
4 5 6
3 5 2
4 2 2
2
1
4
3 1 2
4 1 2
3 1 1
4 1 1
7
1 1 1 2 2 4
5
2 5 6 1
1 1 6 2
4 5 6
3 5 2
4 2 2
2
1
4
3 1 2
4 1 2
3 1 1
4 1 1 11
1 1 2 2 2 3 3 8 9 9
10
2 4 10 3
4 1 3
4 6 11 */

F. Modular Production Line

G. Give Candies

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; char s[maxn];
int a[maxn]; int main()
{
int t,len,i;
ll x,y,z;
scanf("%d",&t);
while (t--)
{
scanf("%s",s);
len=strlen(s);
for (i=;i<=len;i++)
a[i]=s[len-i]-;
x=;
for (i=len;i>=;i--)
x=(x*+a[i])%(mod-);
x=(x-+mod-)%(mod-);
y=;
z=;
while (x)
{
if (x & )
z=z*y%mod;
x>>=;
y=y*y%mod;
}
printf("%lld\n",z);
}
return ;
}

H. String and Times

I. Save the Room

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e2+; int main()
{
int x,y,z;
while (~scanf("%d%d%d",&x,&y,&z))
{
if (x%== && y%== && z%==)
printf("No\n");
else
printf("Yes\n");
}
return ;
}

J. Participate in E-sports

1. 不同方法时间上的比较 二分和另外一种方法 (l=(l+n/l)/2 )

其实还有倍增2^k(是否加)-> 2^(k-1)(是否加)-> 2^(k-2)(是否加)… 用加法代替二分的除法,应该会快一点。。。

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; int main()
{
ll n=;
ll l,r,m,v;
int x=,y=;
bool vis; r=n;
while ()
{
x++;
if (r*r==n)
{
vis=;
break;
}
l=n/r;
if (l==r)
{
vis=;
break;
}
r=(l+r)>>;
} l=; r=n;
while ()
{
y++;
m=(l+r)>>;
v=m*m;
if (v==n)
{
vis=;
break;
}
if (l==r)
break;
if (v<n)
l=m+;
else
r=m-;
} printf("%d %d",x,y);
return ;
} /*
100
10 13 123456789
17 27
*/

2.n*(n+1)/2 的找规律

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-10
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; int main()
{
ll i;
double v;
for (i=;i<=;i++)
{
v=sqrt(i*(i+)/);
if (fabs(v-(ll)v)<minv)
printf("%lld\n",i);
}
return ;
}

前一半:二分

后一半:找规律,打表。记录index每一个长度(二进制)都有哪些值

 import java.math.BigInteger;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
boolean vis1,vis2;
Scanner in=new Scanner(System.in);
BigInteger b2=BigInteger.valueOf();
BigInteger b1=BigInteger.valueOf();
BigInteger b0=BigInteger.valueOf();
BigInteger []f=new BigInteger[];
int [][]num=new int[][];
String s100=new String();
BigInteger b100; int i,j,k,len,q,v;
BigInteger n,l,r,m; s100=s100+"";
for (i=;i<=;i++)
s100=s100+"";
b100=new BigInteger(s100); ///100位以内就可以,因为还要平方
f[]=BigInteger.valueOf();
f[]=BigInteger.valueOf();
i=;
while (true)
{
f[i]=f[i-].multiply(BigInteger.valueOf()).subtract(f[i-]);
if (f[i].compareTo(b100)>)
break;
i++;
} for (j=;j<=i-;j++)
{
f[j]=f[j].multiply(f[j]).add(b1);
len=f[j].bitLength();
num[len][]++;
num[len][num[len][]]=j;
} f[i]=BigInteger.valueOf(); //index=1
len=f[i].bitLength();
num[len][]++;
num[len][num[len][]]=i; k=i+;
f[i+]=BigInteger.valueOf();
f[i+]=BigInteger.valueOf();
i+=; while (true)
{
f[i]=f[i-].multiply(BigInteger.valueOf()).subtract(f[i-]);
if (f[i].compareTo(b100)>)
break;
i++;
} for (j=k;j<=i-;j++)
{
f[j]=f[j].multiply(f[j]);
len=f[j].bitLength();
num[len][]++;
num[len][num[len][]]=j;
} q=in.nextInt();
while (q-->)
{
n=in.nextBigInteger(); vis1=false;
l=b1; r=n;
while (l.compareTo(r)<=)
{
m=l.add(r).divide(b2);
v=m.multiply(m).compareTo(n);
if (v==)
{
vis1=true;
break;
}
if (v<)
l=m.add(b1);
else
r=m.subtract(b1);
} vis2=false;
len=n.bitLength(); for (i=;i<=num[len][];i++)
if (n.equals(f[num[len][i]])==true)
{
vis2=true;
break;
} if (vis1 && vis2)
System.out.println("Arena of Valor");
else if (vis1 && !vis2)
System.out.println("Hearth Stone");
else if (!vis1 && vis2)
System.out.println("Clash Royale");
else
System.out.println("League of Legends");
}
}
}
/*
272796309905283809401 2391711738256 */

P.S:
队友求模小质数。过了~

K. Transport Ship

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e4+; ll er[],value=1e4;
ll f[maxn]; int main()
{
int t,n,q,i,j,v,c;
scanf("%d",&t);
er[]=;
for (i=;i<=;i++)
er[i]=er[i-]<<;
while (t--)
{
f[]=;
for (i=;i<=value;i++)
f[i]=;
scanf("%d%d",&n,&q);
while (n--)
{
scanf("%d%d",&v,&c);
for (i=;i<c;i++)
for (j=value;j>=er[i]*v;j--)
f[j]=(f[j]+f[j-er[i]*v])%mod;
}
while (q--)
{
scanf("%d",&i);
printf("%lld\n",f[i]);
}
}
return ;
}

L. Poor God Water

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e2+; ll a[][],b[][],c[][]; void init()
{ int i,j;
for (i=;i<;i++)
for (j=;j<;j++)
a[i][j]=; a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=;
a[][]=; for (i=;i<;i++)
for (j=;j<;j++)
b[i][j]=;
for (i=;i<;i++)
b[i][i]=;
for (i=;i<;i++)
for (j=;j<;j++)
c[i][j]=;
} int main()
{
///%mod
///<3
ll n,r;
int t,i,j,k; // init();
// for (i=0;i<9;i++)
// for (j=0;j<9;j++)
// for (k=0;k<9;k++)
// c[i][j]=(c[i][j]+a[i][k]*a[k][j])%mod;
// r=0;
// for (i=0;i<9;i++)
// for (j=0;j<9;j++)
// r=(r+c[i][j])%mod;
//
// printf("%d\n",r);
// return 0; ///b:danwei result
///a:*** scanf("%d",&t);
while (t--)
{
init();
scanf("%lld",&n);
if (n==)
printf("3\n");
else
{
n-=; while (n)
{
if (n & )
{
for (i=;i<;i++)
for (j=;j<;j++)
{
c[i][j]=b[i][j];
b[i][j]=;
}
for (i=;i<;i++)
for (j=;j<;j++)
for (k=;k<;k++)
b[i][j]=(b[i][j]+a[i][k]*c[k][j])%mod;
} for (i=;i<;i++)
for (j=;j<;j++)
{
c[i][j]=a[i][j];
a[i][j]=;
}
for (i=;i<;i++)
for (j=;j<;j++)
for (k=;k<;k++)
a[i][j]=(a[i][j]+c[i][k]*c[k][j])%mod;
n>>=;
} r=;
for (i=;i<;i++)
for (j=;j<;j++)
r=(r+b[i][j])%mod;
printf("%lld\n",r);
}
}
return ;
}
/*
3
9
20
46
106
244
560
1286
2956
6794
15610
35866
82416
189384
435170
*/

2018 ACM 网络选拔赛 焦作赛区的更多相关文章

  1. 2018 ACM 网络选拔赛 青岛赛区

    一些题目的代码被网站吞了…… Problem B. Red Black Tree http://acm.zju.edu.cn/onlinejudge/searchProblem.do?contestI ...

  2. 2018 ACM 网络选拔赛 北京赛区

    A Saving Tang Monk II #include <bits/stdc++.h> using namespace std; ; struct node { int x,y,z, ...

  3. 2018 ACM 网络选拔赛 徐州赛区

    A. Hard to prepare #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  4. 2018 ACM 网络选拔赛 沈阳赛区

    B. Call of Accepted #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  5. 2018 ACM 网络选拔赛 南京赛区

    A. An Olympian Math Problem #include <cstdio> #include <cstdlib> #include <cmath> ...

  6. ACM-ICPC 2018 焦作赛区网络预赛- G:Give Candies(费马小定理,快速幂)

    There are N children in kindergarten. Miss Li bought them NNN candies. To make the process more inte ...

  7. ACM-ICPC 2018 焦作赛区网络预赛- L:Poor God Water(BM模板/矩阵快速幂)

    God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...

  8. ACM-ICPC 2018 焦作赛区网络预赛

    这场打得还是比较爽的,但是队友差一点就再过一题,还是难受啊. 每天都有新的难过 A. Magic Mirror Jessie has a magic mirror. Every morning she ...

  9. ACM-ICPC 2018 焦作赛区网络预赛J题 Participate in E-sports

    Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...

随机推荐

  1. LInux下设置账号有效时间 以及 修改用户名(同时修改用户组名和家目录)

    在linux系统中,默认创建的用户的有效期限都是永久的,但有时候,我们需要对某些用户的有效期限做个限定!比如:公司给客户开的ftp账号,用于客户下载新闻稿件的.这个账号是有时间限制的,因为是付费的.合 ...

  2. vue element-ui 动态上传

    上传填写完毕的幼儿及体测数据文件,上传成功后会自动导入该文件的数据 <el-upload :action="UploadUrl()" :on-success="Up ...

  3. 软件工程项目之摄影App(第二次冲刺)

    第二次冲刺阶段做出了登录,还有首页.基本界面也成型了. 登录验证码是用了mob的验证码skd.

  4. 《Multiplayer Game Programming》阅读笔记

    在图书馆发现一本<网络多人游戏架构与编程>-- Joshua Glazer, Sanjay Madhav 著.书挺新的,17年出版的,内容很有趣,翻一翻可以学到不少在<计算机网络&g ...

  5. [转帖]召冠总的 SQLSERVER常用的性能诊断语句. --保存学习备查

    CopyFrom https://www.cnblogs.com/zhaoguan_wang /*常规服务器动态管理对象包括:dm_db_*:数据库和数据库对象dm_exec_*:执行用户代码和关联的 ...

  6. SAP字体调节大小

    登陆SAP 之后,菜单下面一行,最右边的那个彩色按钮(SAP GUI),点击“选项”-可视设计-字体设计-固定狂赌字体设计,点击:选择字体 即可.

  7. Chrome disable cache & clear memory cache

    Chrome disable cache & clear memory cache disable cache

  8. SQL 事务 begin tran、commit tran、rollback tran 的用法

    首先理解一下这三个事务的大概意思: begin Transaction 可以理解成新建一个还原点. commit Transaction 提交这个自begin tran开始的修改 rollback T ...

  9. Directory操作

    操作文件夹 CreateDirectory() 创建新文件夹 Delete() 删除 Move() 剪切 Exists() 判断文件夹是否存在 //获取当前目录下所有文件夹的路径 Directory. ...

  10. ajax 提交数组 泛型集合(二)

    最近在项目中,使用 mvc架构,model层使用code first 碰见一个问题,前台json传递数据给后台action的复杂对象,发现复杂对象中的list范型集合并没有获取到数据. 研究半天,终于 ...