ID name  status one word
 POJ 5437 Alisha’s Party 赛后AC、 优先队列,模拟。对时间t排序
POJ 5438 Ponds 赛后AC 循环链表
POJ 5439 Aggregated Counting    
POJ 5440 Clock Adjusting    
POJ 5441 Travel 赛后AC 并查集+离线化。注音可以休息、
POJ 5442 Favorite Donut    
POJ 5443 The Water Problem 题如其名,水题。 ..........就是水。
POJ 5444 Elven Postman 赛后AC 二叉树建和遍历。
POJ 5445 Food Problem    
POJ 5446 Unknown Treasure    
POJ 5447 Good Numbers    
POJ 5448 Marisa’s Cake    
POJ 5449 Robot Dog    

很多题就是想不到思路。其实是可以做的。第一场只过了1道。。。。。。。。。人艰不拆。。。。。。

poj 5437

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std; struct Node {
char name[];
int val;
int t;
bool operator < (const Node &a) const {
if (a.val != val)
return a.val > val;
else return a.t < t;
}
}node[]; struct Open {
int t, per;
}open[]; bool cmp(Open a, Open b) {
return a.t < b.t;
} Node rem[];
priority_queue<Node>que; int main() {
int k, m, q;
int t;
scanf("%d", &t);
while (t--) {
memset(open, , sizeof(open));
memset(rem, , sizeof(rem));
scanf("%d%d%d", &k, &m, &q);
for (int i=; i<k; ++i) {
scanf("%s%d", node[i].name, &node[i].val);
node[i].t = i;
} for (int i=; i<m; ++i) {
scanf("%d%d", &open[i].t, &open[i].per);
}
while (!que.empty()) {
que.pop();
}
sort(open, open+m, cmp); int cnt = ;
int t = ;
for (int i=; i<m; ++i) {
if (t < open[i].t) {
for (int j=t; j < open[i].t; ++j) {
que.push(node[j]);
}
t = open[i].t;
}
int num = ;
while(num < open[i].per && !que.empty() && cnt < k) {
rem[cnt++] = que.top();
num++;
que.pop();
}
} if (open[m-].t < k) {
for (int i=open[m-].t; i<k; ++i) {
que.push(node[i]);
}
} while(!que.empty() && cnt < k) {
rem[cnt++] = que.top();
que.pop();
} int a;
for (int i=; i<q; ++i) {
scanf("%d", &a);
if (i == )
printf("%s", rem[a-].name);
else printf(" %s", rem[a-].name);
}
printf("\n");
}
return ;
}

poj 5438

#include <queue>
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std; #define maxn 100000+50 // 边的个数
#define maxm 10000+50 // 节点个数
int t, p, m, a, b; int val[maxm];
int head[maxm];
int deg[maxm];
bool vis[maxm];
long long ans, temp;
int num; struct Edge {
int v, next;
}edge[maxn]; int totEdge;
queue<int>que; void addEdge(int a, int b) {
edge[totEdge].v = b;
edge[totEdge].next = head[a];
head[a] = totEdge++;
} void init() {
memset(head, -, sizeof(head));
memset(edge, , sizeof(edge));
memset(val, , sizeof(val));
memset(vis, , sizeof(vis));
memset(deg, , sizeof(deg));
totEdge = ;
ans = ;
while(!que.empty())
que.pop();
} void topSort() {
for (int i=; i<=p; ++i) {
if (deg[i] == )
vis[i] = true;
if (deg[i] == ) {
vis[i] = true;
que.push(i);
}
} while(!que.empty()) {
int top = que.front();
//cout << top << "===\n";
que.pop();
for (int i=head[top]; i!=-; i=edge[i].next) {
int v = edge[i].v;
//cout << v << "----\n";
deg[v]--;
if (!vis[v]) {
if (deg[v] == )
vis[v] = true;
else if (deg[v] == ) {
vis[v] = true;
que.push(v);
}
}
}
//cout << "***\n";
}
} void Dfs(int u, int fa) {
// cout << val[u] << "===" << u << endl;;
num += ;
temp += val[u];
vis[u] = true;
for (int i=head[u]; i!=-; i=edge[i].next) {
int v = edge[i].v;
if (!vis[v] && v != fa) {
Dfs(v, u); // u开头的这条链上的最后一个子节点,如果是u ,就说明到环的开始了。
}
}
} int main() {
cin >> t;
while (t--) {
init();
cin >> p >> m; for (int i=; i<=p; ++i) {
cin >> val[i];
} for (int i=; i<m; ++i) {
cin >> a >> b;
addEdge(a, b);
addEdge(b, a);
deg[a]++;
deg[b]++;
}
topSort();
for (int i=; i<=p; ++i) {
num = ;
temp = ;
if (!vis[i])
Dfs(i, );
if (num & ) {
ans += temp;
}
}
cout << ans << endl;
}
return ;
}

poj 5441

// 先对边按权值排序,然后对询问按照权值排序。
// 每次在满足当前条件下,遍历。把两个端点所在的集合
// 并起来。此时增加的pair数就是2*num1*num2.
// 因为已经对询问按照权值排序。所以后面的集合一定会覆盖前面的、
// 所以只要一直询问下去。记录就可以了。
// 有一点并查集离线查询的地方。 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std; #define maxn 201000 // 节点数
#define maxm 51000 // 询问数
#define tot 1001000 // 边数 int t, n, m, q;
int num[maxn]; // 维护每个节点当前所在集合的节点个数、
int ans[maxm]; // 保存每次询问的结果、
int fa[maxn]; // 并查集 struct Node {
int st, ed, dis;
}node[tot]; int cmp(Node a, Node b) {
return a.dis < b.dis;
} struct Querry{
int id, ask;
}que[maxm]; void init() {
for (int i=; i<=n; ++i) {
fa[i] = i;
num[i] = ;
}
memset(ans, , sizeof(ans));
} int cmp2(Querry a, Querry b) {
return a.ask < b.ask;
} int find_(int i) {
if (fa[i] == i) return i;
else return fa[i] = find_(fa[i]);
} int main() {
int a, b, d;
scanf("%d", &t);
while (t--) {
scanf("%d%d%d", &n, &m, &q);
init();
for (int i=; i<=m; ++i) {
scanf("%d%d%d", &a, &b, &d);
node[i].st = a;
node[i].ed = b;
node[i].dis = d;
}
sort(node+, node++m, cmp);
for (int i=; i<q; ++i) {
scanf("%d", &que[i].ask);
que[i].id = i+;
}
sort(que, que+q, cmp2); int now = ;
int tempans = ;
int flag = ; for (int i=; i<q; ++i) {
flag = que[i].id;
for(; node[now].dis<=que[i].ask && now<=m; now++) {
int t1 = node[now].st;
int t2 = node[now].ed;
if (t1 == t2) {
continue;
}
if (find_(t1) == find_(t2)) {
continue;
}
else if (find_(t1) != find_(t2)) {
tempans += *num[find_(t1)]*num[find_(t2)];
num[find_(t1)] += num[find_(t2)];
fa[find_(t2)] = find_(t1);
}
}
ans[flag] += tempans;
}
for (int i=; i<=q; ++i) {
printf("%d\n", ans[i]);
}
}
return ;
}

poj 5444

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std; struct Tree {
int l, r;
}node[]; bool flag; void init() {
memset(node, , sizeof(node));
} void addNode(int u, int c) {
if (node[u].l== && u<c) {node[u].l = c;return;}
else if (node[u].r== && u>c) {node[u].r = c;return;}
else if (u<c) addNode(node[u].l, c);
else addNode(node[u].r, c);
} void find(int u, int c) {
if (u == c)
return;
else if (u<c) {
cout << 'W';
find(node[u].l, c);
}
else if (u > c) {
cout << 'E';
find(node[u].r, c);
}
} int main() {
int t, n, q, r, c;
cin >> t;
while(t--) {
init();
cin >> n;
cin >> r;
node[r].l = node[r].r = ; for (int i=; i<n; ++i) {
cin >> c;
addNode(r, c);
}
cin >> q;
for (int i=; i<q; ++i) {
flag = true;
cin >> c;
find(r, c);
cout << endl;
}
}
return ;
}

15年-ICPC长春-网络赛的更多相关文章

  1. 2013 ACM/ICPC 长春网络赛E题

    题意:给出一个字符串,要从头.尾和中间找出三个完全相等的子串,这些串覆盖的区间互相不能有重叠部分.头.尾的串即为整个字符串的前缀和后缀.问这个相同的子串的最大长度是多少. 分析:利用KMP算法中的ne ...

  2. 2013 ACM/ICPC 长春网络赛F题

    题意:两个人轮流说数字,第一个人可以说区间[1~k]中的一个,之后每次每人都可以说一个比前一个人所说数字大一点的数字,相邻两次数字只差在区间[1~k].谁先>=N,谁输.问最后是第一个人赢还是第 ...

  3. hdu 4762 && 2013 ACM/ICPC 长春网络赛解题报告

    这次的答案是猜出来的,如果做得话应该是应该是一个几何概型的数学题: 答案就是:n/(m^(n-1)); 具体的证明过程: 1.首先枚举这M个点中的的两个端点,概率是:n*(n-1); 2.假设这个蛋糕 ...

  4. hdu 4763 && 2013 ACM/ICPC 长春网络赛解题报告

    一个KMP的简单题 不过好久没用过这个东东了,今天写的时候花了很多时间: 只需要花点时间判断下所有的元素都相同的的情况就行了! #include<cstdio> #include<c ...

  5. HDU 4763 Theme Section (2013长春网络赛1005,KMP)

    Theme Section Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. HDU 4764 Stone (2013长春网络赛,水博弈)

    Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. HDU 4762 Cut the Cake (2013长春网络赛1004题,公式题)

    Cut the Cake Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  8. HDU 4759 Poker Shuffle(2013长春网络赛1001题)

    Poker Shuffle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  9. HDU 4768 Flyer (2013长春网络赛1010题,二分)

    Flyer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

随机推荐

  1. SVC(STM32)

    这两个都是 system level service,有什么区别呢?…… 手册上说 SVC 这个指令是同步的,而 PendSV 是异步的,请问是什么意思呢?…… 高手路过尽请留言啊

  2. 【第三十二章】 elk(3)- broker架构 + 引入logback

    实际中最好用的日志框架是logback,我们现在会直接使用logback通过tcp协议向logstash-shipper输入日志数据.在上一节的基础上修改!!! 一.代码 1.pom.xml 1 &l ...

  3. K条最短路径算法(KSP, k-shortest pathes):Yen's Algorithm

    参考: K最短路径算法之Yen's Algorithm Yen's algorithm 基于网络流量的SDN最短路径转发应用 K条最短路径算法:Yen's Algorithm 算法背景 K 最短路径问 ...

  4. React Native之进度条ProgressViewIOS的使用

    import React,{Component}from 'react'; import { AppRegistry, StyleSheet, Text, View, ProgressViewIOS, ...

  5. hdu 5587 Array 二分

    Array Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Problem ...

  6. LIBS+=

    ZC: “LIBS+=”是要结合“LIBPATH += ”一起使用的?类似下面的用法: ZC: “LIBS+=”指明lib文件的名称,“LIBPATH += ”指明lib文件的路径.最后还要把DLL文 ...

  7. 《F4+2》β冲刺第二天

    β冲刺第二天 1.每个成员今日完成的任务: 马仲山:系统代码和开发总结文档的完善 马婧(12):完善需求文档 马婧(13):完善设计文档 马世芳:对部分功能实现进行测试 张俊逸:针对测试出现的问题完善 ...

  8. Android移动应用界面的模板化设计

    Android没有像苹果开发那样功能强大的界面开发工具,本身 ADT插件提供的界面编辑能力有限,没办法刻画所有的界面情况:Android的界面xml代码可以进行人工修改,而Iphone的全部在图形界面 ...

  9. Myeclise下tomcat启动报错,启动超时

    错误截图如下: 大概说的是tomcat7在本地不能在45秒内启动,如果项目需要更多的时间,试着去更改server配置 解决方法: 找到项目工作空间目录下 workspace\.metadata\.pl ...

  10. URAL 2072 Kirill the Gardener 3

    URAL 2072 思路: dp+离散化 由于湿度的范围很大,所以将湿度离散化 可以证明,先到一种湿度的最左端或者最右端,然后结束于最右端或最左端最优,因为如果结束于中间,肯定有重复走的路 状态:dp ...