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. 求LCA练习+部分算法复习 2017.1.22

    第一题就LCA即可.不过推荐用Tarjan(最快,常数很小).然后Tarjan的时候顺便就出一个dist[i],表示i节点到根节点的距离.求出了LCA,那么两点间的距离就为dist[u] + dist ...

  2. (转)MyBatis & MyBatis Plus

    (二期)3.mybatis与mybatis plus [课程三]mybatis ...运用.xmind0.1MB [课程三]mybatis...机制.xmind0.2MB [课程三]mybatis与j ...

  3. Vue开发中的中央事件总线

    在Vue开发中会遇到大量的组件之间共享数据的情形,针对不同的情形,Vue有相对应的解决方案.比如,父组件向子组件传值可以使用props,复杂项目中不同模块之间传值可以使用Vuex.但是,对于一些简单的 ...

  4. [pytorch]pytorch loss function 总结

    原文: http://www.voidcn.com/article/p-rtzqgqkz-bpg.html 最近看了下 PyTorch 的损失函数文档,整理了下自己的理解,重新格式化了公式如下,以便以 ...

  5. NS3 使用NS3工具PyViz

    官方文档 跑了一个样例(first.py): 由于 NetAnim 对我实在是有点不友好,在 PyViz 和 NetAnim 之间,我倾向前者.后者需要生成.xml文件,相比前者较为麻烦. 安装过程: ...

  6. self用法

  7. ubuntu14.04, keyboard shortcuts

  8. nginx 80 端口默认被占用

    /etc/nginx/sites-enabled,修改该目录下的default文件, 将默认端口号80改为其他端口号, /etc/nginx/nginx.conf 文件配置里的80端口就会生效

  9. python3.7 安装pyqt5

    pip install pyqt5

  10. HTML元素1: 基本元素,标题,段落,链接,图像等

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...