第十六周 12.14---12.20
2015-12-14 08:00
169 查看
新的一周>_<
---12.14
补之前的一场 cf
cf 604c
http://codeforces.com/contest/604/problem/C
给一串长度为 n 的 01串,可以翻转一个区间,问能够得到的最长的01序列是多长(可以不连续)
没有想出来,,,
其实可以发现,翻转一个区间,能够给原串带来2个贡献,所以算出原来的最长的加上 2 和 n 取最小值就好了
View Code
---12.14
补之前的一场 cf
cf 604c
http://codeforces.com/contest/604/problem/C
给一串长度为 n 的 01串,可以翻转一个区间,问能够得到的最长的01序列是多长(可以不连续)
没有想出来,,,
其实可以发现,翻转一个区间,能够给原串带来2个贡献,所以算出原来的最长的加上 2 和 n 取最小值就好了
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn = 1e5+5; int a[maxn],b[maxn],c[maxn]; int n; void solve(){ if(n%2 == 0){ puts("-1"); return; } for(int i = 0;i < n;i++) c[i] = i; a[0] = 0; for(int i = 1;i <= n/2;i++){ a[i] = i*2; a[i+n/2] = i*2-1; } b[0] = 0; for(int i = 1;i < n;i++){ b[i] = n-i; } for(int i = 0;i < n;i++) printf("%d ",a[i]); printf("\n"); for(int i = 0;i < n;i++) printf("%d ",b[i]); printf("\n"); for(int i = 0;i < n;i++) printf("%d ",c[i]); printf("\n"); } int main(){ while(scanf("%d",&n) != EOF){ solve(); } return 0; }
View Code
相关文章推荐
- 在Windows上安装PyCUDA和Theano
- 欢迎使用CSDN-markdown编辑器
- Bootstrap4
- PL/SQL 游标
- C++双向循环链表实现
- Jenkins+maven+git 实现自动构建、权限管理、静态代码检测、远程部署、发送邮件功能
- 阿里云服务器搭建随笔(一)
- HDOJ--1008
- 部署和调优 1.1 nfs部署和优化-2
- 发现个make的小秘密
- haokaixin a
- Python中通过多个字符分割(split)字符串的方法
- 某厉害的比赛的题解(待补
- 通过javascript在网页端解压zip文件并查看压缩包内容
- Android之放大镜实现的两种方式
- Python爬虫教程——实战二三四五
- Git之如何解决sourceTree已经pull全部下来但是本地没有更新的问题
- 【Java.Apache.Camel】
- LeetCode 101:Symmetric Tree
- 通过style样式实现动态显示与隐藏