Codeforces Round #668 (Div. 2)A-C题解
A. Permutation Forgery
题目:http://codeforces.com/contest/1405/problem/A
题解:这道题初看有点吓人,一开始居然想到要用全排序,没错我真傻,TLE,之后再想后发现,将数组反过来,两两相加的和和正着的是一样的,因此我们只需将数组倒叙即可。
代码:
#include<bits/stdc++.h> //POJ不支持
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
using namespace std;
const long long inf = 1e12;//无穷大
const int maxn = ;//最大值。
typedef long long ll; ll a[],t,n; int main()
{
IOS;
int i,j;
cin>>t;
while(t--)
{
cin>>n;
for(i=;i<n;i++)
cin>>a[i];
reverse(a,a+n);
for(i=;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
return ;
}
B. Array Cancellation
题目:http://codeforces.com/contest/1405/problem/B
题解:
题意是当i<j,可以执行a[i]--,a[j]++,此操作是不消耗硬币的,而i>j的话需要消耗一个硬币,输出最小的消耗硬币
我们的解法是:从头进行遍历,若为正数则ans相加,统计i之前的正数之和,若为负数,判断ans是否能将其中和为0,若可以则ans+=a[i],否则ans=0,a[i]+=ans,最后遍历完之后,将不用消耗硬币的操作做完,剩余的所有负数即为需要消耗硬币才能将其置为0的操作,因此可以在第一次遍历是就将剩余的负数统计一下。
代码:
#include<bits/stdc++.h> //POJ不支持
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
using namespace std;
const long long inf = 1e12;//无穷大
const int maxn = ;//最大值。
typedef long long ll; ll a[maxn],n,ans,ans2;
int main()
{
IOS;
int i,j,t;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
ans=,ans2=;
for(i=;i<n;i++)
{
scanf("%lld",&a[i]);
}
for(i=;i<n;i++)
{
if(a[i]>)
ans+=a[i];
else
{
if(ans+a[i]>)
ans+=a[i];
else
{
a[i]+=ans;
ans=;
ans2-=a[i];
}
}
}
printf("%lld\n",ans2);
}
return ;
}
C. Balanced Bitstring
题目:考虑第一段0123和第二段1234,其中123是相同的,即只需要使得0和4相同即可,即为同余位置的字符相同即可
最后检查一下0~k的位置的0和1的数量是否满足我们上面的假设即可
代码:
#include<bits/stdc++.h>
using namespace std;
const long long inf = 1e12;//无穷大
const int maxn = ;//最大值。
typedef long long ll;
char s[maxn];
int t,n,k; bool check()
{
int v0=,v1=,i,j;
for(i=;i<=k;i++)
{
v0=v1=;
for(j=i;j<=n;j+=k)
{
if(s[j]=='')
v1=;
if(s[j]=='')
v0=;
}
//若同余位置的数字不相等,直接退出
if(v0&&v1)
return false;
for(j=i;j<=n;j+=k)
{
//将同余位置为?的替换成应该出现的数字
if(s[j]=='?')
{
if(v0)
s[j]='';
else if(v1)
s[j]='';
}
}
}
v0=v1=;
//统计前k个字符终0和1的个数,是否过半,过半则no
for(i=;i<=k;i++)
{
if(s[i]=='')
v1++;
else if(s[i]=='')
v0++;
}
if(v0>k/||v1>k/)
return false;
return true;
} int main()
{
cin>>t;
while(t--)
{
cin>>n>>k;
scanf("%s",s+);
if(check())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return ;
}
Codeforces Round #668 (Div. 2)A-C题解的更多相关文章
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- Codeforces Round #198 (Div. 2)A,B题解
Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...
- Codeforces Round #672 (Div. 2) A - C1题解
[Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more th ...
- Codeforces Round #668 (Div. 2) D. Tree Tag 题解(博弈)
题目链接 题目大意 给你一颗树,Alice在a点,Bob在b点,Alice最多走da步,Bob最多走db步,两人轮流走路.要你判断经过无数次追赶后,Alice是否可以追上Bob,两人进行的都是最优策略 ...
- Codeforces Round #614 (Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...
- Codeforces Round #610 (Div. 2) A-E简要题解
contest链接: https://codeforces.com/contest/1282 A. Temporarily unavailable 题意: 给一个区间L,R通有网络,有个点x,在x+r ...
- Codeforces Round #611 (Div. 3) A-F简要题解
contest链接:https://codeforces.com/contest/1283 A. Minutes Before the New Year 题意:给一个当前时间,输出离第二天差多少分钟 ...
- Codeforces Round #668 (Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1405 A. Permutation Forgery 题意 给出一个大小为 $n$ 的排列 $p$,定义 \begin{equ ...
- Codeforces Round #499 (Div. 2) D. Rocket题解
题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...
随机推荐
- 消息队列和事件循环(Event Loop)
产生原因 为什么会有消息队列和事件循环呢?首先最关键的一点在于JS是个单线程,并且主线程非常繁忙,既要处理 DOM,又要计算样式,还要处理布局,同时还需要处理 JavaScript 任务以及各种输入事 ...
- 8 Java 条件逻辑语句
生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,在上学的时候,如果期末考试成绩在全校能拿到前100名,则奖励一个 iPhone 11 .对于这种“需要先判断条件,条件满足后才执行的情况 ...
- java 基本类型包装类
一 基本类型包装类 1.包装类概述 Java中提供了相应的对象来解决实现字符串与基本数据之间转换问题,基本数据类 型对象包装类:java将基本数据类型值封装成了对象. 8种基本类型对应的包装类如下: ...
- C#开发笔记,点点细微,处处真情,记录开发中的难言之隐
该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/956 访问. 概述 本系列文章将会向大家介绍本人实际开发过程中所遇到技术 ...
- Clion使用gtk3
在已经安装了gtk3的情况下,使用Clion还是无法正常给gtk3. 此时,我们需要更改CMakeList. 以下代码中需要添加的行都以#开头,此仅为了标识需要添加的行,而无需在实际代码中添加# cm ...
- express 洋葱模型 路由管理 中间件
express 路由管理,通过 app.express(); app.METHOD(path,fn(req, res)的方式进行路由的配置.实现了请求的接口的路由的拆分.那么可以将路由配置,分发到不 ...
- oracle语法查某个字段为空
select * from t_address_express_mapping t where t.start_house_number is null;
- Mybatis中<![cdata[ ]]>
1.<![cdata[ ]]>介绍 <![cdata[ 内容 ]]>是一种xml语法,在CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记 ...
- 学长小清新题表之UOJ 180.实验室外的攻防战
学长小清新题表之UOJ 180.实验室外的攻防战 题目描述 时针指向午夜十二点,约定的日子--\(2\)月\(28\)日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks ...
- 国人开源了一款超好用的 Redis 客户端,真香!!
大家都知道,Redis Desktop Manager 是一款非常好用的 Redis 可视化客户端工具,但可惜的是 v0.9.4 版本之后需要收费了: 这个工具不再免费提供安装包了,要对所有安装包收费 ...