原题地址:http://uoj.ac/contest/53/problem/529
这题说实话我觉得有点玄学。我的方法是从左到右贪心,优先给每个4分配两个1,1不够的时候就再取出来。虽然我也意识到思路有问题,但是一直找不到反例,所以无从下手,最后死磕这道题也没搞出来。这里给出我的错误代码:
#include<cstdio>
#include<iostream>
using namespace std;
int t,cnt;
char a[600006];
int s[600006][7];
int que[600006];
int main()
{
scanf("%d\n",&t);
while (t --)
{
cnt = 0;
string t;
getline(cin,t);
for (int i = 0;i < t.size();i ++)
if (t[i] == '1' || t[i] == '4' || t[i] == '5')
a[++cnt] = t[i];
int tot = 0;
int tot2 = 0;
int tot3 = 0;
int tot4 = 0;
int tot5 = 0;
int tot6 = 0;
int head = 1;
int tail = 0;
for (int i = 1;i <= cnt;i ++)
if (a[i] == '1'