A题,熊孩子测视力,水题,题意就是判断一下两个数对应位不相同的数字有多少个。

#include<bits/stdc++.h>

using namespace std;

class BearCheats{
public:
string eyesight(int A, int B){
int digA[],digB[];
int t = ;
while(A){
digA[t++] = A%;
A/=;
}
for(int i = ; i < t; i++){
digB[i] = B%;
B/=;
}
int dif = ;
for(int i = ; i < t; i++){
if(digA[i]!=digB[i]) dif++;
}
if(dif<=) return "happy";
else return "glasses";
} };

Pro A

B题,熊孩子合并石子,题意是给你三堆石子,每次可以选两个,设小的那堆石子数为X,大的那堆石子为Y,X变成2*X,Y变成Y-X。问最后可不可能使三堆石子数相同。

div2的数据,暴力dfs就过了。因为石子总数一定,状态可以只有两维。

给用数论的大神orz

#include<bits/stdc++.h>
using namespace std;
const int maxn = ; bool vis[maxn][maxn]; bool dfs(int *dat)
{
if(dat[] == dat[] && dat[] == dat[]) return true;
int ndat[]= {dat[]<<,dat[]-dat[],dat[]};
sort(ndat,ndat+);
if(!vis[ndat[]][ndat[]] && ( vis[ndat[]][ndat[]] = true,dfs(ndat))) return true;
ndat[] = dat[]<<; ndat[] = dat[]; ndat[] = dat[] - dat[];
sort(ndat,ndat+);
if(!vis[ndat[]][ndat[]] && ( vis[ndat[]][ndat[]] = true,dfs(ndat))) return true;
ndat[] = dat[]; ndat[] = dat[]<<; ndat[] = dat[] - dat[];
sort(ndat,ndat+);
if(!vis[ndat[]][ndat[]] && ( vis[ndat[]][ndat[]] = true,dfs(ndat))) return true;
return false;
} class BearPlaysDiv2{
public:
string equalPiles(int A, int B, int C){
if( (A+B+C)/* != A+B+C ) return "impossible";
int dat[] = {A,B,C};
sort(dat,dat+);
vis[dat[]][dat[]] = true;
if(dfs(dat)) return "possible";
else return "impossible";
}
};

Pro B

C题,熊孩子排序,熊孩子乱搞了一个LESS函数,返回true和false的概率各占一半,问用一个排好序的序列经过sort以后得到给出序列的概率,其实就是问你比较次数。。。映射一下就完了。

举个栗子:比如要得到的序列是2,4,3,1。那么它和有序的映射是如左边所示,那么以原来的数字为key排序就得到了右边的映射,

怎么得到原来的映射呢?只要反过来,以右边的val做为key,key变成val。在排序就得到原来的映射了(这也就是为什么原来的映射一定要是有序的原因)。这和我们原来的问题有什么关系呢?当然有,观察下面的key,

在这个反过来sort的过程中,下面的1 2 3 4变成了 2 4 3 1,正是我们要得到的序列。

类似思路的题:CDOJ 485

#include<bits/stdc++.h>
using namespace std;
const int maxn = ;
int a[maxn];
int t[maxn];
const double onecmp = log(0.5);
int times;
void merge_sort(int* a,int l,int r)
{
if(r-l<=) return ;
int mid = (l+r)>>;
merge_sort(a,l,mid);
merge_sort(a,mid,r);
int i = l, j = mid, k =l,p; while(i < mid && j < r){
if(times++,a[i]>=a[j]) t[k] = a[j++];
else t[k] = a[i++];
k++;
}
if(i == mid) for(p = j; p < r; p++) t[k++] = a[p];
else for(p = i; p < mid; p++) t[k++] = a[p];
for(k = l;k < r; k++) a[k] = t[k];
} class BearSortsDiv2{
public:
double getProbability(vector <int> seq){
for(int i = ; i < seq.size(); i++){
a[seq[i]-] = i;
}
times = ;
merge_sort(a,,seq.size());//log(ans);double ans =
return times*onecmp;
}
}Bear;
/*
int main()
{
freopen("in.txt","r",stdin);
vector<int> s;
int tmp;
while(~scanf("%d",&tmp))
s.push_back(tmp);
double ans = Bear.getProbability(s);
printf("%lf",ans);
return 0;
}
*/

topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)的更多相关文章

  1. TC SRM 664 div2 A BearCheats 暴力

     BearCheats Problem Statement    Limak is an old brown bear. Because of his bad eyesight he sometime ...

  2. TC SRM 664 div2 B BearPlaysDiv2 bfs

    BearPlaysDiv2 Problem Statement    Limak is a little bear who loves to play. Today he is playing by ...

  3. SRM 657 DIV2

    -------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了.但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了.. T1: 题目大意: ...

  4. Topcoder Srm 673 Div2 1000 BearPermutations2

    \(>Topcoder \space Srm \space 673 \space Div2 \space 1000 \space BearPermutations2<\) 题目大意 : 对 ...

  5. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

    \(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...

  6. 记第一次TopCoder, 练习SRM 583 div2 250

    今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...

  7. Topcoder srm 632 div2

    脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...

  8. SRM 638 Div2

    2333... 因为TC过少的参与者.加上不断fst 我掉了div2该. 幸运的是完成的背div1该.. 250 水的问题 500 水的问题.. 直接bfs扩展即可了 注意判重.  我还用康托展开了真 ...

  9. SRM 592 DIV2 报告

    昨天下午查看邮箱,看到了topcoder的SRM比赛通知和cf的比赛通知,当时什么也不想做,心里空荡荡的,忽然就想参加一下,试试看.吃完晚饭回来一看,就剩十几分钟了,匆忙把平台下了,就开始等待比赛开始 ...

随机推荐

  1. 下载win7/win8/win10镜像

    关于给电脑换系统,很多人会花钱去电脑店里换,或者是下载Ghost系统.但这些系统都不是微软原版的,制作者已经集成了很多常用软件或垃圾软件进去.我在这给大家介绍的是如何下载正版的Windows系统.这个 ...

  2. Javascript 返回上一页:选中GridVIew的 Chekcbox

    1.  选中GridVIew的值 $("#reverse").click(function () { //$("#checkbox[Num]").attr(&q ...

  3. GROUP BY 子句 和 ORDER BY子句连用注意

    ORDER BY一定要放到GROUP BY后面 并且 ORDER BY 里面的字段必须包含在GROUP BY 里面

  4. nodejs安装使用express

    1.用Express 应用程序生成器 express-generator 快速搭建express框架 1.1安装: npm install express-generator -g 1.2 生成目录: ...

  5. 集成Python Shell

    每次启动shell会话都要导入Python相关对象(数据库实例和模型),这是件十分枯燥的工作.为了避免一直重复导入,我们可以做些配置,让flask-script的shell命令自动导入特定的对象. F ...

  6. Kbengine

    Kbengine 编辑 KBEngine是一款开源的游戏服务端引擎,使用简单的约定协议就能够使客户端与服务端进行交互, 使用KBEngine插件能够快速与(Unity3D, OGRE, Cocos2d ...

  7. php curl采集,服务器gzip压缩返回数据怎么办

    一般服务器不会胡乱返回gzip压缩的数据,一般是客户端请求的头部里包含你浏览器能接受的压缩方式, Accept-Encoding:gzip,deflate,sdch   这里是gzip .deflat ...

  8. 关于APICloud使用心得(原创)

    从最开始接触APICloud到现在已经有一段时间了.现在想说说自己对于APICloud开发移动端的想法,既有利又有弊. 以下都是我个人的观点. 先说优点吧: 1.APICloud平台文档.视频较多,很 ...

  9. 动手写一个简单版的谷歌TPU

    谷歌TPU是一个设计良好的矩阵计算加速单元,可以很好的加速神经网络的计算.本系列文章将利用公开的TPU V1(后简称TPU)相关资料,对其进行一定的简化.推测和修改,来实际编写一个简单版本的谷歌TPU ...

  10. 使用docker搭建项目环境

    # 清屏 clear # 查看当前文件夹下的列表 ls # 跳目录 cd ~ 代表当前用户文件夹 cd / 代表根目录 cd..返回上一级目录 cd #sudo 使用超级管理员创建文件夹 不加sudo ...