Educational Codeforces Round 71 (Rated for Div. 2)

Educational Codeforces Round 71 (Rated for Div. 2)

A

# include <bits/stdc++.h>
using namespace std;

int main()
{
int t;
scanf("%d",&t);
while(t--){
int b,p,f,h,c;
int ans=0;
scanf("%d%d%d%d%d",&b,&p,&f,&h,&c);
int res=b/2;
if((p+f)<=res){
ans=p*h+f*c;
}else{
if(h>c){
if(p>=res){
ans=res*h;
}else{
ans=p*h+(res-p)*c;
}
}else{
if(f>=res){
ans=res*c;
}else{
ans=f*c+(res-f)*h;
}
}
}
printf("%d\n",ans);
}

return 0;
}

B

# include <bits/stdc++.h>
using namespace std;

int a[60][60];
int b[60][60];
int x[3000],y[3000];
int main()
{
int n,m;
int ans=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
if(a[i][j]==1&&a[i+1][j]==1&&a[i+1][j+1]==1&&a[i][j+1]==1){
x[ans]=i,y[ans]=j;
b[i][j]=1,b[i+1][j]=1,b[i+1][j+1]=1,b[i][j+1]=1;
ans++;
}
}
}
int flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==b[i][j]) continue;
else{
flag=1;
break;
}
}
if(flag) break;
}
if(flag) printf("-1\n");
else{
printf("%d\n",ans);
if(ans){
for(int i=0;i<ans;i++){
printf("%d %d\n",x[i],y[i]);
}
}

}
return 0;
}

C

# include <bits/stdc++.h>
using namespace std;

typedef long long LL;
int main()
{
int t;
scanf("%d",&t);
while(t--){
LL n,a,b;
LL ans=0;
string s;
scanf("%lld%lld%lld",&n,&a,&b);
cin>>s;
LL zz=0;//柱子数
LL fag=0;
for(int i=0;i<n;i++){
if(s[i]=='1'){
fag++;
}else{
if(fag){
zz+=(fag+1);
fag=0;
}
}
}
zz=zz*2+(n+1-zz);
ans+=n*a;
ans+=zz*b;
LL res=0;
int flag1=0;
for(int i=0;i<n;i++){
if(s[i]=='0'){
res++;
}else{
if(flag1==0){
ans+=2*a;
}else{
if(i==(n-1)) break;
if(res>1){
res--;
LL bbb=res*b;
LL aaa=2*a;
ans+=min(bbb,aaa);
}
}
flag1=1;
res=0;
}
}
printf("%lld\n",ans);
}

return 0;
}

D

# include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int MAXN=3e5+100;
struct Node{
LL a,b;
} node[MAXN];
const LL mod=998244353;
LL amp(Node a,Node b)
{
return a.a<=b.a;
}
LL bmp(Node a,Node b)
{
return a.b<=b.b;
}
int main()
{
LL n;
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld%lld",&node[i].a,&node[i].b);
}

sort(node+1,node+n+1,amp);
LL aa=1,aaa=1,aans=0;
for(int i=2;i<=n;i++){
if(node[i].a==node[i-1].a){
aa++;
aaa=aaa*aa%mod;
}else{
if(aaa>1) aans=(aans+aaa)%mod;
aaa=1,aa=1;
}
}
if(aa>1){
aans=(aans+aaa)%mod;
aaa=1,aa=1;
}
aans=max(1LL,aans);

sort(node+1,node+n+1,bmp);
LL bb=1,bbb=1,bans=0;
for(int i=2;i<=n;i++){
if(node[i].b==node[i-1].b){
bb++;
bbb=bbb*bb%mod;
}else{
if(bbb>1) bans=(bans+bbb)%mod;
bbb=1,bb=1;
}
}
if(bb>1){
bans=(bans+bbb)%mod;
bbb=1,bb=1;
}
bans=max(1LL,bans);

int flag=1;
for(int i=2;i<=n;i++){
if(node[i].a>=node[i-1].a&&node[i].b>=node[i-1].b){
continue;
}else{
flag=0;
break;
}
}
/*
cout<<"@@@@"<<endl;
for(int i=1;i<=n;i++){
cout<<node[i].a<<" "<<node[i].b<<endl;
}
cout<<"@@@@"<<endl;
*/
LL cc=1,ccc=1,cans=0;
if(flag){
for(int i=2;i<=n;i++){
if(node[i].b==node[i-1].b&&node[i].a==node[i-1].a){
cc++;
ccc=ccc*cc%mod;
}else{
if(ccc>1) cans=(cans+ccc)%mod;
ccc=1,cc=1;
}
}
if(cc>1){
cans=(cans+ccc)%mod;
ccc=1,cc=1;
}
cans=max(1LL,cans);
}else cans=0;


LL ans=1;
for(int i=1;i<=n;i++){
ans=ans*i%mod;
}

//cout<<"ans="<<ans<<" aans"<<aans<<" bans"<<bans<<" cans"<<cans<<endl;
ans=(((ans-aans+mod)%mod-bans+mod)%mod+cans)%mod;
ans=max(ans,0LL);
printf("%lld\n",ans);
return 0;
}



posted @ 2022-02-26 22:55  fengzlj  阅读(59)  评论(0)    收藏  举报