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 - 携程编程大赛 (预赛第二场)的更多相关文章

  1. 2014 CodingTrip - 携程编程大赛 (预赛第一场)

    1001: 可以证明(扩展欧几里得),只要卡片中有两个卡片互素,旁边点就是可达的. 因此只需要算出所有卡片不互素的情况有多少种,可用容斥原理. #include <cstdio> #inc ...

  2. 【解题报告】[动态规划] CodingTrip - 携程编程大赛 (预赛第一场)- 聪明的猴子

    原题: 聪明的猴子 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Problem D ...

  3. 位图像素的颜色 携程编程大赛hdu

    位图像素的颜色 Time Limit: 2000/1000 MS (Java/Others)    MemoryLimit: 32768/32768 K (Java/Others) Total Sub ...

  4. 2014百度之星预赛(第二场)——Best Financing

    2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...

  5. 2013腾讯编程马拉松初赛第二场(3月22日) 小Q系列故事——为什么时光不能倒流 ---好水!!

    我以为我会是最坚强的那一个 我还是高估了自己 我以为你会是最无情的那一个 还是我贬低了自己 就算不能够在一起 我还是为你担心 就算你可能听不清 也代表我的心意 那北极星的眼泪 闪过你曾经的眼角迷离 那 ...

  6. [转] 携程App网络服务通道治理和性能优化@2016

    App网络服务的高可靠和低延迟对于无线业务稳定发展至关重要,过去两年来我们一直在持续优化App网络服务的性能,到今年Q2结束时基本完成了App网络服务通道治理和性能优化的阶段性目标,特此撰文总结其中的 ...

  7. poj1182 and 携程预赛2第一题 带权并查集

    题意:       动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.  现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...

  8. 【BFS + Hash】拼图——携程2017春招编程题2

    写在前面 前天参加了携程的网测--还是感觉自己太!渣!了!    _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...

  9. 携程Android App插件化和动态加载实践

    携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...

随机推荐

  1. (转)PHP(其他语言类似)编码的规范性

    为了提高工作效率,保证开发的有效性和合理性,并最大程度提高程序代码的可读性和可重复利用性,提高沟通效率,需要一份代码编辑规范.         一.文件标记:            1.所有php文件 ...

  2. vmware workstation pro 14 虚拟机无法开启、黑屏的解决方案汇总

    方案1:卸载鲁大师,重启. 方案2:管理员命令行,输入netsh winsock reset,重启. 方案3:360安全管家修复LSP,重启. 方案4:卸载14.0,安装12.0,手动导入虚拟机.

  3. c#获取DataTable某一列不重复的值,或者获取某一列的所有值

    实现该功能是用了DataView的筛选功能,DataView表示用于排序.筛选.搜索.编辑和导航的 DataTable 的可绑定数据的自定义视图. 这里做了一个简单易懂的Demo来讲述该方法. 1.建 ...

  4. 关于CAS操作

    在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题. (2 ...

  5. django框架-DRF视图中的request和response

    1.Request 相对于django框架,DRF工程的request类则是继承自HttpRequest类,Rest framework提供了parser解释器,用来解释请求中的content_typ ...

  6. dedecmsV5.7自定义图片字段调用方法

    正常情况下,在列表页(也就是 {dede:list}标签)调用附加的图片类型字段则会出现Fatal error: Call to a member function GetInnerText() on ...

  7. POJ-3348 Cows 计算几何 求凸包 求多边形面积

    题目链接:https://cn.vjudge.net/problem/POJ-3348 题意 啊模版题啊 求凸包的面积,除50即可 思路 求凸包的面积,除50即可 提交过程 AC 代码 #includ ...

  8. 【转载】02-PowerDesigner的下载及安装

    原创路径:https://blog.csdn.net/ruyu00/article/details/79842807 一.下载 下载路径:https://pan.baidu.com/s/1WD7QHT ...

  9. Qt之QThread

    简述 QThread类提供了与系统无关的线程. QThread代表在程序中一个单独的线程控制.线程在run()中开始执行,默认情况下,run()通过调用exec()启动事件循环并在线程里运行一个Qt的 ...

  10. 今天遇到的一个诡异的core和解决 std::sort

    其实昨天开发pds,就碰到了core,我还以为是内存不够的问题,或者其他问题. 今天把所有代码挪到了as这里,没想到又出core了. 根据直觉,我就觉得可能是std::sort这边的问题. 上网一搜, ...