Codeforces Beta Round #4 (Div. 2 Only)

时间:2023-03-10 04:12:59
Codeforces Beta Round #4 (Div. 2 Only)

A题,水题,准1Y,第一次CE了。。CF里,CE没有罚时。。

B题,直接模拟。。

#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <queue>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int minz[],maxz[],ans[];
int main()
{
int d,sum,i,temp;
scanf("%d%d",&d,&sum);
temp = ;
for(i = ; i < d; i ++)
{
scanf("%d%d",&minz[i],&maxz[i]);
ans[i] = minz[i];
temp += minz[i];
}
if(temp > sum)
printf("NO\n");
else
{
for(i = ; i < d; i ++)
{
if(temp == sum) break;
if(sum - temp > maxz[i]-minz[i])
{
ans[i] = maxz[i];
temp += maxz[i] - minz[i];
}
else
{
ans[i] += sum - temp;
temp = sum;
}
}
if(temp < sum)
printf("NO\n");
else
{
printf("YES\n");
for(i = ; i < d; i ++)
printf("%d ",ans[i]);
}
}
return ;
}

C题,1Y.不能再水。。

D题,无聊排序DP。2Y,我不能忍。。

#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <queue>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
struct node
{
int w,h,id;
}p[];
int flag[];
int n;
int cmp(node a,node b)
{
if(a.w == b.w)
return a.h > b.h;
else
return a.w > b.w;
}
int dp[];
void dfs(int x)
{
int i;
if(dp[x] == ) return ;
for(i = ;i < x;i ++)
{
if(p[i].w > p[x].w&&p[i].h > p[x].h&&dp[i]+ == dp[x])
{
printf("%d ",p[i].id);
dfs(i);
break;
}
}
}
int main()
{
int i,maxz,j;
scanf("%d",&n);
for(i = ;i <= n;i ++)
{
scanf("%d%d",&p[i].w,&p[i].h);
p[i].id = i;
}
sort(p,p+n+,cmp);
for(i = ;i <= n;i ++)
{
maxz = ;
for(j = ;j < i;j ++)
{
if(p[j].w > p[i].w&&p[j].h > p[i].h)
maxz = max(maxz,dp[j]);
}
dp[i] = maxz + ;
}
for(i = ;i <= n;i ++)
{
if(p[i].id == )
{
printf("%d\n",dp[i]-);
dfs(i);
break;
}
}
return ;
}