啊人生第一次打多校被虐

紧随yql的脚步做题。

1001:

可以发现我们平时表示的数都是$x*log_{10}{10}$,所以类似于做一个换底公式就可以了。

-1是一个烟雾弹,因为小学生都知道2^n不可能是整十的数。

#include<bits/stdc++.h>
#define N 100005
using namespace std;
double x,y;
int m;
int main(){
int cnt=;
while(scanf("%d",&m)==){
x=(double)m;
x*=log10();
printf("Case #%d: %d\n",++cnt,(int)x);
}
}

1002:

这题先把字符串拆成26进制,然后贪心做就可以了。

#include<bits/stdc++.h>
const int N=1e6+;
const int M=1e5+;
const int yql=1e9+;
using namespace std;
int f[][N],p[N],vis[],n;
char s[N],ss[N];
inline bool cmp(int a,int b){
for(int i=M;i>=;i--)if(f[a][i]!=f[b][i])return f[a][i]>f[b][i];
return a<b;
}
int main(){
int cas=;
while(scanf("%d",&n)==){
memset(f,,sizeof(f));memset(vis,,sizeof(vis));
for(int i=;i<=n;i++){
scanf("%s",ss);int len=strlen(ss);
for(int j=;j<len;j++)f[ss[j]-'a'][len-j-]++;
if(len>)vis[ss[]-'a']=;
}
for(int i=;i<;i++){
for(int j=;j<M;j++){
f[i][j+]+=f[i][j]/;
f[i][j]%=;
}
p[i]=i;
}
sort(p,p+,cmp);int r=;
while(!vis[p[r]])r--;
int tmp=p[r];
for(int i=r;i<;i++)p[i]+=p[i+];
int ans=;p[]=tmp;int sum=;
for(int i=;i<;i++){
int val=-i,sum=;
for(int j=M-;j>=;j--){
sum=(1LL*sum*+f[p[i]][j])%yql;
f[p[i]][j]=;
}
ans+=1LL*val*sum%yql;
if(ans>=yql)ans-=yql;
}
printf("Case #%d: %d\n",++cas,ans);
}
}

1003:

有点像雅礼集训的某道题,洛谷以前某模拟赛原题。

如果是洛谷做法是点分治带log,肯定要被卡常

然后有神奇的On做法一遍dfs统计答案

可以看成是矩形面积并,这就类似与那道雅礼题了,就可以树状数组维护一维就可以了。

也是一个log,但是常数优越。

#include<bits/stdc++.h>
const int N=;
using namespace std;
typedef long long ll;
struct Edge{int u,v,next;}G[N<<];
int tot=,head[N],a[N],d[N],lpos[N],rpos[N],cnt=,q[N],fa[N],n;
int c[N*];
ll w[N],ans;
inline int lowbit(int x){return x&(-x);}
inline void addedge(int u,int v){
G[++tot].u=u;G[tot].v=v;G[tot].next=head[u];head[u]=tot;
G[++tot].u=v;G[tot].v=u;G[tot].next=head[v];head[v]=tot;
}
bool cmp(int x,int y){
if(a[x]==a[y])return d[x]>d[y];
return a[x]<a[y];
}
inline void add(int x,int val){
if(!x)return;
for(int i=lpos[x];i<=n;i+=lowbit(i))c[i]+=val;
}
inline int ask(int x){
int ans=;
for(int i=x;i;i-=lowbit(i))ans+=c[i];
return ans;
}
void dfs(int u,int f){
lpos[u]=++cnt;
for(int i=head[u];i;i=G[i].next){
int v=G[i].v;if(v==f)continue;
fa[v]=u;d[v]=d[u]+;
dfs(v,u);
}
rpos[u]=cnt;
}
inline int size(int x){return ask(rpos[x])-ask(lpos[x]-);}
inline void solve(int l,int r,int val){
ans+=w[n];
for(int i=l;i<=r;i++){
int u=q[i];
for(int i=head[u];i;i=G[i].next){
int v=G[i].v;if(v==fa[u]||a[v]==val)continue;
ans-=w[size(v)];
}
add(fa[u],-size(u));
}
if(a[]!=val)ans-=w[size()];
for(int i=r;i>=l;i--){
int u=q[i];
add(fa[u],size(u));
}
}
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
int cas=;
for(int i=;i<N;i++)w[i]=1LL*i*i;
while(scanf("%d",&n)==){
for(int i=;i<=n;i++)a[i]=read();
ans=;cnt=;tot=;memset(head,,sizeof(head));
for(int i=;i<n;i++){
int u=read(),v=read();
addedge(u,v);
}
for(int i=;i<=n;i++)q[i]=i,c[i]=;
dfs(,);
sort(q+,q+n+,cmp);
for(int i=;i<=n;i++)add(i,);
int j=;
for(int i=;i<=n;i=j){
for(j=i;j<=n&&a[q[i]]==a[q[j]];j++);solve(i,j-,a[q[i]]);
}
ans-=n;ans>>=;
printf("Case #%d: %I64d\n",++cas,ans);
}
}

1006:

找循环节,先确定一个出现次数以及因数

然后在另一个里面找

具体可以参考题解公式。

#include<bits/stdc++.h>
const int N=;
const int yql=1e9+;
using namespace std;
int n,m,cnt,cas,a[N],b[N],c[N],vis[N];
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
inline void dfsa(int u){
if(vis[u])return;vis[u]=;++cnt;
if(!vis[a[u]])dfsa(a[u]);
}
inline void dfsb(int u){
if(vis[u])return;vis[u]=;++cnt;
if(!vis[b[u]])dfsb(b[u]);
} int main(){
while(scanf("%d%d",&n,&m)==){
memset(vis,,sizeof(vis));memset(c,,sizeof(c));
for(int i=;i<n;i++)a[i]=read();for(int i=;i<m;i++)b[i]=read();
for(int i=;i<m;i++)if(!vis[i]){
cnt=;dfsb(i);c[cnt]++;
}
for(int i=;i<=m;i++)c[i]=1LL*i*c[i]%yql;
int lim=max(n,m);
for(int i=lim;i;i--)for(int j=i+i;j<=lim;j+=i)c[j]=(c[j]+c[i])%yql;
for(int i=;i<=n;i++)vis[i]=;int ans=;
for(int i=;i<n;i++)if(!vis[i]){
cnt=;dfsa(i);ans=1LL*ans*c[cnt]%yql;
}
printf("Case #%d: %d\n",++cas,ans);
}
}

1011:

找规律。

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll m;int cnt,n;
int main(){
while(scanf("%d%lld",&n,&m)==){
printf("Case #%d: ",++cnt);
if(m<=n){printf("%lld\n",m);continue;}
m-=n;m=(m-)%(n*-)+;
if(m<=n-){printf("%lld\n",m);continue;}
m-=n-;
if(m<=n-){printf("%lld\n",m);continue;}
else printf("%d\n",n);
}
}

以上是考场完成的……

剩下的能补几题是几题吧。

【2017 Multi-University Training Contest - Team 1】小结的更多相关文章

  1. 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  2. 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】

    Dying Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  3. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  4. 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】

    Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  5. 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】

    Big binary tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  6. 2017 Multi-University Training Contest - Team 1 1003&&HDU 6035 Colorful Tree【树形dp】

    Colorful Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  8. 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】

    Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  9. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】

    KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  10. 2017 Multi-University Training Contest - Team 1 1001&&HDU 6033 Add More Zero【签到题,数学,水】

    Add More Zero Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

随机推荐

  1. BZOJ4813 CQOI2017小Q的棋盘(树形dp)

    设f[i][j]为由i号点开始在子树内走j步最多能经过多少格点,g[i][j]为由i号点开始在子树内走j步且回到i最多能经过多少格点,转移显然. #include<iostream> #i ...

  2. hdu 1281 棋盘游戏 (二分匹配)

    棋盘游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  3. 以安装PyTorch为例说明Anaconda在Windows/Linux上的使用

    在Windows10上配置完MXNet 1.3.0后,再配置PyTorch 1.0时,发现两者需要依赖的NumPy版本不一致,之前是通过pip安装NumPy,根据pip的版本不同,会安装不同版本的Nu ...

  4. Android 职业路上--只要还有一丝希望,不到最后一刻,不要轻言放弃--从屌丝到进入名企

    写在前面:只要还有一丝希望,不到最后一刻,不要轻言放弃! 来到西安十来天了,现在基本安顿下来了,这几天在工作中也遇到一些技术问题,但都没来得及总结分享,现在想和大家分享一下我的工作求职经历! 接触an ...

  5. GDI & GDI+

    GDI GDI绘图中的映射模式CDC::SetMapMode() GDI编程小结 GDI+ GDI+小例子 关于GDI+ GDI+编程小结

  6. HDOJ(HDU).1258 Sum It Up (DFS)

    HDOJ(HDU).1258 Sum It Up (DFS) [从零开始DFS(6)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双 ...

  7. lighttpd - 配置文件

    转载其他网站,收藏查看! 配置文件lighttpd.conf参数详细说明的链接和选译 发表于 2010年12月22日 http://redmine.lighttpd.net/projects/ligh ...

  8. sass的mixin,extend,placeholder,function

    1. mixin 就是定义了一个函数,可以传参,并且设定默认值,css选择器可以通过@include来引用,mixin混入的代码,就是原样复制,不会合并,会造成冗余 例如: @mixin br6($b ...

  9. 怎样才能快速成为JavaScript高手

    如何快速成为JavaScript高手?之前我拿这个问题问过我的同事,也问过国内的一些JavaScript高手. 最近,我一直在拿这个问题问自己.之所以会有这个问题,我基于两个前提:第一.我自认为自己不 ...

  10. 修改tomcat编码格式 & tomcat发布WEB项目供外网访问

    1.修改tomcat默认编码格式: 修改tomcat下的conf/server.xml文件,找到如下代码:       <Connector port="8080" prot ...