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

  1. Codeforces Round #612 (Div. 2) 前四题题解

    这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...

  2. Codeforces Round #198 (Div. 2)A,B题解

    Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...

  3. Codeforces Round #672 (Div. 2) A - C1题解

    [Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more th ...

  4. Codeforces Round #668 (Div. 2) D. Tree Tag 题解(博弈)

    题目链接 题目大意 给你一颗树,Alice在a点,Bob在b点,Alice最多走da步,Bob最多走db步,两人轮流走路.要你判断经过无数次追赶后,Alice是否可以追上Bob,两人进行的都是最优策略 ...

  5. Codeforces Round #614 (Div. 2) A-E简要题解

    链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...

  6. Codeforces Round #610 (Div. 2) A-E简要题解

    contest链接: https://codeforces.com/contest/1282 A. Temporarily unavailable 题意: 给一个区间L,R通有网络,有个点x,在x+r ...

  7. Codeforces Round #611 (Div. 3) A-F简要题解

    contest链接:https://codeforces.com/contest/1283 A. Minutes Before the New Year 题意:给一个当前时间,输出离第二天差多少分钟 ...

  8. Codeforces Round #668 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1405 A. Permutation Forgery 题意 给出一个大小为 $n$ 的排列 $p$,定义 \begin{equ ...

  9. Codeforces Round #499 (Div. 2) D. Rocket题解

    题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...

随机推荐

  1. 016_go语言中的递归

    代码演示 package main import "fmt" func fact(n int) int { if n == 0 { return 1 } return n * fa ...

  2. Flink中的window、watermark和ProcessFunction

    一.Flink中的window 1,window简述  window 是一种切割无限数据为有限块进行处理的手段.Window 是无限数据流处理的核心,Window 将一个无限的 stream 拆分成有 ...

  3. Window Server2012 修改远程桌面端口号

    Win + R 输入 regedit 打开注册表编辑器 在注册表编辑器中找到 PortNumber 双击 PortNumber,选择10进制,修改想要的端口号 把修改的端口添加为入站规则 重启 Rem ...

  4. Docker 快速搭建 MySQL 5.6 开发环境

    使用 Docker 快速搭建一个 MySQL 5.6 开发环境 步骤 获取镜像 docker pull mysql:5.6 启动容器,密码 123456,映射 3306 端口 docker run - ...

  5. Vuex mapAction的基本使用

    mapAction-store中的异步方法 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new ...

  6. 使用pytorchviz进行模型可视化出现 'NoneType' object has no attribute 'grad_fn'

    问题 最近学习pytorch, 原来用kreas重现的模型改为用pytorch实现训练,因为这样给模型的操作更加细致, 对模型的掌控更好. 当我写好一个模型 出现了这个问题 使用pytorchviz进 ...

  7. HTML基础-06

    网页背景 1.  设置背景颜色          background-color:#bfa; 设置背景图片               background-image:url(“./img/... ...

  8. 【SDOI2009】 HH的项链 - 莫队

    题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...

  9. JavaScript学习系列博客_26_JavaScript 数组的一些方法

    数组的一些方法 - push() - 用来向数组的末尾添加一个或多个元素,并返回数组新的长度 - 语法:数组.push(元素1,元素2,元素N) - pop() - 用来删除数组的最后一个元素,并返回 ...

  10. 瑞发科NS1081主控 + THGBM5G7A2JBAIR(eMMC) 制作16GB闪存驱动器

    文档标识符:NS1081_FLASH-DRIVE_D-P9 作者:DLHC 最后修改日期:2020.8.22 本文链接:https://www.cnblogs.com/DLHC-TECH/p/NS10 ...