cf的几道小题
1、E - Fridge
教训:做题的时候,没有想清楚问题,把问题复杂化了
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1010;
string st;
int cnt[N], minn = N, pos;
struct node
{
int num;
int sum;
bool operator<(const node &p) const
{
if (sum < p.sum)
return true;
else if (sum == p.sum && num < p.num)
return true;
return false;
}
} a[N];
signed main()
{
cin >> st;
for (int i = 0; i < st.size(); i++)
{
int x = st[i] - '0';
cnt[x]++;
}
for (int i = 1; i <= 9; i++)
{
if (cnt[i] == 0)
{
cout << i;
return 0;
}
}
for (int i = 0; i < 10; i++)
{
a[i].num = i;
a[i].sum = cnt[i];
}
if (!a[0].sum)
{
cout << 10;
return 0;
}
sort(a + 1, a + 10);
if (a[0].sum < a[1].sum)
{
cout << 1;
for (int i = 1; i <= a[0].sum + 1; i++)
{
cout << 0;
}
}
else
{
for (int i = 1; i <= a[1].sum + 1; i++)
{
cout << a[1].num;
}
}
return 0;
}
2、J - Secret Santa
教训:数据范围比较大,直接暴力会超时,并且推公式比较麻烦,优先考虑打表
思路:当n >= 9时,会达到极限,后面的概率值都是一样的。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1010;
int a[N], num = 1, n;
double cnt[N];
signed main(){
cin >> n;
for(int i = 1; i <= 10; i++) a[i] = i;
int ans = 0;
for(int i = 1; i <= 10; i++){
ans = 0;
num = num * i;
do{
for(int j = 1; j <= i; j++){
if(a[j] == j){
ans ++;
break;
}
}
}while(next_permutation(a + 1, a + 1 + i));
cnt[i] = 1.0 * ans / num;
}
if(n >= 10) cout <<fixed << setprecision(8) << cnt[10];
else cout <<fixed << setprecision(8) << cnt[n];
}
3、CF1656C Make Equal With Mod
思路:如果想让所有的序列变成0,那么只需从序列最大的数开始取模,这样最后的结果一定是0
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, a[N], t;
signed main(){
cin >> t;
while(t --){
cin >> n;
set<int> s;
for(int i = 1; i <= n; i++){
cin >> a[i];
s.insert(a[i]);
}
bool flag1 = false, flag2 = false;
for(set<int>::iterator it = s.begin(); it != s.end(); it ++){
if(*it == 0) flag1 = true;
if(*it == 1) flag2 = true;
}
if(flag1 && flag2){
cout <<"NO" << endl;
}
else{
sort(a + 1,a + 1 + n);
bool flag = true;
for(int i =1 ; i < n; i++){
if(a[i + 1] - a[i] == 1 && a[1] == 1) {
flag = false; break;
}
}
if(!flag) cout << "NO" << endl;
else cout <<"YES" << endl;
}
}
return 0;
}
4、D - Down the Pyramid
思路:求可变化的数的上界和下界,学会区分上界和下界。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, a[N], now, minn = 0, maxn = 0x3f3f3f3f;
signed main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
for(int i = 1; i <= n; i++){
now = a[i] - now;
if(i % 2 == 1){//偶数减x,所以x有最大值,要取上界最小值
maxn = min(maxn, now);
}
else{//奇数 + x,所以x有最小值
minn = max(minn, -now);
}
}
if(minn > maxn) cout <<"0";
else cout << maxn - minn + 1;
return 0;
}
cf的几道小题的更多相关文章
- CF上的3道小题(2)
CF上的3道小题(2) T1:CF630K Indivisibility 题意:给出一个数n,求1到n的数中不能被2到9中任意一个数整除的数. 分析:容斥一下,没了. 代码: #include < ...
- CF上的3道小题(1)
CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...
- 关于SQL的几道小题详解
关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样 ...
- 逛园子,看到个练习题,小试了一把(淘宝ued的两道小题)
闲来无事,逛园子,充充电.发现了一个挺有意思的博文,自己玩了一把. 第一题:使用 HTML+CSS 实现如图布局,border-widht 1px,一个格子大小是 60*60,hover时候边框变为橘 ...
- 常让人误解的一道js小题
一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...
- [2]十道算法题【Java实现】
前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。
Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...
- CF 628B New Skateboard --- 水题
CD 628B 题目大意:给定一个数字(<=3*10^5),判断其能被4整除的连续子串有多少个 解题思路:注意一个整除4的性质: 若bc能被4整除,则a1a2a3a4...anbc也一定能被4整 ...
- CF 628A --- Tennis Tournament --- 水题
CF 628A 题目大意:给定n,b,p,其中n为进行比赛的人数,b为每场进行比赛的每一位运动员需要的水的数量, p为整个赛程提供给每位运动员的毛巾数量, 每次在剩余的n人数中,挑选2^k=m(m & ...
随机推荐
- 【转帖】MySQL索引
数据表如何用索引快速查找 索引是 排好序的快速查找的数据结构 索引存储在文件系统中 索引的文件存储形式与存储引擎有关 索引数据结构:可以是二叉树.红黑树.Hash表.B-Tree.B+Tree 1.二 ...
- 【转帖】Linux性能优化(一)——stress压力测试工具
https://blog.csdn.net/a642960662/category_11641226.html 一.stress简介 1.stress简介 stress是Linux的一个压力测试工具, ...
- 兼容微信支付宝抖音小程序的工具推荐!还能将小程序搬到自己的app里面
事情的起因是这样的. 之前在微信.支付宝和抖音开放平台都上架了自己的小程序,虽然几个平台有自己的开发标准,但是都是基于 JavaScript 这种已经被广泛使用的编程语言进行开发的,对于开发者而言学习 ...
- vue3中provide和inject的使用
1.provide 和 inject 的讲解 provide和inject可以实现嵌套组件之间进行传递数据. 这两个函数都是在setup函数中使用的. 父级组件使用provide向下进行传递数据: 子 ...
- TypeScript数组类型定义
第一种方式:可以在元素类型后面接上 [],表示由此类型元素组成的一个数组: var arr: number[] = [1, 2, 3]; //数字类型的数组 var arr2: string[] = ...
- Go实现网络代理
使用 Go 语言开发网络代理服务可以通过以下步骤完成.这里,我们将使用 golang.org/x/net/proxy 包来创建一个简单的 SOCKS5 代理服务作为示例. 步骤 1. 安装 golan ...
- 乌班图安装docker
目录 一.前言 二.安装 2.1 设置仓库 2.3 安装 Docker Engine 2.4 安装特定版本的 Docker Engine: 2.5 测试 三.配置非 root 用户运行 Docker ...
- 期盼已久全平台支持-开源IM项目OpenIM之uniapp更新
国内uniapp使用广泛,OpenIM的uniapp sdk以及文档和demo (https://github.com/OpenIMSDK/Open-IM-Uniapp-Demo)都已更新,本文主要展 ...
- 从零开始配置 vim(3)—— 键盘映射进阶
严格意义上来说,快捷键的绑定应该是键盘映射,将某些键映射为另一些键. 在上篇我们介绍了基本的键盘映射操作,知道了如何 :map.:imap.:vmap.:nmap这些命令来映射键盘快捷键.它们很方便, ...
- 人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF
人工智能LLM模型:奖励模型的训练.PPO 强化学习的训练.RLHF 1.奖励模型的训练 1.1大语言模型中奖励模型的概念 在大语言模型完成 SFT 监督微调后,下一阶段是构建一个奖励模型来对问答对作 ...