2014 CodingTrip - 携程编程大赛 (预赛第二场)
1001: 食物链(poj1182),直接贴代码,稍作可过
并查集
//
// main.cpp
// 携程1
//
// Created by zhang on 14-4-11.
// Copyright (c) 2014年 apple. All rights reserved.
// #include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <string>
#include <vector>
#include <list>
#include <map>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <numeric>
#include <functional> using namespace std;
const int maxk=;
int N,K;
int D[maxk],X[maxk],Y[maxk];
int par[*maxk],rankh[*maxk]; void init(int n)
{
for(int i=;i<n;i++)
{
par[i]=i;
rankh[i]=;
}
}
int find(int x)
{
if (par[x]==x)
{
return x;
}
else return par[x]=find(par[x]);
} void unite(int x,int y)
{
x=find(x);
y=find(y);
if(x==y) return; if(rankh[x]<rankh[y])
{
par[x]=y;
}
else
{
par[y]=x;
if(rankh[x]==rankh[y]) rankh[x]++;
}
} bool same(int x,int y)
{
return find(x)==find(y);
} int main()
{
//freopen("Users/apple/Desktop/携程1/携程1.in","r",stdin);
//freopen("Users/apple/Desktop/携程1/携程1.out","w",stdout);
int T;
scanf("%d",&T);
while (T--) { scanf("%d%d",&N,&K);
init(*N);
for(int i=;i<K;i++)
{
scanf("%d %d %d",&D[i],&X[i],&Y[i]);
} int ans=;
for(int i=;i<K;i++)
{
int t=D[i];
int x=X[i]-,y=Y[i]-; if(x<||N<=x||y<||N<=y)
{
ans++;
continue;
}
if(t==)
{
if(same(x,y+N)||same(x,y+*N))
{
ans++;
}
else
{
unite(x,y);
unite(x+N,y+N);
unite(x+*N,y+*N);
}
}
else
{
if (same(x,y)||same(x,y+*N))
ans++;
else
{
unite(x,y+N);
unite(x+N,y+*N);
unite(x+*N,y);
}
}
} printf("%d\n",ans);
}
return ;
}
1001
1002: dp[i][j] 表示第一条边为i, 第二条边的长度为 j 是否可行。 然后对所有可行的三条边的组合求最大三角形面积即可。
三角形面积:海伦公式
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath> using namespace std; const int INF = ;
const int MAXL = ;
const int MAXN = ; int n;
int a[MAXN];
int ans;
bool dp[MAXL][MAXL]; int my_abs(int x) {
return x > ? x : -x;
} double Area(double x, double y, double z) {
double p = (x+y+z)/;
return sqrt(p*(p-x)*(p-y)*(p-z));
} bool check(int x, int y, int z) {
int t[] = {x, y, z};
sort(t, t+);
if (t[]+t[] <= t[]) return false;
return true;
} int main() {
#ifdef Phantom01
freopen("1002.txt", "r", stdin);
#endif // Phantom01 while (scanf("%d", &n)!=EOF) {
if (==n) break; int sum = ;
for (int i = ; i < n; i++) {
scanf("%d", &a[i]);
sum += a[i];
}
memset(dp, false, sizeof(dp));
dp[][] =true; for (int k = ; k < n; k++)
for (int i = sum - a[k]; i >= ; i--)
for (int j = sum - a[k]; j >= ; j--) {
dp[i+a[k]][j] = dp[i][j] || dp[i+a[k]][j];
dp[i][j+a[k]] = dp[i][j] || dp[i][j+a[k]];
}
ans = -;
for (int i = ; i <= sum; i++)
for (int j = ; j <= sum; j++) if (dp[i][j]) {
if (check(i, j, sum-i-j))
ans = max((int)(Area(i, j, sum-i-j)*), ans);
}
printf("%d\n", ans);
} return ;
}
1002
1003: 二维线段树可做,不过因为数据范围比较小,逆序枚举所以矩形,看该点最后落在哪个矩形中。
#include <cstdio>
#include <cstring>
#include <iostream> using namespace std; const int MAXN = ; int x[MAXN*], y[MAXN*];
int x1[MAXN], x2[MAXN], y1[MAXN], y2[MAXN], R[MAXN], G[MAXN], B[MAXN];
int n, m;
int cntx, cnty; bool check(int px, int py, int k) {
if (x1[k]<=px&&px<=x2[k] && y1[k]<=py&&py<=y2[k])
return true;
return false;
} int main() {
#ifdef Phantom01
freopen("1003.txt", "r", stdin);
#endif // Phantom01 while (scanf("%d%d", &n, &m)!=EOF) {
if (==n&&==m) break;
cntx = cnty = ;
for (int i = ; i < n; i++) {
scanf("%d%d%d%d%d%d%d", &x1[i], &y1[i], &x2[i], &y2[i], &R[i], &G[i], &B[i]);
}
for (int i = ; i < m; i++) {
int px, py;
bool flag = false;
scanf("%d%d", &px, &py);
for (int j = n-; j >= ; j--)
if (check(px, py, j)) {
flag = true;
printf("%d %d %d\n", R[j], G[j], B[j]);
break;
}
if (!flag) puts("255 255 255");
}
} return ;
}
1003
1004: 可以证明,只有对称的时候后手能赢
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; int main()
{
int n, i;
int a[];
while(scanf("%d", &n), n) {
for(i = ; i < n; ++i) scanf("%d", a+i);
sort(a, a+n);
int cnt = ;
bool flag = ;
for(i = ; i < n; ++i) {
if(a[i] == a[i-]) cnt++;
else {
if(cnt&) {
flag = ;
break;
}
else cnt = ;
}
}
if(!flag) puts("Lose");
else puts("Win");
}
return ;
}
1004
2014 CodingTrip - 携程编程大赛 (预赛第二场)的更多相关文章
- 2014 CodingTrip - 携程编程大赛 (预赛第一场)
1001: 可以证明(扩展欧几里得),只要卡片中有两个卡片互素,旁边点就是可达的. 因此只需要算出所有卡片不互素的情况有多少种,可用容斥原理. #include <cstdio> #inc ...
- 【解题报告】[动态规划] CodingTrip - 携程编程大赛 (预赛第一场)- 聪明的猴子
原题: 聪明的猴子 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Problem D ...
- 位图像素的颜色 携程编程大赛hdu
位图像素的颜色 Time Limit: 2000/1000 MS (Java/Others) MemoryLimit: 32768/32768 K (Java/Others) Total Sub ...
- 2014百度之星预赛(第二场)——Best Financing
2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...
- 2013腾讯编程马拉松初赛第二场(3月22日) 小Q系列故事——为什么时光不能倒流 ---好水!!
我以为我会是最坚强的那一个 我还是高估了自己 我以为你会是最无情的那一个 还是我贬低了自己 就算不能够在一起 我还是为你担心 就算你可能听不清 也代表我的心意 那北极星的眼泪 闪过你曾经的眼角迷离 那 ...
- [转] 携程App网络服务通道治理和性能优化@2016
App网络服务的高可靠和低延迟对于无线业务稳定发展至关重要,过去两年来我们一直在持续优化App网络服务的性能,到今年Q2结束时基本完成了App网络服务通道治理和性能优化的阶段性目标,特此撰文总结其中的 ...
- poj1182 and 携程预赛2第一题 带权并查集
题意: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...
- 【BFS + Hash】拼图——携程2017春招编程题2
写在前面 前天参加了携程的网测--还是感觉自己太!渣!了! _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...
- 携程Android App插件化和动态加载实践
携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...
随机推荐
- 利用@keyframe及animation做一个页面Loading时的小动画
前言 利用@keyframe规则和animation常用属性做一个页面Loading时的小动画. 1 @keyframe规则简介 @keyframes定义关键帧,即动画每一帧执行什么. 要使用关键帧 ...
- 再次建立wordpress
山大的火星人的站还在维护www.h4ck.org.cn. 也许是募课潮过后的效应,www时代还能聚合很多知识,到了客户端时代技术越发松散,很难发实用的技术总结. 如果重新审视问题不难发现,问题在于使用 ...
- hdu 1257/1800 - 贪心,dp
1257题目链接 一个序列划分子序列,每个子序列都是非增序列,问最少分成几个子序列 1800题目链接 一堆数分组,每组内数据严格递减,问最少分几组 -------------------------- ...
- hiho152周 - 水题 区间问题
题目链接 给定两个区间集合 A 和 B,其中集合 A 包含 N 个区间[ A1, A2 ], [ A3, A4 ], ..., [ A2N-1, A2N ],集合 B 包含 M 个区间[ B1, B2 ...
- HDU 3015 Disharmony Trees 【 树状数组 】
题意:给出n棵树,给出横坐标x,还有它们的高度h,先按照横坐标排序,则它们的横坐标记为xx, 再按照它们的高度排序,记为hh 两颗树的差异度为 abs(xx[i] - xx[j]) * min(hh[ ...
- linux下mysql 查看默认端口号与修改端口号方法
一.查看默认端口号 1.登录mysql [root@localhost ~]# mysql -uroot -pEnter password: 输入数据库密码: 2.使用show global vari ...
- ueditor 编辑器,自定义图片上传
<div> <h1>完整demo</h1> <form method="post" name="form"> & ...
- HDFS架构与原理
HDFS HDFS 全称hadoop分布式文件系统,其最主要的作用是作为 Hadoop 生态中各系统的存储服务 特点 优点 • 高容错.高可用.高扩展 -数据冗余多副本,副本丢失后自动恢复 -Name ...
- parted 4T磁盘
parted /dev/vdg mklabel gpt mkpart primary ext4 0% 100%
- Android群英传-拼图游戏puzzle-代码设计和实现
上个周末,3个小时总体上读完了<Android群英传>,本周主要在研究代码层次的设计和实现. 编译安装在手机上,玩了几把,结合代码,一周时间才掌握了整体的思路. 大部分时间,其实花在了 ...