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的几道小题的更多相关文章

  1. CF上的3道小题(2)

    CF上的3道小题(2) T1:CF630K Indivisibility 题意:给出一个数n,求1到n的数中不能被2到9中任意一个数整除的数. 分析:容斥一下,没了. 代码: #include < ...

  2. CF上的3道小题(1)

    CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...

  3. 关于SQL的几道小题详解

    关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样 ...

  4. 逛园子,看到个练习题,小试了一把(淘宝ued的两道小题)

    闲来无事,逛园子,充充电.发现了一个挺有意思的博文,自己玩了一把. 第一题:使用 HTML+CSS 实现如图布局,border-widht 1px,一个格子大小是 60*60,hover时候边框变为橘 ...

  5. 常让人误解的一道js小题

    一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...

  6. [2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  7. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  8. 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。

    Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...

  9. CF 628B New Skateboard --- 水题

    CD 628B 题目大意:给定一个数字(<=3*10^5),判断其能被4整除的连续子串有多少个 解题思路:注意一个整除4的性质: 若bc能被4整除,则a1a2a3a4...anbc也一定能被4整 ...

  10. CF 628A --- Tennis Tournament --- 水题

    CF 628A 题目大意:给定n,b,p,其中n为进行比赛的人数,b为每场进行比赛的每一位运动员需要的水的数量, p为整个赛程提供给每位运动员的毛巾数量, 每次在剩余的n人数中,挑选2^k=m(m & ...

随机推荐

  1. [官网]微软服务器TLS的支持情况

    https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-#tls-pro ...

  2. [转帖]关于面试时HA(RAC)会问到的一些问题

    1.什么是RAC(Real Application Cluster)? RAC(Real Application Cluster)是Oracle数据库的一种部署架构,它将多个数据库服务器连接在一起,共 ...

  3. [转帖]Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

    https://www.cnblogs.com/monjeo/p/12191673.html 权限简介Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方 ...

  4. with(上下文管理器)的用法

    with语句可以自动管理上下文资源,不论什么原因(成功或失败)跳出with语句,都能保证文件正确关闭,并 释放资源,不用手动去close掉资源 1.with语句中有两个内置方法__enter__和__ ...

  5. Ubuntu编译Xilinx的u-boot

    博主这里的是Ubuntu20.04LTS+Vivado2017.4+ZedBoard 注意:本文使用的环境变量导入方法是临时的,只要退出当前终端或者使用其他终端就会失效,出现异常问题,请随时expor ...

  6. Go基础之指针

    Go语言中的指针 目录 Go语言中的指针 一.Go语言中的指针介绍 1.1 指针介绍 1.2 基本语法 1.3 声明和初始化 1.4 Go 指针的3个重要概念 1.4.1 指针地址(Pointer A ...

  7. 紧跟潮流,抓住趋势,跟上全民AI的节奏,开源IM项目OpenIM产品介绍,为AIGC贡献力量

    开源价值 高度自主.安全可控.开放自由,私有化部署,一切皆可控 透明度和可信度:开源软件的源代码是公开的,任何人都可以查看和检查代码,从而增强了软件的透明度和可信度.用户可以了解软件的内部结构和运作方 ...

  8. 从零开始配置vim(21)——lsp简介与treesitter 配置

    截止到上一篇文章,我们配置了neovim的很多内容了.具备了一些编辑器的常用功能了,而且可以胜任日常的文档编辑工作了.但是想作为一个可靠的代码编辑器还缺少重要的一环,即代码语法部分的支持. 在过去的v ...

  9. 8.4 ProcessHeap

    ProcessHeap 是Windows进程的默认堆,每个进程都有一个默认的堆,用于在进程地址空间中分配内存空间.默认情况下ProcessHeap由内核进行初始化,该堆中存在一个未公开的属性,它被设置 ...

  10. nodejs连接mysql报错:throw err; // Rethrow non-MySQL errors TypeError: Cannot read property 'query' of undefined

    该问题的解决方案如下: win+R 输入cmd mysql -u root -p 输入密码进入到mysql 3.执行sql语句,将密码改成123456(自己可以记住的密码即可) alter user ...