Codeforces Round 253 (Div. 2)
layout: post
title: Codeforces Round 253 (Div. 2)
author: "luowentaoaa"
catalog: true
tags:
mathjax: true
- codeforces
- 模拟栈
- 贪心
传送门
A.Anton and Letters (签到)
题意
判断字符串里面有多少个不同字符
思路
直接set一下
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int maxn=2e5+50;
const ll inf=0x3f3f3f3f3f3f3f3fLL;
set<char>st;
int main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);string s;getline(cin,s);int len=s.size();for(int i=0;i<len;i++){if(s[i]>='a'&&s[i]<='z')st.insert(s[i]);}cout<<st.size();return 0;
}
B.Kolya and Tandem Repeat (暴力模拟)
题意
给你一个字符串,你可以在末尾添加K个任意字符 ,让你找出一个最长的重复两次的字串
思路
直接暴力模拟
对于每个字串长度,字串起点,开始判断,复杂度n^3
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int maxn=2e5+50;
const ll inf=0x3f3f3f3f3f3f3f3fLL;int main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);string ss;cin>>ss;string s="";s+='*';s+=ss;int k;cin>>k;for(int i=0;i<k;i++){s+='*';}int ans=0;int len=s.size()-1;for(int i=1;i<len;i++){for(int j=1;j<len;j++){if(i+2*j-1>len)continue;int head=i,tail=i+j,flag=0;for(int k=1;k<=j;k++){if(s[head+k-1]=='*'||s[tail+k-1]=='*'||s[head+k-1]==s[tail+k-1])continue;flag=1;}if(!flag)ans=max(ans,j*2);}}cout<<ans;return 0;
}
C.Borya and Hanabi (大模拟,二进制模拟)
题意
现在有五种花色五种数字组成的二十五张牌,你手里有诺干张牌,每次你可以询问一种颜色和一种数字,你会得到所有这个花色/数字牌的位置,问你最少多少次可以把所有的牌分类
思路
把题目抽象成一个二维坐标,花色为横坐标,数字为纵坐标,每次可以连接一条线,把一条线上的牌找到,对于一张牌有两种找到方法,
1.这张牌被两条线连接,也就是花色和数字都固定了,
2.这张牌的其他花色或其他数字都被找到了,那么剩下的就只有他了
可以发现我们最多只要连接十条线,所以我们可以直接子集模拟一下十条线的搭配
然后暴力判断能否在这种情况分出任意两张牌
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int maxn=2e5+50;
const ll inf=0x3f3f3f3f3f3f3f3fLL;
int x[maxn];
int y[maxn];
void who(string s,int i){char top=s[0];if(top=='B')x[i]=0;else if(top=='Y')x[i]=1;else if(top=='W')x[i]=2;else if(top=='G')x[i]=3;else x[i]=4;y[i]=s[1]-'1';
}
int n;
int bit(int i){return 1<<i;}
bool check (int sta) {for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(x[i]==x[j]){if( y[i]!=y[j] && (sta&bit(y[i]+5))==0&& (sta&bit(y[j]+5))==0 )return false;}else{if( (sta&bit(x[i])) || (sta&bit(x[j])) )continue;if(y[i]!=y[j] && ((sta&bit(y[i]+5)) || (sta&bit(y[j]+5)) ))continue;return false;}}}return true;
}
int main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);cin>>n;string s;for(int i=0;i<n;i++){cin>>s;who(s,i);}int ans=inf;for(int sta=0;sta<(1<<10);sta++){//cout<<bitset<11>(sta)<<endl;int num=0;for(int i=0;i<5;i++){if(sta&(1<<i)){num++;}if(sta&(1<<(i+5))){num++;}}if(check(sta))ans=min(ans,num);}cout<<ans<<endl;return 0;
}
D.Andrey and Problem(贪心)
题意
你有N个朋友,每个朋友都有百分之a[i]的几率给你出题,你现在只想要一道题,
想知道你选择哪些朋友给只出一题的几率最大,输出最大几率
例如 n=2
a1=0.1 a2=0.2
答案是 0.1×0.8 + 0.9×0.2=0.26
思路
一开始我是直接DP背包的然后发现错了,结果答案直接排序一下,暴力枚举就行了,我也不知道怎么证明...感觉很奇怪
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int maxn=5e4+50;
const ll inf=0x3f3f3f3f3f3f3f3fLL;
double dp[maxn];int main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int n;cin>>n;double yes,no;for(int i=1;i<=n;i++)cin>>dp[i];sort(dp+1,dp+1+n,[](double a,double b){return a>b;});yes=dp[1],no=1.0-dp[1];for(int i=2;i<=n;i++){double nowyes,nowno;nowyes=dp[i]*(no)+(1-dp[i])*(yes);if(nowyes>yes){yes=nowyes;no=no*(1-dp[i]);}}cout<<fixed<<setprecision(10);cout<<yes;return 0;
}
E.Artem and Array (模拟栈,贪心)
题意
给你N个数,这N个数相邻,你每次可以删除一个数,然后得到这个数周围两个数的最小值,(如果有一边没有数字只能获得零值)让你求把这N个数全部删除的值
思路
在纸上模拟一下,如果要最优那就是一开始把小的都删除(等于的也要删除),最后留下的都是比较大的,会发现留下的数组是一个先递增再递减的数组,并且最大和第二大的值是相邻的无法取到,所以答案就是前面删除获取的值和后面剩下的数组的前n-2小的值
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int maxn=2e6+50;
const ll inf=0x3f3f3f3f3f3f3f3fLL;
int n;
ll a[maxn];
ll ans;
ll st[maxn];
int top=0;
int main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int n;cin>>n;for(int i=1;i<=n;i++){ll x;cin>>x;while(top>=2&&st[top-1]>=st[top]&&x>=st[top]){ans+=min(st[top-1],x);top--;}st[++top]=x;}sort(st+1,st+top+1);for(int i=1;i<=top-2;i++){ans+=st[i];}cout<<ans<<endl;return 0;
}
转载于:https://www.cnblogs.com/luowentao/p/10436404.html
Codeforces Round 253 (Div. 2)相关推荐
- Codeforces Round #253 (Div. 1) A. Borya and Hanabi 暴力
A. Borya and Hanabi Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/442/p ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...
- Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...
最新文章
- oracle中decode函数用法及应用
- [LeetCode 题解]: Rotate List
- python 类方法 静态方法_python中类方法、类实例方法、静态方法的使用与区别
- python教程:filter,map,reduce
- matlab连续信号离散化_MATLAB开发自动驾驶第八课-控制信号帧的回放以进行标签化处理...
- 【数据结构与算法】之深入解析二叉树的算法实现和递归套路深度实践
- cnn stride and padding_Pytorch实现神经网络CNN案例
- 解决p4c安装时protobuf未定义引用的错误
- 计算机网络(第八版) 谢希仁——知识点
- Django超市仓库管理系统
- linux下声卡配置文件,Linux如何设置声卡
- 知识变现海哥:如何利用自己的时间和知识获得财富自由
- win10网络诊断为DNS服务器未响应,Windows10网络诊断DNS服务器未响应的解决办法
- Mac Android Studio Flutter环境配置之第一个Futter项目
- lab2 binary bomb 详解
- 名帖30 东汉 隶书《西岳华山庙碑》
- UltraEdit最新版v27软件下载 程序员必用高级文本编辑器
- 计算机一些专业术语,计算机专业术语大全
- 从Node.js访问文件系统
- vc中操作INI文件函数
热门文章
- python实现递归和非递归求两个数最大公约数、最小公倍数
- python os模块大全
- python3.8安装pygame_Python3.8安装Pygame很难?新萌也能轻松搞定安装并运行游戏
- Mysiam锁模式 innodb锁模式 是什么区别
- python java go 区别 一句话概括
- 【Django 2021年最新版教程16】pycharm model模型修改之后如何同步更新到mysql数据库
- kubernetes视频教程笔记 (7)-安装Harbor私有仓库
- Docker教程小白实操入门(18)--如何挂载和共享数据卷
- 基于SSM的MSDN资源发布网站
- java中max的意义_[Java] xms xmx XX:PermSize XX:MaxPermSize 参数意义解析