昨晚在开赛前5分钟注册的,然后比赛刚开始就掉线我就不想说了(蹭网的下场……),只好用手机来看题和提交,代码用电脑打好再拉进手机的(是在傻傻地用手机打了一半后才想到的办法)。

  1001,也就是 hdu 5174,题意很难叙述了,自己看题吧,这题有数据溢出的风险,我竟然是AC了一发才发觉的(只过了小数据),幸好后来改后赶紧再交一遍才不至于被人hack,因为需要对数据去重,我不想用数组模拟,便尝试下用 map了,可是我的奇葩 map ( ~′⌒`~),连我自己都感到无语了:

 #include<cstdio>
#include<map>
#include<iostream>
using namespace std;
typedef long long LL;
const int INF= 0x7fffffff; typedef map<int,int>::iterator mit; mit operator +(const mit &p, int i)
{
mit it= p;
return ++it;
} mit operator -(const mit &p, int i)
{
mit it= p;
return --it;
} int main(){
int n,i,x,k= ;
map<int,int> m;
while(~scanf("%d",&n)){
m.clear();
for(i=; i<=n; ++i){
cin>>x;
if(m.find(x)!=m.end()) ++m[x];
else m.insert(pair<int,int>(x,));
}
if(m.size()==) {
printf("Case #%d: -1\n",++k);
continue;
}
mit st= m.begin(), it= st, ed= m.end()-; int ans= ;
for(++it; it!=ed; ++it)
if(((LL)it->first+ (it-)->first)%INF == (it+)->first) ans+= it->second; if(((LL)st->first+ ed->first)%INF== (st+)->first) ans+= st->second;
if(((ed-)->first+ (LL)ed->first)%INF== st->first) ans+= ed->second;
printf("Case #%d: %d\n",++k,ans);
}
return ;
}

  上网找了下,发觉有个做法很不错的,用数组和 map一起模拟,不用什么 insert啊,find啊,还有连迭代器都不用,编码能力确实比我高多了,不得不赞:

 #include <stdio.h>
#include <string.h>
#include <map>
#include <algorithm>
#define INT_MAX 2147483647
using namespace std; int main()
{
int n, k = ;
long long ans;
long long a[];
while(~scanf("%d", &n))
{
ans = ;
map<int, int> mm;
int cnt = , tmp;
for(int i = ; i < n; i++)
{
scanf("%d", &tmp);
if(!mm[tmp])
{
a[cnt++] = tmp;
}
mm[tmp]++;
}
if(cnt == )
{
printf("Case #%d: -1\n", k++);
continue;
}
sort(a, a+cnt);
for(int i = ; i < cnt; i++)
{
if((a[(i - + cnt) % cnt] + a[(i - + cnt) % cnt]) % INT_MAX == a[i])
{
ans += mm[a[(i - + cnt) % cnt]];
}
}
printf("Case #%d: %d\n", k++, ans);
}
return ;
}

  1002,hdu 5175,是今天中午才做的,一开始还以为要用到什么高大上的数论定理,后来才发现不过是普通的暴力就行,枚举 n 所有的因数 i 看是否满足  gcd(n, n^i)== i 即可,真正的卡人是在输出格式上:

 #include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL; LL gcd(LL a, LL b) { return b==? a: gcd(b,a%b); } LL digit[]= {}, ans[]; void solve(LL n)
{
if(n==){
puts("0\n");
return;
}
int num= ;
LL m= sqrt(n+0.5);
for(LL i=; i<=m; ++i)
if(n%i==){
digit[++num]= i;
if(n/i!=i) digit[++num]= n/i;
}
int c= ;
for(int i=; i<=num; ++i){
LL tmp= n^digit[i];
if(tmp<n && gcd(n,tmp)==digit[i]) ans[c++]= tmp;
}
sort(ans,ans+c);
printf("%d\n",c);
for(int i=; i<c-; ++i)
printf("%I64d ",ans[i]);
if(c) printf("%I64d\n",ans[c-]);
else puts("");
} int main()
{
int k=;
LL n;
while(~scanf("%I64d",&n)){
printf("Case #%d:\n",++k);
solve(n);
}
return ;
}

  情人节,唉~也算是收到了意料之外的礼物,具体就不说了~~

BestCoder Valentine's Day Round的更多相关文章

  1. Valentine's Day Round hdu 5176 The Experience of Love [好题 带权并查集 unsigned long long]

    传送门 The Experience of Love Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

  2. Valentine's Day Round 1001.Ferries Wheel(hdu 5174)解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5174 题目意思:给出 n 个人坐的缆车值,假设有 k 个缆车,缆车值 A[i] 需要满足:A[i−1] ...

  3. hdu 5175(数论)

    Misaki's Kiss again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  4. BestCoder Round #89 02单调队列优化dp

    1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01  HDU 5944   水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...

  5. BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元

    BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy  Init函数 然后统计就ok B. 博弈 题  不懂  推了半天的SG.....  结果这 ...

  6. bestcoder Round #7 前三题题解

    BestCoder Round #7 Start Time : 2014-08-31 19:00:00    End Time : 2014-08-31 21:00:00Contest Type : ...

  7. Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp

    Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  8. Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  9. 暴力+降复杂度 BestCoder Round #39 1002 Mutiple

    题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...

随机推荐

  1. rtc关机闹钟5 AlarmManager研究

    AlarmManager研究 侯 亮 转自 http://blog.csdn.net/codefly/article/details/17058425 1.概述 在Android系统中,闹钟和唤醒功能 ...

  2. SlickGrid example 8:折线图

    根据数据生成折线图,使用相当简单,也很容易.     主要方法: 数据: var vals = [12,32,5,67,5,43,76,32,5]; 生成折线图: $("testid&quo ...

  3. java文件写入和读出的序列化

    文件的写入入与读出都有它们自己的格式,不便于读入和取出,implement Serializable接口,实现任何个事文件的写入和读取取:

  4. JAVA基础知识之IO——Java IO体系及常用类

    Java IO体系 个人觉得可以用"字节流操作类和字符流操作类组成了Java IO体系"来高度概括Java IO体系. 借用几张网络图片来说明(图片来自 http://blog.c ...

  5. TCP三次握手

      TCP协议下,客户的和服务器的连接过程称为“三次握手”   第一次握手:建立连接时,客户的发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认. 第二次握手:服务器收到SYN包,必须确 ...

  6. uva 1025,城市的间谍

    题目链接:https://uva.onlinejudge.org/external/10/1025.pdf 题意: 地铁是线性的,有n个站,编号(1~n),M1辆从左至右的车,和M2辆从右至左的车,发 ...

  7. ural 1110,快速幂

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1110 题意:   X^N % M = Y,X=[0,M-1];没有输出-1: #incl ...

  8. HDU 5670 Machine

    Machine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  9. sql去除某个字段中的某个字符串 replace

    update A set col1 =REPLACE ( col1 ,'测试' , '') where col1 like '%测试%' 在使用过程中如果遇到text类型的字段时会报 参数数据类型 t ...

  10. 比Redis更快:Berkeley DB面面观

    比Redis更快:Berkeley DB面面观 Redis很火,最近大家用的多.从两年前开始,Memcached转向Redis逐渐成为潮流:而Berkeley DB可能很多朋友还很陌生,首先,我们简单 ...