【组队训练】2016 ACM/ICPC Asia Regional Dalian Online
因为不是一队……毫无晋级的压力……反正有压力也进不去呵呵呵……
开场zr看1006我看1010。。
1010我一直在wa。。。
zr的1006倒是比较轻松的过了。。。然后我让他帮我看10。。。。
跟他讲了半天我代码的逻辑。。。然后我自己看出来的。。。。比赛的代码。。。。写的十分混乱。。。。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
typedef long long ll;
using namespace std;
const int N = ;
vector<int> G[N]; int a[N], b[N];
int low[N];
int par[N];
int c[N];
int cntv;
ll ans;
int n; int lowbit(int x)
{
return x & (-x);
} int sum(int n) //前n个数的和
{
int ans = ;
while (n > ) {
ans += c[n];
n -= lowbit(n);
}
return ans;
} void add(int pos, int num, int n) //在pos处加num
{
while (pos <= n) {
c[pos] += num;
pos += lowbit(pos);
}
} void dfs(int u) {
//printf("==%d %d %d\n", u, a[u], low[ a[u] ]);
//printf("n = %d\n", n);
int lowu = low[ a[u] ];
int tmp = sum(lowu);
for (unsigned i = ; i < G[u].size(); ++i) {
int v = G[u][i];
dfs(v);
}
int tmp2 = sum(lowu);
add(a[u], , n);
cntv++;
//printf(">>%d %d %d\n", u, tmp, tmp2);
ans += tmp2 - tmp;
} void init() {
memset(c, , sizeof c);
memset(low, , sizeof low);
memset(par, , sizeof par);
} int main()
{
//freopen("in.txt", "r", stdin);
int T;
scanf("%d", &T);
while (T--) {
ll k;
init();
scanf("%d%lld", &n, &k);
//printf("%d %lld\n", n, k);
for (int i = ; i <= n; ++i) {
G[i].clear();
scanf("%d", &a[i]);
b[i] = a[i];
}
sort(b+, b++n);
int cnt = unique(b+, b++n) - (b+);
//printf("cnt=%d\n",cnt);
//for (int i = 1; i <= cnt; ++i) printf("|%d ", b[i]); printf("\n");
int idx = cnt;
for (int i = ; i <= cnt; ++i) {
while ((ll)b[i]*b[idx--] > k) ;
idx++; low[i] = idx;
}//low[i]记录的是i*low[i]<=k的最大值
//for (int i = 1; i <= n; ++i) printf("%d ", low[i]); printf("\n");
for (int i = ; i <= n; ++i) {
a[i] = lower_bound(b+, b++cnt, a[i]) - b;
}
//for (int i = 1; i <= n; ++i) { printf("%d %d\n", a[i], low[ a[i] ]); } int u, v;
for (int i = ; i < n; ++i) {//printf("i=%d\n", i);
scanf("%d%d", &u, &v);
G[u].push_back(v);
par[v] = u;
}
int root = ;
while (par[root]) root = par[root];
//printf("root=%d\n", root);
cntv = ;
ans = ;
dfs(root);
printf("%lld\n", ans);
}
return ;
}
1009总体思路也是我想出来的,但是代码出了一些十分隐蔽的逻辑错误。。。zr比较强大。。。竟然看出来并改对了。。。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
typedef long long ll;
using namespace std;
const int N = ;
vector<int> G[N];
int ans[N]; void up(int &x, int y) {
if (x == - || x > y+) x = y+;
} int main()
{//freopen("in.txt", "r", stdin);
int T;
scanf("%d", &T);
while (T--) {
int n, m;
scanf("%d%d", &n, &m);
for (int i = ; i <= n; ++i) G[i].clear();
int u, v;
for (int i = ; i < m; ++i) {
scanf("%d%d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
int s;
scanf("%d", &s);
int cnt = ;
for (int i = ; i <= n; ++i) ans[i] = ; ans[s] = -;
queue<int> q[];
int now = ;
for (unsigned i = ; i < G[s].size(); ++i) {
int v = G[s][i];
ans[v] = -;
q[now].push(v);
cnt++;
}
for (int i = ; i <= *m; ++i) {
if (q[now].empty()) break;
int num = ;
while (q[now].size()) {
int u = q[now].front(); q[now].pop();
//printf("u=%d \n", u);
int tmp = ;
int sz = G[u].size();
for (int j = ; j < sz; ++j) {
int v = G[u][j];
if (ans[v] == -) tmp++;
}
//printf("%d: %d %d %d\n", u, sz, tmp, n);
if (n - sz > cnt - tmp) {
//printf(">>%d %d\n", u, ans[u]);
ans[u] = i+;
num++;
} else {
q[now^].push(u);
} }
cnt -= num;
now ^= ;
} bool ok = true;
for (int i = ; i <= n; ++i) {
if (s == i) continue;
if (ok) ok = false; else printf(" ");
printf("%d", ans[i]);
}
printf("\n");
}
return ;
}
1007坑题。竟然是推公式。。。两个人讨论了下,wa了几次推出来了。。。
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <iostream>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
typedef long long ll;
#define CLR(x, v) sizeof (x, v, sizeof(x))
using namespace std;
ll n,m;
int main()
{
//freopen("in.txt","r",stdin);
while(cin >> m >> n){
if (m == ) puts("T");
else if ((m/)*(m-m/) > n) puts("F");
else puts("T");
}
return ;
}
02补题吧。。太弱了。。。。
【组队训练】2016 ACM/ICPC Asia Regional Dalian Online的更多相关文章
- 2016 ACM/ICPC Asia Regional Dalian Online 1002/HDU 5869
Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 5874 Friends and Enemies 【构造】 (2016 ACM/ICPC Asia Regional Dalian Online)
Friends and Enemies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- HDU 5875 Function 【倍增】 (2016 ACM/ICPC Asia Regional Dalian Online)
Function Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU 5873 Football Games 【模拟】 (2016 ACM/ICPC Asia Regional Dalian Online)
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- hdu 5868 2016 ACM/ICPC Asia Regional Dalian Online 1001 (burnside引理 polya定理)
Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K ...
- 2016 ACM/ICPC Asia Regional Dalian Online Football Games
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1008 Function 二分+RMQ
Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...
随机推荐
- 5.查找最小的k个元素(数组)
题目: 输入n个整数,输出其中最小的k个,例如输入1,2,3,4,5,6,7,8这8个数,则最小的4个是1,2,3,4(输出不要求有序) 解: 利用快速排序的partition,算导上求第k大数的思想 ...
- Servlet课程0425(七) 到数据库中去验证用户,同时防止SQL注入漏洞
Login.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class ...
- C++中的INL
inl文件介绍 inl文件是内联函数的源文件.内联函数通常在C++头文件中实现,但是当C++头文件中内联函数过多的情况下,我们想使头文件看起来简洁点,能不能像普通函数那样将内联函数声明和函数定义放在头 ...
- MyBatis的两个配置文件
MyBatis有两个基本的配置文件,一个用来配置环境信息(mybatis.xml),一个用来写SQL语句(xxMapper.xml). mybatis.xml: <?xml version=&q ...
- SQL查询性能分析之(not in)、(and not)、()、(!=)性能比较
SQL查询性能分析之(not in).(and not).().(!=)性能比较 SQL Server Bruce 3年前 (2013-01-08) 3284浏览 0评论 <:article c ...
- P55、面试题6:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字,例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...
- 图模型的统计推断 inference in graphical models(马尔科夫链的推断)
有关因子图(factor graphs)以及其在sum product 算法,max-algorithm中的应用,将在一下篇博客中分享. 谢谢您的关注,欢迎提出意见问题.
- !! UML十四图打油诗记忆法
http://www.cnitpm.com/pm/7458.html UML十四图打油诗记忆法 UML十四图打油诗记忆法 UML它有十四图 包含静态和动态(分类) 类图构件搞对象(类图.构件图.对象图 ...
- NFC(11)MifareUltralight格式规范及读写示例
注意 MifareUltralight 不支三种过滤方式之一,只支持第四种(用代码,activity singleTop ) 见 NFC(4)响应NFC设备时启动activity的四重过滤机制 Mi ...
- 【HDOJ】4029 Distinct Sub-matrix
思路是枚举矩阵列数,然后将字符矩阵转换成字符串,通过字符数组求不同子串数目.最后,减去不成立的情况.使用特殊字符分割可能的组合. /* 4029 */ #include <iostream> ...