2015ACM/ICPC亚洲区长春站
5532 Almost Sorted Array
题目大意:给你一个序列,如果它拿掉其中一个数后,可以是该序列成为非递减或非递增序列,则输出YES。
有两种思路,第一种代码比较简单,是LIS,复杂度nlogn,第二种是On的复杂度。
LIS的代码如下。
#include <set>
#include <queue>
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
#define mem(x,y) memset(x, y, sizeof(x))
#define lson l,m,rt << 1
#define rson m+1,r,rt << 1 | 1
const int INF = 0x3f3f3f3f;
;
int s[maxn], dp[maxn];
int T, n;
bool judge()
{
mem(dp, INF);
; i < n; i++)
{
*upper_bound(dp, dp + n, s[i]) = s[i];
}
int len = lower_bound(dp, dp + n, INF) - dp;
mem(dp, INF);
; i < n; i++)
{
*upper_bound(dp, dp + n, -s[i]) = -s[i];
}
int len2 = lower_bound(dp, dp + n, INF) - dp;
len = max(len2, len);
);
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d", &n);
; i < n; i++)
{
scanf("%d", s+i);
}
printf("%s\n", judge() ? "YES" : "NO");
}
;
}
5533 Dancing Stars on Me题意:给你n个点对,然后求一个正多边形(当然是凸的)。问存不存在。
题目给的坐标都是整数,看一看那个tanα = 1 / n (n = 1, 2, 3, 4,....)好像只有α = 45°的时候才有可能构成正多边形。
然后瞎搞搞。。
#include <cstdio>
#include <algorithm>
using namespace std;
;
int T, n;
];
struct ss{int x, y;}s[maxn];
int get_dis(int x1, int y1, int x2, int y2)
{
return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
}
int main()
{
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
; i < n; i++)
{
scanf("%d%d", &s[i].x, &s[i].y);
}
) {printf("NO\n");continue;}
, tot = ;
; i < n; i++)
{
; j < n; j++)
{
temp[tot] = get_dis(s[i].x, s[i].y, s[j].x, s[j].y);
tot++;
}
}
sort(temp, temp + tot);
] == temp[]) ok = ;
printf("%s\n", ok ? "YES" : "NO");
}
;
}
5536 Chip Factory
题意:在数组a中找到三个数满足,ai+aj ^ ak 的值最大且i,j,k各不相同。
经典的异或用01字典树,推荐使用数组形式,快而且内存小。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
+ ;
* maxn;
int n, T;
LL a[maxn];
LL sz, ch[maxnode][], val[maxnode];
void init()
{
sz = ;
memset(ch[], , ]));
}
//d=1表示插入,d=-1表示删除
void trie_update(LL x, int d)
{
;
; i >= ; i--)
{
;
if(!ch[u][c])
{
memset(ch[sz], , sizeof(ch[sz]));
val[sz] = ;
ch[u][c] = sz++;
}
u = ch[u][c];
val[u] += d;
}
}
LL trie_query(LL v)
{
LL ans = ;
;
; i >= ; i--)
{
;
] && val[ch[u][c ^ ]])
{
ans |= ( << i);
u = ch[u][c ^ ];
}
else u = ch[u][c];
}
return ans;
}
int main()
{
scanf("%d", &T);
while(T--)
{
init();
scanf("%d", &n);
; i < n; i++)
{
scanf("%I64dd", a + i);
trie_update(a[i], );
}
LL ans = (a[] + a[]) ^ a[];
; i < n; i++)
{
trie_update(a[i], -);
; j < n; j++)
{
trie_update(a[j], -);
LL temp = trie_query((LL)a[i] + a[j]);
ans = max(ans, temp);
trie_update(a[j], );
}
trie_update(a[i], );
}
printf("%I64d\n", ans);
}
;
}
5538 House Building
题意:求这个东西的表面积。
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m, T;
#define judge(x, y) 0 <= x && x < n && 0 <= y && y < m
][];
, , -, };
, -, , };
int main()
{
scanf("%d", &T);
while(T--)
{
, bottom = , cnt = ;
scanf("%d%d", &n, &m);
; i < n; i++)
{
; j < m; j++)
{
scanf("%d", &ma[i][j]);
tot += ma[i][j];
if(ma[i][j]) bottom++;
) cnt += (ma[i][j] - ) * ;
}
}
* tot - bottom - cnt;
;
; i < n; i++)
{
; j < m; j++)
{
; k < ; k++)
{
int fx = i + dx[k];
int fy = j + dy[k];
if(judge(fx, fy))
{
d += min(ma[fx][fy], ma[i][j]);
}
}
}
}
ans -= d;
printf("%d\n", ans);
}
;
}
2015ACM/ICPC亚洲区长春站的更多相关文章
- 2015ACM/ICPC亚洲区长春站 L hdu 5538 House Building
House Building Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- 2015ACM/ICPC亚洲区长春站 J hdu 5536 Chip Factory
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- 2015ACM/ICPC亚洲区长春站 H hdu 5534 Partial Tree
Partial Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- 2015ACM/ICPC亚洲区长春站 G hdu 5533 Dancing Stars on Me
Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 2015ACM/ICPC亚洲区长春站 F hdu 5533 Almost Sorted Array
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 2015ACM/ICPC亚洲区长春站 E hdu 5531 Rebuild
Rebuild Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total S ...
- 2015ACM/ICPC亚洲区长春站 B hdu 5528 Count a * b
Count a * b Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tot ...
- 2015ACM/ICPC亚洲区长春站 A hdu 5527 Too Rich
Too Rich Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU-5532//2015ACM/ICPC亚洲区长春站-重现赛-F - Almost Sorted Array/,哈哈,水一把区域赛的题~~
F - Almost Sorted Array Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
随机推荐
- WebStorage的使用
HTML5中的WebStorage有两种类型的API:localStorage和sessionStorage: localStorage在本地永久性存储数据,除非显式将其删除或清空: sessionS ...
- 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
今天抽空来讨论一下.Net的垃圾回收与内存管理机制,也算是完成上个<WCF分布式开发必备知识>系列后的一次休息吧.以前被别人面试的时候问过我GC工作原理的问题,我现在面试新人的时候偶尔也会 ...
- ecshop后台 计划任务
计划任务定时清理掉设置后的内容 主要针对单表删除(日志,):对于多表删除,不太好用(订单+订单商品+订单日志) 结构: 1.计划任务语言包:languages\zh_cn\cron\ 2.php文件: ...
- QT读取文本(字符串)最后一行的方法
QString str; QTextStream ts(&str); str = this->toPlainText(); ts.seek(str.lastIndexOf("- ...
- 【转载】借助GitHub托管你的项目代码
PS:自己关注博客园有2年之久了,不久前才申请注册账号.GitHub也差不多一年多了,因英语水平刚刚及格,所以去GitHub没有博客园多,也是几个月前才注册了账号,前几天休息时看到 EdisonCho ...
- 一次性事务和CTE插入数据的比较
有时要构造一些数据来做测试数据,像下面这样: IF OBJECT_ID(N'T14') IS NOT NULL BEGIN DROP TABLE T14 END GO CREATE TABLE T14 ...
- IAP
release_check_url := "https://buy.itunes.apple.com/verifyReceipt" debug_check_url := " ...
- [Network] HTML、XML和JSON学习汇总
写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...
- CSS背景background详解,background-position详解
背景(background)是css中一个重要的的部分,也是需要知道的css的基础知识之一.这篇文章将会涉及css背景(background)的基本用法,包括诸如 background-attachm ...
- Linux下安装和配置JDK与Tomcat(升级版)
在这个版本 Linux下安装和配置JDK与Tomcat(入门版) 的基础上优化升级 1.下载相关软件 apache-tomcat-6.0.37.tar.gz jdk-6u25-linux-i586-r ...