给你一个长 n 的序列,m 次查询

每次查询给一个 x,然后:

从序列的最左端 1 开始,每次随机的选择一个右端点 r,如果两个端点间的区间和不超过 x ,就进行一次分割,然后把左端点变成 r + 1, 否则一直随机下去。

问这样分割出来的期望段数

输入描述:

第一行两个数 n,m之后一行 n 个数表示这个序列之后m行每行一个数 x,表示求每段的和不大于 x 的情况下切割的期望段数

输出描述:

m 行,每行一个保留到小数点后2位的数表示答案如果无论如何都没有合法的切割方案,输出"YNOI is good OI!",不含引号
示例1

输入

5 6
1 2 3 4 5
4
5
6
7
8
9

输出

YNOI is good OI!
4.25
3.83
3.58
3.58
3.11

说明

对于30%的数据,n , m <= 10对于60%的数据,n <= 1000 , m <= 10对于80%的数据,n <= 100000 , m <= 100对于100%的数据,n <= 100000 , m <= 500 , 0 <= a[i] <= 1000 , x <= 1000000

看了好久才知道题意。。。就是把n个数分段,要求每一段的区间和小于等于x,然后求一下期望段数
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1e5+88;
int a[N],sum[N],n,m,x;
double dp[N],Sum[N];
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;++i) {scanf("%d",a+i);sum[i]=a[i]+sum[i-1];}while(m--){bool ok=1;scanf("%d",&x);int pos=n;for(int i=n;i>=1;--i) {if(a[i]>x) {ok=0;break;}else {while(sum[i-1]+x<sum[pos]) --pos;double shu=pos-i+1;dp[i]=(Sum[i+1]-Sum[pos+2])/shu+1;}Sum[i]=Sum[i+1]+dp[i];}if(!ok) puts("YNOI is good OI!");else printf("%.2f\n",dp[1]);}
}

题目描述

给一个数组{a},定义 h(a,b)为在十进制下 a + b 与 a 的位数差,求 ,0的位数为1。

输入描述:

第一行读入一个正整数 n (1 <= n <= 105)。

第二行读入 n 个非负整数,第 i 个表示a[i] (0 <= a[i] <= 108)。

输出描述:

一行表示答案。
示例1

输入

10
0 1 2 3 4 5 6 7 8 9

输出

20
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+88;
int sum[N],n,a[N],san[N],b[N];
long long s[15];
void add(int p){for(;p<=n+55;p+=(p&(-p))) ++sum[p];
}
int query(int p){int ans=0;for(;p;p-=(p&(-p))) ans+=sum[p];return ans;
}
int main(){long long ans=0;scanf("%d",&n);for(int i=1;i<=n;++i) scanf("%d",a+i),b[i]=a[i];sort(b+1,b+n+1);b[0]=0;s[1]=0,s[2]=10;for(int i=3;i<=14;++i) s[i]=s[i-1]*10;for(int i=1;i<=n;++i) san[i]=lower_bound(b+1,b+n+1,a[i])-b;for(int i=n;i>=1;--i){int now=a[i],wei=0,cha;if(!now) wei=1;while(now){now/=10;++wei;}int ct=wei;while(1){++wei;cha=s[wei]-a[i];int xia=lower_bound(b+1,b+n+1,cha)-b-1;if(xia==n) break;ans+=query(n+1)-query(xia);}add(san[i]);}printf("%lld\n",ans);
}

给定一个 n*m 的矩阵,矩阵元素由X和O构成,请求出其中最大的蝴蝶形状。
蝴蝶形状的定义如下:
存在一个中心点(必须为X),并且其往左上(必须为X)、左下(必须为X)、右上(必须为O)、右下(必须为O)四个方向扩展相同的长度,且左上顶点与左下顶点之间全由X填充,右上顶点与右下顶点之间全由O填充。

我们不在意在蝴蝶形状内部是X还是O。
例如:
    XAAAO
    XXAOO
    XAXAO
    XXAOO
    XAAAO
是一个蝴蝶形状(其中A表示X或O)。
    X
也是。

    XAAO
    XXOO
    XXOO
    XAAO
不是(不存在中心点)。

输入描述:

第一行两个整数n, m表示矩阵的大小 (1 <= n, m <= 500);接下来 n 行,每行一个长度为 m 的字符串表示矩阵,矩阵元素保证由X和O构成。

输出描述:

一行一个整数表示最大的蝴蝶形状的对角线的长度。
示例1

输入

5 5
XOOOO
XXOOO
XOXOO
XXOOO
XOOOO

输出

5
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char mp[508][508];
int n,m;
bool Ju(int x,int y,int k,int size){if(mp[x+k][y+k]=='O'||mp[x+k][y+size-1-k]=='X') return true;if(mp[x+size-1-k][y+k]=='O'||mp[x+size-1-k][y+size-1-k]=='X') return true;return false;
}
int main(){scanf("%d%d",&n,&m);for(int i=0;i<n;++i) scanf("%s",mp[i]);int maxx=min(n,m);if((maxx&1)^1) --maxx;bool ok=0;for(int size=maxx;~size;size-=2) if(ok) break; else  for(int i=0;i<=n-size;++i){int sj=(size+1)/2;for(int j=0;j<=m-size;++j) {if(mp[i+sj-1][j+sj-1]!='X') continue;bool fl=1;for(int k=0;k<sj-1;++k) if(Ju(i,j,k,size)) {fl=0;break;}if(!fl) continue;for(int k=0;k<size;++k) if(mp[i+k][j]!='X') {fl=0;break; }if(!fl) continue;for(int k=0;k<size;++k) if(mp[i+k][j+size-1]!='O'&&size!=1) {fl=0;break;}if(fl) {ok=1;break;}}if(ok) {printf("%d\n",size);break;}}if(!ok) puts("0");
}

转载于:https://www.cnblogs.com/mfys/p/7818846.html

Wannafly挑战赛3相关推荐

  1. Wannafly挑战赛22游记

    Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2 ...

  2. [Wannafly挑战赛2D-Delete]最短路

    [Wannafly挑战赛2D-Delete]最短路 题目描述 给定一张 n 个点,m 条边的带权有向无环图,同时给定起点 S 和终点 T ,一共有 q 个询问,每次询问删掉某个点和所有与它相连的边之后 ...

  3. Wannafly挑战赛19

    Wannafly挑战赛19 A. 队列Q 需要支持把一个元素移到队首,把一个元素移到队尾,移到队首就直接放到队首前面那个位置,原位置标为0,队尾同理. #include <bits/stdc++ ...

  4. Wannafly挑战赛18

    Wannafly挑战赛18 A. 序列 先考虑暴力,相邻两个树之间乘上给定的三种数,递推出下一个位置填什么,然后再check一下,最后一位是否为1即可.这样时间显然不行,但是给我们一种思路,就是中间的 ...

  5. Wannafly 挑战赛27 题解

    Wannafly 挑战赛27 题目连接 https://www.nowcoder.com/acm/contest/215#question A.灰魔法师 题目 题解 考虑到可能的完全平方数只有4004 ...

  6. Wannafly挑战赛24

    Wannafly挑战赛24 题目连接 https://www.nowcoder.com/acm/contest/186#question A.石子游戏 题解 注意到当石子个数为偶数的时候,每回合都会减 ...

  7. Wannafly挑战赛18B 随机数

    Wannafly挑战赛18B 随机数 设\(f_i\)表示生成\(i\)个数有奇数个1的概率. 那么显而易见的递推式:\(f_i=p(1-f_{i-1})+(1-p)f_{i-1}=(1-2p)f_{ ...

  8. Wannafly挑战赛14 A-直角三棱锥

    Wannafly挑战赛14 A-直角三棱锥 链接:https://www.nowcoder.com/acm/contest/81/A 来源:牛客网 题目描述 在三维空间中,平面 x = 0, y = ...

  9. Wannafly挑战赛27 C蓝魔法师

    链接Wannafly挑战赛27 C蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于\(k\),\(n,k\leq 2*10^3\) 假设我们正在考虑\(i\)这个子树,那么 ...

  10. Wannafly挑战赛26-B 冥土追魂

    地址:https://www.nowcoder.com/acm/contest/212/B 思路:对于行列选取,是选择所有行中的最大值的最小值,当是并不能用贪心来做,例如 2 2 2 7 8 1 9 ...

最新文章

  1. 接口隔离原则_是时候深入学习一下“接口隔离原则”了
  2. 研究一下valueOf与toString方法
  3. centos7开启vnc服务_阿里云CentOS 7搭建VNC远程桌面服务步骤方法
  4. 拥抱创新,持续探索——对话阿里云MVP胡逢法
  5. 股票的资产重组什么意思?
  6. python里order什么意思_python中OrderedDict的使用方法详解
  7. debian 8 和centos 配置java 环境变量的正确姿态
  8. Linux 使用 shell 脚本处理字符串
  9. Flask 框架 是 Python 中最流行的 Web 框架之一
  10. 【面试题系列|前端面试题】前端高频面试题总结(2021年最新版)
  11. Mac Book Pro桌面隐藏文件
  12. Unity插件——Odin 学习笔记(一)
  13. COPRA RF 2005 SR1最新版 (冷弯成型,轧辊设计)
  14. 并行处理提高工作效率
  15. 倾斜摄影当中模型精度和测绘当中的分辨率/比例尺是怎么回事?
  16. mysql课设体会_课程设计心得体会8篇
  17. [转]performSelector延时调用导致的内存泄露
  18. php工程师具备技能,PHP工程师具备的技能及素质
  19. seed lab 2020 packet sniffing and spoofing lab
  20. OPC DA与OPC UA的区别

热门文章

  1. 第二百二十六天 how can I 坚持
  2. 第二次冲刺团队进展报告七
  3. 个人项目【 完成总结】
  4. ubuntu rar文件乱码
  5. (转)MySQL 服务器内存使用
  6. 谈谈我理解的文化包容性
  7. C#中Cache的使用
  8. ASP.NET MVC 3.0学习系列文章—Model in ASP.NET MVC 3.0
  9. Redis在SSM项目中的简单使用
  10. Visual Studio 2015 Community连接到Mysql