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. 010_go语言中的maps映射(字典)

    代码演示 package main import "fmt" func main() { m := make(map[string]int) m["k1"] = ...

  2. spring boot中集成Redis

    1 pom.xml文件中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <arti ...

  3. 《Spanner: Google’s Globally-Distributed Database》论文总结

    Spanner 总结 说明:本文为论文 <Spanner: Google's Globally-Distributed Database> 的个人理解,难免有理解不到位之处,欢迎交流与指正 ...

  4. Linux中C++提示‘close’ was not declared

    C++socket编程时关闭socket和epoll时出现‘close’ was not declared,是程序头文件缺失导致的.缺失头文件#include <unistd.h>

  5. 2020-06-22:已知两个非负数的异或值为M,两数之和为N,求这两个数?

    福哥答案2020-06-22: 1.遍历法时间复杂度:O(N)最好空间复杂度:O(1)平均空间复杂度:O(sqrt(N))最坏空间复杂度:O(N)[0,N/2]依次遍历,符合条件的就是需要的结果. 2 ...

  6. C#LeetCode刷题之#590-N叉树的后序遍历(N-ary Tree Postorder Traversal)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4092 访问. 给定一个 N 叉树,返回其节点值的后序遍历. 例如 ...

  7. POW共识机制原理及优缺点

    PoW共识机制 POW工作量证明(英文全称为Proof of Work)在比特币之前就已经出现,中本聪在设计区块链的共识机制的时候就是借鉴了POW工作量证明.常见的是利用HASH运算的复杂度进行CPU ...

  8. leetcode 877. Stone Game 详解 -——动态规划

    原博客地址 https://blog.csdn.net/androidchanhao/article/details/81271077 题目链接 https://leetcode.com/proble ...

  9. Linux-Centos 用crontab定时运行python脚本详细步骤

    服务器总是要定时运行某个程序,而我在解决这个问题的时候遇到很多困难, 特此记录下来. 1.编辑crontab配置 crontab -e 服务器一般会安装好crontab,若没有安装请按命令安装 yum ...

  10. Revit二次开发——非模态窗口的事件处理

    一.起因    自己在写revit二开时,有一个Winform窗体按钮点击事件需要 触发调用事务进行处理,结果出现“异常“Starting a transaction from an external ...