A题 先求出来这个数是第几大  阶乘求概率p  然后计算获得胜率的概率 常规解法把所有情况考虑一遍(跳1次,2次,3次……)要用到组合数  数可能太大了会爆的行不通

我们观察发现它有递推性质,从第二大开始获胜概率为Q1=p(直接跳到第一大)从第三大开始获胜概率为Q2=p*Q1(先跳到第二大)+p(直接跳到第一大)以此类推Q3=Q2*p+Q1*p+p

Q4=Q3*p+Q2*p+Q1*p+p 但是我们按照上面的递推式计算Qn时复杂度为O(n*n) 我们再改进一下Q2=Q1*(1+p),Q3=Q2*(1+p) ,Q4=Q3*(1+p)这样复杂度就为 O(n) 了

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn = 2e2+;
const int maxm = 1e6+;
const int inf = 0x3f3f3f3f;
const double epx = 1e-;
typedef long long ll;
int a[maxn],b[maxn],c[maxn];
double f[maxm];
int main()
{
int t,n;
b[]=;
for(int i=;i<=;i++)
b[i]=b[i-]*i;
cin>>t;
while(t--)
{
cin>>n;
int cnt=;
while(n!=)
{
c[++cnt]=n%;
a[n%]++;
n/=;
}
reverse(c+,c+cnt+);
int sum=;
for(int i=;i<=cnt;i++)
{
for(int j=;j>=;j--)
{
if(a[j]>)
{
if(j>c[i])
sum+=b[cnt-i];
else if(j==c[i])
{
a[j]--;
break;
}
}
}
}
double p=1.0/b[cnt];
if(sum==)
f[]=;
else
{
f[sum-]=p;
for(int i=sum-; i>=; i--)
{
f[i]=f[i+]*p+f[i+];
}
}
printf("%.9lf\n",f[]);
}
}

B题 直接模拟 我写的是最暴力的那种。。。

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn= 2e2+;
const int maxm= 1e4+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int main()
{
int t,n,m;
while(cin>>t)
{
while(t--)
{
char a[maxn][maxn];
char ans[maxn];
cin>>n>>m;
char x,y;
for(int i=;i<=m;i++)
{
for(int j=;j<=*n;j++)
{
cin>>a[i][j];
}
}
for(int i=;i<*n;i=i+)
{
int cnt1=,cnt2=,cnt3=,cnt4=;
int flag=;
for(int j=;j<=m;j++)
{
if(a[j][i+]=='T')
{
ans[i/+]=a[j][i];
flag=;
break;
}
else
{
if(a[j][i]=='A')
cnt1++;
else if(a[j][i]=='B')
cnt2++;
else if(a[j][i]=='C')
cnt3++;
else if(a[j][i]=='D')
cnt4++;
}
}
if(flag==)
{
if(cnt1>&&cnt2>&&cnt3>)
ans[i/+]='D';
else if(cnt1>&&cnt2>&&cnt4>)
ans[i/+]='C';
else if(cnt1>&&cnt3>&&cnt4>)
ans[i/+]='B';
else if(cnt2>&&cnt3>&&cnt4>)
ans[i/+]='A';
else
ans[i/+]='?';
}
}
for(int i=;i<=n-;i++)
printf("%c ",ans[i]);
printf("%c\n",ans[n]);
}
}
}

F题 水~~

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn= 1e3+;
const int maxm= 1e4+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int n,m;
int a[maxn];
int main()
{
while(cin>>n)
{
int a,b;
while(n--)
{
cin>>a>>b;
if(a==b)
printf("Square\n");
else
printf("Rectangle\n");
}
}
}

I题 n比较小直接枚举组合情况  一位一位比较记录第一次和最后一次不同的位置,直接异或也可以

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <vector>
using namespace std;
const int maxn= 1e3+;
const int maxm= 1e4+;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int n,m;
int a[maxn];
int main()
{
int t;
while(cin>>t)
{
while(t--)
{
cin>>n;
for(int i=; i<=n; i++)
cin>>a[i];
sort(a+,a++n);
int ans=-;
for(int i=; i<n; i++)
{
for(int j=i+; j<=n; j++)
{
int num=;
int tempi=a[i],tempj=a[j];
int cnt=;
while(tempi!=)
{
int ki=tempi&;
int kj=tempj&;
if(ki!=kj)
{
num++;
}
tempi=tempi>>;
tempj=tempj>>;
cnt++;
}
while(tempj!=)
{
if(tempj&)
{
num++;
}
tempj=tempj>>;
cnt++;
}
//printf("%d %d %d\n",a[i],a[j],num);
ans=max(ans,num);
}
}
cout<<ans<<endl;
}
}
}

codeforces Gym 100814 A、B、F、I的更多相关文章

  1. codeforces gym/100814 humming distance (二进制位数比较)

    Gym - 100814I I. Salem time limit per test 1 second memory limit per test 1024 megabytes input stand ...

  2. AT NEW F、AT END OF F注意事项

    1.F只能是内表的第一个字段 2.AT NEW F.AT END OF F使用F之后内表内容会变为* 解决出现*的办法: FIELD-SYMBOLS:<ITAB> LIKE  ITAB L ...

  3. <转>thinkphp的各种内部函数 D()、F()、S()、C()、L()、A()、I()详解

    D.F.S.C.L.A.I 他们都在functions.php这个文件家下面我分别说明一下他们的功能 D() 加载Model类M() 加载Model类 A() 加载Action类L() 获取语言定义C ...

  4. ThinkPHP内置函数详解D、F、S、C、L、A、I

    单字母函数D.F.S.C.L.A.I 他们都在ThinkPHP核心的ThinkPHP/Mode/Api/functions.php这个文件中定义. 下面我分别说明一下他们的功能: D() 加载Mode ...

  5. 对C标准中空白字符(空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f))的理解

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   C标准库里<ctype.h>中声明了一个函数: int isspace(int c); 该函数判断字符c是否 ...

  6. ORM之自关联、add、set方法、聚合函数、F、Q查询和事务

    一.外键自关联(一对多) 1.建表 # 评论表 class Comment(models.Model): id = models.AutoField(primary_key=True) content ...

  7. 机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)

    摘要: 数据挖掘.机器学习和推荐系统中的评测指标—准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型 ...

  8. 2、函数y=f(x)

    /* Note:Your choice is C IDE */ #include "stdio.h" /* 3.函数y=f(x)可表示为: */ void main() { int ...

  9. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

随机推荐

  1. Android基础夯实--重温动画(三)之初识Property Animation

    每个人都有一定的理想,这种理想决定着他的努力和判断的方向.就在这个意义上,我从来不把安逸和快乐看作生活目的的本身--这种伦理基础,我叫它猪栏的理想.--爱因斯坦 一.摘要 Property Anima ...

  2. Map接口框架图

    Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...

  3. java visualVM 使用

    下载jdk 一般自带  jvisualvm.exe ,双击即可   下载地址   https://visualvm.github.io/pluginscenters.html 使用方法:

  4. CSS中常用属性之字体属性

    1,以下是CSS中常用字体属性: font-family             字体样式 font-size                字体大小 font-size-adjust  为元素规定 ...

  5. 【Gambit】Gambit使用教程

    第一章 Gambit使用 Gambit介绍 网格的划分使用Gambit软件,首先要启动Gambit,在Dos下输入Gambit <filemane>,文件名如果已经存在,要加上参数-old ...

  6. window_c++_socket编程_winsock2.h

    1.初始化动态链接库 WSAStartup: The WSAStartup function initiates use of the Winsock DLL by a process. WSASta ...

  7. 理解 call, apply 的用法

    callcall() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数. function list() { return Array.prototype.slice.call ...

  8. 获取tomcat服务器上的部分日志

    Linux下tomcat的日志很大,有的几G大,要用什么工具查看或把日志文件拆解? 一般习惯用 tail 的方式在服务器查看.如果要取下 可以用 tail -2000 xxxx.log > te ...

  9. JavaSE-14 异常处理

    学习要点 使用try-catch-finally处理异常 使用throw.throws抛出异常 异常及其分类 log4j记录日志 异常 1  异常的定义 异常是指在程序的运行过程中所发生的不正常的事件 ...

  10. Python 判断是否存在Excel表

    Python 判断是否存在Excel表,无则生成,有则删除重建 import os import xlwt from openpyxl import workbook def sheet_method ...