Codeforces #685 div2


CF div2 #685

C. String Equality

1
6 2
aabbde
deeeee

我的想法是直接排序然后模拟加

但是像这一组就炸了

问题在于它加的模拟是从当前最小的起步,这里没有办法保证是不是最小的,本来应该让d加到e,中间两个b一起的,但是这里就成了b单飞了。

WA的代码

#include
#include
#include
#include
using namespace std;
#define INF 0x3f3f3f3f
#define max(a,b) (a>b ? a:b)
#define min(a,b) (a'9')last=ch,ch=getchar();
    while(ch>='0'&&ch<='9')ans=ans*10+ch-'0',ch=getchar();
    if(last=='-')ans=-ans;
    return ans;
}
string s;

int n,k;
int a[maxn],b[maxn];
int c[maxn];
void solve()
{
    cin>>n>>k;
    cin>>s;
    for(int i=0;i>s;
    for(int i=0;i0)
        {
            cout<<"No\n";
            return;
        }
        if(a[cur]==b[cur])continue;
        int tmp=b[cur]-a[cur];
        for(int i=1;i

AC的代码

#include
#include
#include
#include
using namespace std;
#define INF 0x3f3f3f3f
#define max(a,b) (a>b ? a:b)
#define min(a,b) (a'9')last=ch,ch=getchar();
    while(ch>='0'&&ch<='9')ans=ans*10+ch-'0',ch=getchar();
    if(last=='-')ans=-ans;
    return ans;
}
string s;

int n,k;
int a[maxn],b[maxn];
int c[maxn];
void solve()
{
    cin>>n>>k;
    cin>>s;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    for(int i=0;i>s;
    for(int i=0;i