Jumbled String (Kattis - jumbledstring)(思维题)
Problem
Recall that a subsequence of a string is any string obtained by removing some subset of characters from the string, for instance “string”, “sing”, “i” and “sg” are all subsequences of “string”. If the same subsequence can be obtained in exactly t different ways, by removing different subsets of characters, we say that the subsequence occurs t times.
Jingfei wants to create a nonempty bit string that has the following properties:
the subsequence 00 occurs a times,
the subsequence 01 occurs b times,
the subsequence 10 occurs c times, and
the subsequence 11 occurs d times.
However, Jingfei does not know how to create such a string – or whether it is even possible. Could you help her?
Input
The input consists of a single line with four integers a, b, c, and d (0≤a,b,c,d≤1e9).
Output
Output a bit string that satisfies the given requirements. If there are several solutions, output any one of them. If there are no solutions, output “impossible”.
Sample Input 1 | Sample Output 1 |
---|---|
3 4 2 1 |
01001 |
Sample Input 2 | Sample Output 2 |
---|---|
5 0 0 5 |
impossible |
题解 :不需要考虑00、11,根据a个00和d个11来算出来需要的0的个数x,1的个数y。
找答案字符串时,凑01,这样10也满足条件。
设q = b / y,w = b % y。这样先输出时,输出q个0,输出y-w个1,这样就保证了有q*(y-w)个01,如果w == 0,表示刚好能够用上所有的1来组成01,再把剩余的输出1和0就可以了。但是如果q != x,即不需要把0全部输出,那样q*(y-w)> b,所以把0剩余提前到1前面,eg:现在有3个0,3个1,我们只需要7个01,按着这种想法,如果输出001110(代码如果没考虑)或者是000111,这样就会多答案或者少答案,所以应该是001101,所以要判断一下余下的,把0调前一个,让正好能够是7个01就可以了,相应的最后的输出0个数要-1。
其次加上特判,a、b、c、d分别为0和部分为0的时候的特判。(自己好菜。。%队友)
#include <cstdio>
#include <cstring>
#include <cmath>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll a,b,c,d,abc;
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
if(a==0&&b==0&&c==0&&d==0)
{
printf("0\n");
return 0;
}
ll x,y,i;
x = (1 + sqrt(1+8*a)) / 2;
if(x*(x-1)/2 != a)
{
printf("impossible\n");
return 0;
}
y = (1 + sqrt(1 + 8*d)) / 2;
if(y*(y-1)/2 != d)
{
printf("impossible\n");
return 0;
}
if(a == 0&&d == 0)
{
if(b == 1&&c == 0)
{
printf("0");
printf("1\n");
}
else if(c == 1&&b==0)
{
printf("1");
printf("0\n");
}
else printf("impossible\n");
return 0;
}
if(b==0&&c==0)
{
if(a==0)
{
for(i=1;i<=y;i++) printf("1");
printf("\n");
}
else if(d==0)
{
for(i=1;i<=x;i++) printf("0");
printf("\n");
}
else printf("impossible\n");
return 0;
}
if(x*y != b+c)
{
printf("impossible\n");
return 0;
}
ll j,q,w;
q = b / y;
w = b % y;
for(i=1;i<=q;i++) printf("0");
for(i=1;i<=y-w;i++) printf("1");
if(q!=x)
printf("0");
for(i=1;i<=w;i++) printf("1");
for(i=1;i<=x-q-1;i++) printf("0");
return 0;
}
Jumbled String (Kattis - jumbledstring)(思维题)的更多相关文章
- codeforces ~ 1009 B Minimum Ternary String(超级恶心的思维题
http://codeforces.com/problemset/problem/1009/B B. Minimum Ternary String time limit per test 1 seco ...
- C. Nice Garland Codeforces Round #535 (Div. 3) 思维题
C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...
- 思维题--code forces round# 551 div.2
思维题--code forces round# 551 div.2 题目 D. Serval and Rooted Tree time limit per test 2 seconds memory ...
- CodeForces - 631C ——(思维题)
Each month Blake gets the report containing main economic indicators of the company "Blake Tech ...
- hdu5325 树的思维题
pid=5325">http://acm.hdu.edu.cn/showproblem.php? pid=5325 Problem Description Bobo has a tre ...
- 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...
- 思维题+set URAL 1718 Rejudge
题目传送门 /* 题意:数据加10组,再删掉第6组数据,问rejudge后最少最多几个作者收到邮件 思维题:当错在6时结果是不一定,错在7时是一定改变,因为会变成6 思路没错,但用结构题排序一直WA, ...
- 思维题 UVA 10881 Piotr's Ants
题目传送门 /* 题意:在坐标轴上一群蚂蚁向左或向右爬,问经过ts后,蚂蚁的位置和状态 思维题:本题的关键1:蚂蚁相撞看作是对穿过去,那么只要判断谁是谁就可以了 关键2:蚂蚁的相对位置不变 关键3:o ...
- 洛谷 P4749 - [CERC2017]Kitchen Knobs(差分转换+dp,思维题)
题面传送门 一道挺有意思的思维题. 首先有一个 obvious 的结论,就是对于每个炉子,要么转到哪里都符合条件,要么存在唯一的最大值.对于转到哪儿都符合条件的炉子我们 duck 不必考虑它,故我们只 ...
随机推荐
- Unity中的Character Controller
Unity中默认提供了一个Character Controller的组件用于实现角色控制,一个3D的游戏物体,可以直接添加.Character Controller会自动模拟出Capsule Coll ...
- Spring基础篇——DI/IOC和AOP原理初识
DI(Dependency Injection),依赖注入,和我们常听说的另一个概念 IOC(控制反转)其实归根结底实现的功能是相同的,只是同样的功能站在不同的角度来阐述罢了.这里博主就不去过多的辨析 ...
- SOAP-1概述
简单对象访问协议 SOAP(简单对象访问协议)一般指简单对象访问协议 简单对象访问协议是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WE ...
- background 背景图片 --css3
background 1.设置背景平铺background-repeat round :图片会进行缩放后平铺space : 图片会进行平铺,中间留下空白空间 注:当滚动行为设为fixed,round和 ...
- win中使用curl上传文件报错
今天晚上复现“WordPress插件Easy WP SMTP反序列化漏洞”时,需要使用curl上传文件,我又用的windows环境,一直出错 curl: (26) couldn't open file ...
- [转]Spring Security Oauth2 认证流程
1.本文介绍的认证流程范围 本文主要对从用户发起获取token的请求(/oauth/token),到请求结束返回token中间经过的几个关键点进行说明. 2.认证会用到的相关请求 注:所有请求均为po ...
- 数据库(sql server 2000)—— 学习笔记1
一.安装 安装程序一般都是四合一的,SQL Server 2000有四个版本:企业版.标准版.个人版.开发版,每个版本的对系统的要求各不相同. SQL Server 2000各版本 对 操作系统的要求 ...
- zabbix-通过自动发现添加主机
当生产环境中需要监控海量的机器的时候,特别是像58.赶集这类同城性质的大网站,或者京东.阿里云这样的造节电商,每次活动.大促都需要添加很多机器来应对海量用户流量,每天都有可能上架新的机器.或者添加新的 ...
- 机器学习 三剑客 之 pandas + numpy
机器学习 什么是机器学习? 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测 机器学习存在的目的和价值领域? 领域: 医疗.航空.教育.物流.电商 等... 目的: 让机器学习 ...
- 浏览器获取当前ip
function findIP(callback) { var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConn ...