codeforces-1111
https://www.cnblogs.com/31415926535x/p/10397007.html
A
题意就是给你两个字符串,然后如果s,t的对应位上的字母要么都是元音,要么都是辅音,,就输出Yes反之输出No,,长度不等肯定输出的是No,,,
#include <bits/stdc++.h>
//#include <iostream>
//#include <cstdio>
//#include <cstdlib>
//#include <string.h>
#define aaa cout<<ans<<endl;
#define endl '\n'
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf = 0x3f3f3f3f;//1061109567
const ll linf = 0x3f3f3f3f3f3f3f;
const double eps = 1e-6;
const double pi = 3.14159265358979;
const int maxn = 2e5 + 5;
const int maxm = 2e5 + 5;
const int mod = 1e9 + 7;
inline ll read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
bool check(char a, char b)
{
if(a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u')
if(b == 'a' || b == 'e' || b == 'i' || b == 'o' || b == 'u')
return true;
else
return false;
else if(b != 'a' && b != 'e' && b != 'i' && b != 'o' && b != 'u')return true;
else return false;
}
int main()
{
// freopen("233.in" , "r" , stdin);
// freopen("233.out" , "w" , stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
string s, t;cin >> s >> t;
if(s.length() != t.length())cout << "No" << endl;
else
{
int len = s.length();
for(int i = 0; i < len; ++i)
{
if(!check(s[i], t[i]))
{
cout << "No" << endl;
return 0;
}
}
cout << "Yes" << endl;
}
return 0;
}
B
题意是给你n个数,有两种操作,一个是删除任意的一个数,另一个是将任意的一个数加一,,对于 每个数的操作 最多有k种,,总的操作数是m,,,然后问你m个操作后最大的平均值是多少,,
首先为了尽可能的增加平均数,要删除一些小的数,,暴力遍历可能删除的数的个数,,显然最多删除的个数是n-1或者是m,,所以遍历的边界是 min(m, n - 1),,
然后依次删去最小的数(预先排序一下),,删掉这个数后,算一下此时剩下数的平均值,,,然后和上一次的结果比较一下,取最大就行
#include <bits/stdc++.h>
//#include <iostream>
//#include <cstdio>
//#include <cstdlib>
//#include <string.h>
#define aaa cout<<233<<endl;
#define endl '\n'
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, ull> pii;
const int inf = 0x3f3f3f3f;//1061109567
const ll linf = 0x3f3f3f3f3f3f3f;
const double eps = 1e-6;
const double pi = 3.14159265358979;
const int maxn = 1e5 + 5;
const int maxm = 2e5 + 5;
const ll mod = 1e9 + 7;
inline int read() //快读
{
int ans=0;
char ch=getchar();
while(!isdigit(ch))
ch=getchar();
while(isdigit(ch))
ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
ll a[maxn];
int main()
{
// freopen("233.in" , "r" , stdin);
// freopen("233.out" , "w" , stdout);
// ios_base::sync_with_stdio(0);
// cin.tie(0);cout.tie(0);
ll n, k, m;
n = read(); k = read(); m = read();
for(int i = 1; i <= n; ++i)a[i] = read();
sort(a + 1, a + 1 + n);
ll sum = 0;
for(int i = 1; i <= n; ++i)sum += a[i];
long double ans = (long double)(sum + min(k * n, m)) / (long double)(n);
for(int i = 1; i <= min(m, n - 1); ++i)
{
sum -= a[i];
long double res = (long double)(sum + min(m - i, k * (n - i))) / (long double)(n - i);
ans = max(ans, res);
}
printf("%.20f", (double)ans);
return 0;
}
C
题意是给你一个区间长度为 \(2^n\)长,,然后一个数组a[k],a[i]表示第i个位置加一,,可能有a[i]是相等的,,然后有两种操作,一种是子区间全为零时操作的代价为A,,否则代价为 \(B*num_{l,r}*len_{l, r}\),,,问你整个区间的最小操作代价,,
题解是递归+二分求解,,,
我一开始想到了递归来求,,但是自己写二分求区间[l, r]的 \(num_{l, r}\) 时总是写爆,,,最后看了题解才想起来还有stl里的 lower_bound 和 upper_bound 可以直接二分找到,,,QAQ
#include <bits/stdc++.h>
//#include <iostream>
//#include <cstdio>
//#include <cstdlib>
//#include <string.h>
#define aaa cout<<233<<endl;
#define endl '\n'
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, ull> pii;
const int inf = 0x3f3f3f3f;//1061109567
const ll linf = 0x3f3f3f3f3f3f3f;
const double eps = 1e-6;
const double pi = 3.14159265358979;
const int maxn = 1e5 + 5;
const int maxm = 2e5 + 5;
const ll mod = 1e9 + 7;
inline ll read() //快读
{
ll ans=0;
char ch=getchar();
while(!isdigit(ch))
ch=getchar();
while(isdigit(ch))
ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
vector<ll> a;
ll n, k, A, B;
#define len (r-l+1)
#define mid ((l+r)>>1)
ll getnum(int l, int r)
{
l = lower_bound(a.begin(), a.end(), l) - a.begin();
r = upper_bound(a.begin(), a.end(), r) - a.begin();
return r - 1 - l + 1;
}
ll solve(int l, int r)
{
ll num = getnum(l, r);
if(!num)return A;
if(l == r)
{
if(num)
return B * num * 1;
else
return A;
}
ll a = solve(l, mid);
ll b = solve(mid + 1, r);
// cout << a << b << "---" << endl;
if(num)return min(a+b, (ll)(B * len * num));
else return min(a+b, A);
}
int main()
{
// freopen("233.in" , "r" , stdin);
// freopen("233.out" , "w" , stdout);
// ios_base::sync_with_stdio(0);
// cin.tie(0);cout.tie(0);
n = read(); k = read(); A = read(); B = read();
for(int i = 1; i <= k; ++i)
{
int t = read();
a.pb(t);
}
sort(a.begin(), a.end());
printf("%lld", solve(1, (1<<n)));
return 0;
}
codeforces-1111的更多相关文章
- Codeforces 1111 简要题解
文章目录 A题 B题 C题 D题 E题 传送门 A题 传送门 题意简述:把262626个英文字母分成两类A,BA,BA,B,AAA类字符可以转成AAA类字符,BBB类字符可以转成BBB类字符,问给出的 ...
- Codeforces 1111 E. Tree(虚树,DP)
题意 有一棵树,q个询问,每次询问,指定一个点做树根,再给定k个点,要求把这些点分成不超过m组的方案数,分配的限制是任意两个有祖先关系的点不能分在同一组.题目还保证了所有的询问的k加起来不超过1e5. ...
- Codeforces round 1111
CF Div 2 537 比赛链接 感觉题目难度OK,五个题都能做,后俩题考察人的翻译水平... 另外,$Claris$太强了... A 直接按照题意模拟,不知道为啥有人会被× 代码: #includ ...
- codeforces contest 1111
A. Superhero Transformation 题意: 元音和元音,辅音和辅音字母之间可以互相转换,问两个字符串是否想同: 题解:直接判断即可: #include<bits/stdc++ ...
- Codeforces 717G Underfail(最小费用最大流 + AC自动机)
题目 Source http://codeforces.com/problemset/problem/717/G Description You have recently fallen throug ...
- codeforces Good Bye 2015 B. New Year and Old Property
题目链接:http://codeforces.com/problemset/problem/611/B 题目意思:就是在 [a, b] 这个范围内(1 ≤ a ≤ b ≤ 10^18)统计出符合二进制 ...
- Codeforces Gym 100513G G. FacePalm Accounting
G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...
- Codeforces Round #309 (Div. 2) B. Ohana Cleans Up 字符串水题
B. Ohana Cleans Up Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/554/pr ...
- Codeforces Beta Round #96 (Div. 1) D. Constants in the language of Shakespeare 贪心
D. Constants in the language of Shakespeare Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codef ...
- CodeForces 554B(扫房间)
CodeForces 554B Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u ...
随机推荐
- Servlet3.0的注解自定义原生Listener监听器实战
简介:监听器介绍和Servlet3.0的注解自定义原生Listener监听器实战 自定义Listener(常用的监听器 servletContextListener.httpSessionListen ...
- JAVA中的引用
关于值类型和引用类型的话题,C++.JAVA.python.go.C#等等高级语言都有相关的概念,只要理解了其底层工作原理,可以说即使是不同的语言,在面试学习工作实践中都可以信手拈来(不要太纠集语言) ...
- nrm安装与使用
1.什么是nrm nrm是一个npm源管理工具,使用它可以快速切换npm源. 2.安装 使用如下命令安装: npm install -g nrm 安装完后可使用 nrm -V 显示版本,注意是大写V. ...
- C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)
什么是面向对象? 在软件的设计过程中的两种方式: 把程序按照算法的执行步骤来拆解,一步步实现,这是面向过程编程: 把程序按照现实世界的理解,分成不同对象,通过多个对象之间的相互作用,来完成程序的最终功 ...
- mac 报错Root chmod operation not permitted on file
系统:mac os 10.14.1 重启电脑 mac用户在升级系统之后,电脑启用了SIP(System Integrity Protection),增加了rootless机制,导致即使在root权限下 ...
- Jenkins实现定时、顺序编译
1 Jenkins实现定时.顺序编译 l Jenkins 编译流程:更新代码,编译公共服务,编译普通服务(普通服务依赖于公共服务).以下图为例,首先执行 update,再执行 icto_c ...
- Maven编译时,出现找不到符号
解决办法: 如果使用的是聚合工程 1.执行project--clean(eclipse)或者build project(intellij),将项目清理一下. 2.执行聚合工程中的 Maven--cl ...
- MariaDB和mySQL到底区别在哪,实验说明问题!
先看图,插入数据和时间的对数图,实验条件一直且关闭了mysql默认事务保证不是单条事务而是批量事务 另外确保了mysql and mariaDB都是在支持事务存储引擎下测试的. MySQL之父Wide ...
- [转]Hadoop参数汇总
出自:https://segmentfault.com/a/1190000000709725 Hadoop参数大全 主要配置文件: core hdfs yarn mapred 重要性表示如下: 重要 ...
- *****hibernate主键生成
一.主键主键是关系数据库中的一个基本概念,它用来保证记录的唯一性主键都是没有业务含义的,所以开发 者不会.也不需要,显示地设置实体对象的主键值.但是对于数据库来说,主键是必须的 Hibernate内置 ...