codeforces 709D D. Recover the String(构造)
题目链接:
1 second
256 megabytes
standard input
standard output
For each string s consisting of characters '0' and '1' one can define four integers a00, a01, a10 and a11, where axy is the number ofsubsequences of length 2 of the string s equal to the sequence {x, y}.
In these problem you are given four integers a00, a01, a10, a11 and have to find any non-empty string s that matches them, or determine that there is no such string. One can prove that if at least one answer exists, there exists an answer of length no more than1 000 000.
The only line of the input contains four non-negative integers a00, a01, a10 and a11. Each of them doesn't exceed 109.
If there exists a non-empty string that matches four integers from the input, print it in the only line of the output. Otherwise, print "Impossible". The length of your answer must not exceed 1 000 000.
1 2 3 4
Impossible
1 2 2 1
0110 题意: 给出00,01,10,11这些组合的个数,判断是否存在这样的01串满足要求; 思路: 可以算出0和1的个数,每交换对0和1,那么01和10的个数就会一个加1和一个减1,所以01和10的和的值不变,构造就是1全在左边,0在右边,然后交换的次数就是01的个数了;然后输出来就好了;不过这题的wa点就是0和1的个数在0和1的这两种情况,反正我就是各种特判; AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <bits/stdc++.h>
#include <stack>
#include <map> using namespace std; #define For(i,j,n) for(int i=j;i<=n;i++)
#define mst(ss,b) memset(ss,b,sizeof(ss)); typedef long long LL; template<class T> void read(T&num) {
char CH; bool F=false;
for(CH=getchar();CH<'0'||CH>'9';F= CH=='-',CH=getchar());
for(num=0;CH>='0'&&CH<='9';num=num*10+CH-'0',CH=getchar());
F && (num=-num);
}
int stk[70], tp;
template<class T> inline void print(T p) {
if(!p) { puts("0"); return; }
while(p) stk[++ tp] = p%10, p/=10;
while(tp) putchar(stk[tp--] + '0');
putchar('\n');
} const LL mod=1e9+7;
const double PI=acos(-1.0);
const int inf=1e9;
const int N=1e5+10;
const int maxn=1e3+20;
const double eps=1e-12; int check(int x)
{
int l=1,r=1000005;
if(x==0)return 0;
while(l<=r)
{
int mid=(l+r)>>1;
if((LL)mid*(mid-1)<(LL)2*x)l=mid+1;
else r=mid-1;
}
return l;
} int main()
{
int a,b,c,d;
read(a);read(b);read(c);read(d); int x=check(a),y=check(d);
if(x==0&&(b||c))x=1;
if(y==0&&(b||c))y=1;
if((LL)x*(x-1)!=(LL)2*a||(LL)y*(y-1)!=(LL)2*d||(LL)x*y!=(LL)b+c)cout<<"Impossible\n";
else
{
if(x==0&&y==0)printf("0");
else if(x==0)
{
for(int i=1;i<=y;i++)printf("1");
}
else if(y==0)
{
for(int i=1;i<=x;i++)printf("0");
}
else
{
int t=b/y,f=y-b%y;
for(int i=1;i<=t;i++)printf("0"),x--;
for(int i=1;i<=f;i++)printf("1"),y--;
if(x>0){printf("0");x--;}
for(int i=1;i<=y;i++)printf("1");
for(int i=1;i<=x;i++)printf("0");
}
}
return 0;
}
codeforces 709D D. Recover the String(构造)的更多相关文章
- 【codeforces 709D】Recover the String
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...
- AIM Tech Round 3 (Div. 1) B. Recover the String 构造
B. Recover the String 题目连接: http://www.codeforces.com/contest/708/problem/B Description For each str ...
- CF708B Recover the String 构造
For each string s consisting of characters '0' and '1' one can define four integers a00, a01, a10 an ...
- 【CodeForces】708 B. Recover the String 数学构造
[题目]B. Recover the String [题意]找到一个串s,满足其中子序列{0,0}{0,1}{1,0}{1,1}的数量分别满足给定的数a1~a4,或判断不存在.数字<=10^9, ...
- Recover the String
Recover the String 题目链接:http://codeforces.com/contest/709/problem/D 构造 这题乍一看很难构造,但是如果知道了整个字符串中'0'和'1 ...
- AIM Tech Round 3 (Div. 2)D. Recover the String(贪心+字符串)
D. Recover the String time limit per test 1 second memory limit per test 256 megabytes input standar ...
- B. Recover the String
B. Recover the String time limit per test 1 second memory limit per test 256 megabytes input standar ...
- codeforces 623A. Graph and String 构造
题目链接 给出一个图, 每个节点只有三种情况, a,b, c. a能和a, b连边, b能和a, b, c,连边, c能和b, c连边, 且无重边以及自环.给出初始的连边情况, 判断这个图是否满足条件 ...
- CodeForces 708B Recover the String
构造. 根据$a[0][0]$可以求得$0$的个数$p$,根据$a[1][1]$可以求得$1$的个数$q$. 如果找不到$p$或$q$,那么就无解. 每一个$0$放到序列中的任何一个位置,假设和前面的 ...
随机推荐
- maven nexus deploy方式以及相关注意事项
以前公司都是配管负责管理jar的,现在没有专职配管了,得自己部署到deploy上供使用.总的来说,jar部署到nexus上有两种方式: 1.直接登录nexus控制台进行上传,如下: 但是,某些仓库可能 ...
- Study Tips
1. 100% width divs not spanning entire width of the browser in webkit. Even Body can not span the en ...
- copy 和 strong(或retain)的区别
http://stackoverflow.com/questions/18526909/whether-i-should-use-propertynonatomic-copy-or-propertyn ...
- Javascript一些小细节
1.判断class存在 $(obj).hasClass('BTCheck_ON') $obj.attr('class')=="BTCheck_ON" 有时我们判断样式存在会写成第二 ...
- C++函数模板
函数模板提供了一种函数行为,该函数行为可以用多种不同的类型进行调用,也就是说,函数模板代表一个函数家族,这些函数的元素是未定的,在使用的时候被参数化. 本文地址:http://www.cnblogs. ...
- iOS小游戏打地鼠
#import "ViewController.h" #import <AudioToolbox/AudioToolbox.h> @interface ViewCont ...
- 【原】自定义UIPageControl的圆点
在下面的两种情况下会导致圆点贴图刷新: 1.用户调用setCurrentPage:(NSInteger)currentPage时 所以重载这个函数便可拦截 2.点击圆点矩形区域时 这说明,我们 ...
- Xcode6.4注册URL Scheme步骤详解
URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便 ...
- IOS设计模式-抽象工厂
抽象工厂的灵活性要比简单工程的灵活性强. 抽象工厂的UML图(第一次画UML图,可能关系和箭头的图意义有错误,但是请不要以建模规范去看图,以最基本的结合后面OC代码,理解相关关系): 抽象工厂原理:抽 ...
- Objective-C的可变是如何实现的?
Objective-C的可变是怎么实现的?