题目:click here

题意:

  给定5组数据,每组数据选择一个数,看是否能找到5个数的和为零。

分析:

  千万不要~~T~~

普通线性查找:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int M = ; int t, n;
ll a[][M]; // 5组数据
ll pre[M*M]; // 第一二组数据两两和
ll nex[M*M]; // 第三四组数据两两和
ll lef[M]; // 最后一组数据 void solve() {
scanf("%d", &n );
for( int i=; i<; i++ )
for( int j=; j<n; j++ )
scanf("%I64d", &a[i][j] );
int pos = ;
for( int i=; i<n; i++ )
for( int j=; j<n; j++ )
pre[pos++] = a[][i] + a[][j];
pos = ;
for( int i=; i<n; i++ )
for( int j=; j<n; j++ )
nex[pos++] = a[][i] + a[][j];
ll maxn = n*n;
for( int i=; i<n; i++ )
lef[i] = a[][i];
sort( pre, pre+maxn ); // 排序
sort( nex, nex+maxn );
sort( lef, lef+n );
for( int i=; i<n; i++ ) {
int left = , right = maxn-;
while( left<maxn && right >= ) { // 两个指针最多改变40000+40000次
ll sum = pre[left] + nex[right];
if( sum == -lef[i] ) {
printf("Yes\n"); return ;
}
else if( sum > -lef[i] ) right--;
else left++;
}
}
printf("No\n");
} int main() {
scanf("%d", &t );
while( t-- )
solve();
}

hash:(第一次碰到hash的题---不解释~~我也不懂)

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set> using namespace std;
typedef __int64 ll;
const int INF = 0x3f3f3f3f;
const int MOD = 4e5+;
const int M = ; int t, n;
ll a[][M];
ll g[MOD];
ll sum;
bool f[MOD]; int fhash( ll x ) {
int p = x%MOD;
if( p < ) p += MOD;
while( f[p] && g[p] != x )
p = (p+)%MOD;
return p;
}
void solve() {
scanf("%d", &n );
for( int i=; i<; i++ )
for( int j=; j<n; j++ )
scanf("%I64d", &a[i][j] );
memset( f, false, sizeof(f) );
for( int i=; i<n; i++ ) {
for( int j=; j<n; j++ ) {
sum = a[][i] + a[][j];
int p = fhash( sum );
f[p] = true;
g[p] = sum;
}
}
for( int i=; i<n; i++ ) {
for( int j=; j<n; j++ ) {
for( int k=; k<n; k++ ) {
sum = a[][i] + a[][j] + a[][k];
int p = fhash( -sum );
if( f[p] ) {
printf("Yes\n");
return ;
}
}
}
}
printf("No\n");
}
int main() {
scanf("%d", &t );
while( t-- )
solve();
}

HDU OJ 4334 Trouble 2012 Multi-University Training Contest 4的更多相关文章

  1. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  2. HDU 6125 - Free from square | 2017 Multi-University Training Contest 7

    思路来自这里 - - /* HDU 6125 - Free from square [ 分组,状压,DP ] | 2017 Multi-University Training Contest 7 题意 ...

  3. HDU 6129 - Just do it | 2017 Multi-University Training Contest 7

    比赛时脑子一直想着按位卷积... 按题解的思路: /* HDU 6129 - Just do it [ 规律,组合数 ] | 2017 Multi-University Training Contes ...

  4. HDU 6088 - Rikka with Rock-paper-scissors | 2017 Multi-University Training Contest 5

    思路和任意模数FFT模板都来自 这里 看了一晚上那篇<再探快速傅里叶变换>还是懵得不行,可能水平还没到- - 只能先存个模板了,这题单模数NTT跑了5.9s,没敢写三模数NTT,可能姿势太 ...

  5. HDU 6093 - Rikka with Number | 2017 Multi-University Training Contest 5

    JAVA+大数搞了一遍- - 不是很麻烦- - /* HDU 6093 - Rikka with Number [ 进制转换,康托展开,大数 ] | 2017 Multi-University Tra ...

  6. HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5

    看了标程的压位,才知道压位也能很容易写- - /* HDU 6085 - Rikka with Candies [ 压位 ] | 2017 Multi-University Training Cont ...

  7. HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4

    /* HDU 6073 - Matching In Multiplication [ 图论 ] | 2017 Multi-University Training Contest 4 题意: 定义一张二 ...

  8. HDU 6057 - Kanade's convolution | 2017 Multi-University Training Contest 3

    /* HDU 6057 - Kanade's convolution [ FWT ] | 2017 Multi-University Training Contest 3 题意: 给定两个序列 A[0 ...

  9. HDU 6061 - RXD and functions | 2017 Multi-University Training Contest 3

    每次NTT都忘记初始化,真的是写一个小时,Debug两个小时- - /* HDU 6061 - RXD and functions [ NTT ] | 2017 Multi-University Tr ...

随机推荐

  1. 自定义标签体、MVC

    自定义标签 文件以tld结尾,放在webinfo中 标签名 引用类 标签体 继承SimpleTagSupport,复写doTag() getContext(); getjspBody()   invo ...

  2. 【iOS】Plist-XML-JSON数据解析

    网络上数据传输通用的有XML.JSON等,iOS中也能够用Plist. 要进行传输数据.就要首先进行序列化: 1.序列化.  对象转换成二进制流.(这个一句话即可) .反序列化. 二进制流转换为对象等 ...

  3. C++ Primer 读书笔记 第1章

    1.1 编写简单的C++程序 每个C++程序都必须包含一个main函数,因为main函数是系统执行入口,且main函数是唯一被系统显示调用的函数. 定义函数必须指定4个元素:返回类型.函数名.形参表. ...

  4. 简单C#文字转语音

    跟着微软走妥妥的,C#文字转语音有很多参数我就不说了,毕竟我也是初学者.跟大家分享最简单的方法,要好的效果得自己琢磨喽: 先添加引用System.Speech程序集: using System; us ...

  5. GridView中日期显示格式

    DataFormatString="{0:d}"

  6. 使用MyBatis搭建一个访问mysql数据库的简单示例

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用 ...

  7. Openv2.1基本数据类型

    1.Point_ template<typename _Tp> class Point_ {_Tp x, y;} 可使用的运算: pt1 = pt2 + pt3; pt1 = pt2 - ...

  8. PHP删除HTMl标签

    /** * 取出html标签 * * @access public * @param string str * @return string * */ function deletehtml($str ...

  9. C++_基础_运算符重载2

    内容: (1)只能用成员形式重载的运算符 (2)new/delete操作符的重载 (3)封装和继承的初识 (4)继承的特性 (5)子类及其函数的特性 (6)多重继承和虚继承 1.只能用成员形式重载的运 ...

  10. switch_case,&&,||,条件操作符和逗号操作符,循环语句

    一.switch-case switch-case语句主要用在多分支条件的环境中,在这种环境中使用if语句会存在烦琐且效率不高的弊端. switch(expression) { case const ...