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

#include<bits/stdc++.h>using namespace std;class BearCheats{public:string eyesight(int A, int B){int digA[42],digB[42];int t = 0;while(A){digA[t++] = A%10;A/=10;}for(int i = 0; i < t; i++){digB[i] = B%10;B/=10;}int dif = 0;for(int i = 0; i < t; i++){if(digA[i]!=digB[i]) dif++;}if(dif<=1) 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 = 501;bool vis[maxn][maxn];bool dfs(int *dat)
{if(dat[0] == dat[1] && dat[1] == dat[2]) return true;int ndat[3]= {dat[0]<<1,dat[1]-dat[0],dat[2]};sort(ndat,ndat+3);if(!vis[ndat[0]][ndat[1]] && ( vis[ndat[0]][ndat[1]] = true,dfs(ndat))) return true;ndat[0] = dat[0]<<1; ndat[1] = dat[1]; ndat[2] = dat[2] - dat[0];sort(ndat,ndat+3);if(!vis[ndat[0]][ndat[1]] && ( vis[ndat[0]][ndat[1]] = true,dfs(ndat))) return true;ndat[0] = dat[0]; ndat[1] = dat[1]<<1; ndat[2] = dat[2] - dat[1];sort(ndat,ndat+3);if(!vis[ndat[0]][ndat[1]] && ( vis[ndat[0]][ndat[1]] = true,dfs(ndat))) return true;return false;
}class BearPlaysDiv2{
public:string equalPiles(int A, int B, int C){if( (A+B+C)/3*3 != A+B+C ) return "impossible";int dat[3] = {A,B,C};sort(dat,dat+3);vis[dat[0]][dat[1]] = 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 = 550;
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<=1) return ;int mid = (l+r)>>1;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 = 0; i < seq.size(); i++){a[seq[i]-1] = i;}times = 0;merge_sort(a,0,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;
}
*/

View Code

转载于:https://www.cnblogs.com/jerryRey/p/4695238.html

topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)相关推荐

  1. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

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

  2. SRM 542 DIV2

    一道DIV2里面500pt的题目想了3天还是没有想出来,这是什么水平....太菜了,弱爆了,该怎么办呢?怎么样才能成为高手呢? 250pt: 题意:题意很简单,就是说兔子之间的合作问题,每对兔子间有个 ...

  3. SRM 543 Div2

    决定以后多做一些TC,即使做不了比赛,也要多做一些TC上的题,顺便写一些结题报告什么的.不过像我这种在Div2混的弱菜,也写不出什么高质量的结题报告,而且1000pt的题,我基本都不用看了,尽量把25 ...

  4. 【TopCoder SRM 551 Div2】Solutions

    [250] Beaver Bindu has some colored bricks. Each color is described by an uppercase letter. Bricks o ...

  5. SRM 721 DIV2

    Single Round Match 721 Round 1 - Division II, Level One 代码如下: public class FlightDataRecorder {publi ...

  6. TC SRM 562 div2 B 题

    题意: 给你一个矩形的画布,此画布由'B'和'.'组成,画T次每次画的时候他的左上角的起始点是确定的几位(1,1),(2,2),(3,3)......(T,T); 在画的过程中可能会出现相互覆盖求画完 ...

  7. SRM 533 DIV2

    很长时间没做TC了,再说自己做的也确实相当少,所以不是很熟+思路来的比较慢所以做得不是多么好,只做出了250pt,500pt的思路对还没敲完就结束了.话说TC,CF什么的真的很锻炼人的思维能力可就是老 ...

  8. topcoder SRM 625 DIV2 IncrementingSequence

    由于题目数据量比较小,故可以开辟一个数组存储每个index出现的次数 然后遍历即可 string canItBeDone(int k, vector<int> A){vector<i ...

  9. TC SRM 593 DIV2 1000

    很棒的DP,不过没想出,看题解了..思维很重要. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstrin ...

最新文章

  1. 这份GitHub万星的机器学习算法面试大全请大家注意查收
  2. 51Nod-1136 欧拉函数【数论】
  3. 71.数据模型有哪几种?特征?
  4. GPRS的工作原理、主要特点
  5. ModuleNotFoundError: No module named 'mpl_toolkits.basemap'
  6. vue --- 2.0数据的响应式的一种实现
  7. Ubuntu中输入输出重定向及管道技术简述
  8. 大数据统计学直观图表(二)
  9. 【Kotlin】我的第一个 Kotlin 程序
  10. 深度学习——用softmax函数来规范可变参数
  11. Visual Studio Code 1.36 发布,结束对 Linux 32 位系统的支持
  12. 解释清楚智能指针二【用自己的话,解释清楚】
  13. inDesign文字教程,如何制作复古文本效果?
  14. 2018/03/01
  15. Spring Boot入门教程(三十九):微信支付集成-申请服务号和微信支付
  16. Word控件Spire.Doc 转换教程(十六):在 C# 中将 Word 转换为 PDF/A
  17. 详解示波器的三个主要参数:采样率,存储深度,带宽
  18. 响铃:“头号玩家”乐车邦,恰恰踩到了“无人”的点上
  19. cocos creator 插件开发
  20. unix/linux 经典书籍推荐

热门文章

  1. XStream生成的XML中带class属性,去掉class属性
  2. spring 事务笔记(四)
  3. tproxy_Linux使用TPROXY进行UDP的透明代理
  4. 如何解决编程的误差问题_柏威机械丨高精密零件加工是如何解决误差精度问题的?...
  5. canvas动画 电子白板_广东智慧电容式触摸屏维修,学校电子白板操作
  6. 基于matlab的图解粒度参数计算,基于MATLAB的图解粒度参数计算-热带地理.PDF
  7. 微星主板黑苹果_游戏机也玩二次元!微星全新“钛舞Diana”点亮冬日激情
  8. dubbo源码深度解析_Spring源码深度解析:手把手教你搭建Spring开发环境
  9. 当identity_insert 设置为off时不能为表_硬盘跳线怎么设置 硬盘跳线设置方法【详解】...
  10. 四种连接数据库的方法(DriverManager、DataSource子类、DBCP、c3p0)