1001 Alisha’s Party

比赛的时候学长stl吃T。手写堆过。

赛后我贴了那两份代码都过。相差.2s。

于是用stl写水果。

 # include <iostream>
# include <cstdio>
# include <algorithm>
# include <queue>
using namespace std;
# define maxk
int ans[maxk]; struct node
{
char name[];
int id,val;
friend bool operator < (node x,node y)
{
if(x.val!=y.val) return x.val<y.val;
return x.id>y.id;
}
} p[maxk];
priority_queue<node> pq; struct open
{
int t,p;
} T[maxk]; bool cmp(open x,open y)
{
return x.t<y.t;
} int main(void)
{
int kase; cin>>kase;
while(kase--)
{
int k,m,q,pos=,cnt=,Q;
scanf("%d%d%d",&k,&m,&q);
for(int i=;i<=k;i++)
{
scanf("%s%d",p[i].name,&p[i].val);
p[i].id=i;
}
for(int i=;i<m;i++) scanf("%d%d",&T[i].t,&T[i].p);
sort(T,T+m,cmp);
while(!pq.empty()) pq.pop();
for(int i=;i<m;i++)
{
while(pos<=k&&pos<=T[i].t) pq.push(p[pos++]);
while(!pq.empty()&&T[i].p--)
{
ans[++cnt]=pq.top().id;
pq.pop();
}
}
while(pos<=k) pq.push(p[pos++]);
while(!pq.empty())
{
ans[++cnt]=pq.top().id;
pq.pop();
}
for(int i=;i<q;i++)
{
scanf("%d",&Q);
printf("%s ",p[ans[Q]].name);
}
scanf("%d",&Q);
printf("%s\n",p[ans[Q]].name);
}
return ;
}

Aguin

1002 Ponds

赛时题意错理解成对所有奇数联通子集权值求和……

先dfs或kahn删点。

再遍历一遍所有奇数联通即可。

 # include <iostream>
# include <cstdio>
# include <cstring>
using namespace std;
typedef long long LL;
const int maxp=,maxm=;
int cnt,headlist[maxp],v[maxp],deg[maxp];
bool vis[maxp];
LL tmp; struct node
{
int to,pre;
} edge[*maxm]; void add(int from,int to)
{
cnt++;
edge[cnt].pre=headlist[from];
edge[cnt].to=to;
headlist[from]=cnt;
return;
} void dfs1(int pos)
{
deg[pos]=; vis[pos]=;
for(int i=headlist[pos];i;i=edge[i].pre)
{
int to=edge[i].to;
if(deg[to]) deg[to]--;
if(deg[to]==) dfs1(to);
}
return;
} int dfs2(int pos)
{
int ret=;
vis[pos]=;
tmp+=v[pos];
for(int i=headlist[pos];i;i=edge[i].pre)
{
int to=edge[i].to;
if(vis[to]) continue;
ret+=dfs2(to);
}
return ret;
} int main(void)
{
int T; cin>>T;
while(T--)
{
cnt=;
memset(headlist,,sizeof(headlist));
memset(deg,,sizeof(deg));
memset(vis,,sizeof(vis));
int p,m; scanf("%d%d",&p,&m);
for(int i=;i<=p;i++) scanf("%d",v+i);
for(int i=;i<m;i++)
{
int a,b; scanf("%d%d",&a,&b);
add(a,b); add(b,a);
deg[a]++; deg[b]++;
}
for(int i=;i<=p;i++) if(deg[i]==) dfs1(i);
LL ans=;
for(int i=;i<=p;i++) if(!vis[i]&&deg[i])
{
tmp=;
if(dfs2(i)%) ans+=tmp;
}
printf("%I64d\n",ans);
}
return ;
}

Aguin

1003 Aggregated Counting

1004 Clock Adjusting

1005 Travel

赛场题意理解错。哭。

询问排序。并查集按秩合并。对答案的贡献是2*r[u]*r[v]。

 # include <iostream>
# include <cstdio>
# include <algorithm>
using namespace std;
int Ans[],pa[],r[]; int Find(int x)
{
return pa[x]==x?x:pa[x]=Find(pa[x]);
} void Union(int x,int y)
{
x=Find(x),y=Find(y);
if(y<x) swap(x,y);
pa[y]=x; r[x]+=r[y];
return;
} struct node
{
int from,to,val;
friend bool operator < (node x,node y)
{
return x.val<y.val;
}
} edge[]; struct Query
{
int no,x;
friend bool operator < (Query a,Query b)
{
return a.x<b.x;
}
}query[]; int main(void)
{
int T; cin>>T;
while(T--)
{
int n,m,q; scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;i++){pa[i]=i;r[i]=;}
for(int i=;i<m;i++)
scanf("%d%d%d",&edge[i].from,&edge[i].to,&edge[i].val);
sort(edge,edge+m);
for(int i=;i<q;i++)
{
query[i].no=i;
scanf("%d",&query[i].x);
}
sort(query,query+q);
int pos=,ans=;
for(int i=;i<q;i++)
{
while(pos<m&&edge[pos].val<=query[i].x)
{
int u=Find(edge[pos].from),v=Find(edge[pos].to);
pos++;
if(u==v) continue;
ans+=*r[v]*r[u];
Union(u,v);
}
Ans[query[i].no]=ans;
}
for(int i=;i<q;i++) printf("%d\n",Ans[i]);
}
return ;
}

Aguin

1006 Favorite Donut

讨论这个题目经历了几个阶段。

比赛时只知道用最大表示法。

然而由于最大表示法在有多解时返回index最小的。逆时针的处理方法没想好。场上T了。

赛后想到逆时针多解时必成循环。可以用KMP求循环节。两者都是O(n)。

后来经过学长提醒。最大表示法如果处理循环串是k增到m后跳出。

于是可以直接在最大表示法里处理掉循环节。时间上常数优化(并无)。

 # include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
# include <cmath>
using namespace std;
char s[];
int m; int getMax(int p)
{
int i=,j=,k=;
while(i<m&&j<m&&k<m)
{
int t=s[(i+k)%m]-s[(j+k)%m];
if(!t) k++;
else
{
if(t<) i=max(i+k+,j+);
else j=max(j+k+,i+);
k=;
}
}
if(p&&k==m) return m--(m--min(i,j))%abs(i-j);
return min(i,j);
} int main(void)
{
int T; cin>>T;
while(T--)
{
scanf("%d%s",&m,s);
int op=,a=getMax(),b;
reverse(s,s+m);
b=getMax();
for(int i=;i<m;i++)
{
if(s[(*m--a-i)%m]>s[(b+i)%m]) {op=; break;}
if(s[(*m--a-i)%m]<s[(b+i)%m]) {op=; break;}
}
if(op==) printf("%d 0\n",a+);
else if(op==) printf("%d 1\n",m-b);
else if(a+<=m-b) printf("%d 0\n",a+);
else printf("%d 1\n",m-b);
}
return ;
}

Aguin

1007 The Water Problem

水题。ST/线段树/暴力。

 # include <iostream>
# include <cstdio>
# include <cmath>
# include <algorithm>
using namespace std;
# define maxn +
int num[maxn],MAX[maxn][]; int main(void)
{
int T; cin>>T;
while(T--)
{
int N,Q; scanf("%d",&N);
for(int i=;i<=N;i++)
{
scanf("%d",num+i);
MAX[i][]=num[i];
}
for(int j=;j<;j++)
for(int i=;i<=N;i++)
if(i+(<<j)-<=N)
MAX[i][j]=max(MAX[i][j-],MAX[i+(<<j-)][j-]);
scanf("%d",&Q);
for(int i=;i<Q;i++)
{
int m,n; scanf("%d%d",&m,&n);
int k=(log(double(n-m+))/log());
int ans=max(MAX[m][k],MAX[n-(<<k)+][k]);
printf("%d\n",ans);
}
}
return ;
}

Aguin

1008 Elven Postman

1009 Food Problem

1010 Unknown Treasure

1011 Good Numbers

1012 Marisa’s Cake

1013 Robot Dog

2015 ACM/ICPC Asia Regional Changchun Online的更多相关文章

  1. hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online

    Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...

  2. (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memo ...

  3. (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)

    http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others)  ...

  4. 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  5. (线段树 区间查询)The Water Problem -- hdu -- 5443 (2015 ACM/ICPC Asia Regional Changchun Online)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Time Limit: 1500/1000 MS (Java/ ...

  6. 2015 ACM/ICPC Asia Regional Changchun Online HDU - 5441 (离线+并查集)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给你n,m,k,代表n个城市,m条边,k次查询,每次查询输入一个x,然后让你一个城市对(u,v ...

  7. hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online

    很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死…… 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了……没了! 反复读题,终于在偶然间 ...

  8. HDU 5437 Alisha’s Party (优先队列)——2015 ACM/ICPC Asia Regional Changchun Online

    Problem Description Princess Alisha invites her friends to come to her birthday party. Each of her f ...

  9. HDU 5444 Elven Postman (2015 ACM/ICPC Asia Regional Changchun Online)

    Elven Postman Elves are very peculiar creatures. As we all know, they can live for a very long time ...

随机推荐

  1. java中的d单例模式

    public class SimpleDemo1 { //恶汉式 //类初始化时,立即加载这个对象(没有延时加载的优势).加载类时,天然的是线程安全的 private static final Sim ...

  2. sqlserver 操作xml

    1.xml.exist    输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 2.xml.value    输入为XQuery表达式,返回一个SQL ...

  3. Ecstore安装篇-1.运行系统环境要求

    运行系统环境要求 运行系统环境要求 author :James,jimingsong@vip.qq.com since :2015-03-01 支持的操作系统 支持的WEB服务器 支持的浏览器 支持的 ...

  4. 10、 iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile

    Apple官方的文档为生成一个UIImage对象提供了两种方法: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数是图片文件的路径. 两种 ...

  5. C++类与static

    到目前为止,我们设计的类中所有的成员变量和成员函数都是属于对象的,如我们在前面定义的book类,利用book类声明两个对象Alice和Harry,这两个对象均拥有各自的price和title成员变量, ...

  6. Android: Failure [INSTALL_FAILED_DEXOPT] and Failure [INSTALL_FAILED_UID_CHANGED] 解决方案

    1. 错误:  Failure [INSTALL_FAILED_DEXOPT]  Android安装App时 D:\WorkSpace\Administrator\workspace\svn\soot ...

  7. AngularJS基础总结

    w3shools    angularjs教程  wiki   <AngularJS权威教程> Introduction AngularJS is a JavaScript framewo ...

  8. python密码强口令检测

    主要就是输入判断检测,以及一些正则的学习.刚开始玩python项目,代码写的不好.我以前玩C的!! 代码的价值与其是否能够实现功能等价! #密码输入检测 密码长度不少于8个字符,而且必须包含大写/小写 ...

  9. 伪分布重新格式化hdfs

    重新格式化hdfs系统的方法: (1)查看hdfs-ste.xml: <span style="font-size:18px;"><property> &l ...

  10. js跨域请求获得数据

    很多时候我们想访问其它站点下的数据怎么办? 由于javascript语言安全限制即同源策略造成的. 在使用ajax请求访问其他服务器的数据,此时客户端会出现跨域问题. 在js中,我们直接用XMLHtt ...