文章目录
1.AcWing 1442. 单词处理器
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,k,v=1,la = 0;
char s[20],a[100][100];
int main(){
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%s",s);
int ls = strlen(s);
if (la + ls > k){
for(int j=1;j<v;j++)
printf("%s%c",a[j],j==v-1?'\n':' ');
strcpy(a[1],s);
la = ls;
v=2;
}else{
strcpy(a[v++],s);
la+=ls;
}
}
for(int j=1;j<v;j++)
printf("%s%c",a[j],j==v-1?'\n':' ');
return 0;
}
2.AcWing 1671. 三角形
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,maxx = 0;
int x[110],y[110];
int find(int p){
int h=0,a=0,area=0;
for(int i=1;i<=n;i++){
if(i == p)
continue;
if(x[i] == x[p])
a = max(a,abs(y[p]-y[i]));
if(y[i] == y[p])
h = max(h,abs(x[p]-x[i]));
area = max(area,a*h);
}
return area;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d %d",&x[i],&y[i]);
for(int i=1;i<=n;i++)
maxx = max(maxx,find(i));
printf("%d\n",maxx);
return 0;
}
3.AcWing 1659. 社交距离 I
AC代码:
#include<iostream>
using namespace std;
const int N=100005;
int n,m,ans;
int a[N];
char s[N];
bool check(int x) {
int p=1-x,cnt=0;//cnt不一定恒等于2,小于2代表方案不合理,大于等于2代表方案合理
for(int i=1; i<=m; i++) {
while(p+x+x<=a[i]) p+=x,cnt++;//如果符合条件,p就往后移动x的距离,牛的头数就加一头
p=a[i];//令p=a[i],p就是前一头牛的位置
}
while(p+x<=n) p+=x,cnt++; //因为存在插入位置没包含最后一个位置n的情况,所以需要继续往后加牛,直到加到不能加位置
return cnt>=2;//如果加入的牛的数量大于等于2,证明我们的方案是可行的,即x是一种答案
}
int main() {
cin>>n;
cin>>s+1;
for(int i=1; i<=n; i++)
if(s[i]=='1') a[++m]=i;
int l=1,r=n;
for(int i=1; i<m; i++) r=min(r,a[i+1]-a[i]);
while(l<=r) {
int mid=l+r>>1;
if(check(mid)) {
ans=mid;
l=mid+1;
} else r=mid-1;
}
cout<<ans;
return 0;
}
//链接:https://www.acwing.com/solution/content/103514/
4.AcWing 1714. 混合牛奶
AC代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int c1,m1,c2,m2,c3,m3,flag=1;
int main(){
scanf("%d %d %d %d %d %d",&c1,&m1,&c2,&m2,&c3,&m3);
for(int i=1;i<=100;i++){
if(flag == 1){
if(m1 + m2 <= c2){
m2 = m1 + m2;
m1 = 0;
}else{
m1 = (m1 + m2) - c2;
m2 = c2;
}
flag = 2;
}else if(flag == 2){
if(m2 + m3 <= c3){
m3 = m2 + m3;
m2 = 0;
}else{
m2 = (m2 + m3) - c3;
m3 = c3;
}
flag = 3;
}else if(flag == 3){
if(m3 + m1 <= c1){
m1 = m1 + m3;
m3 = 0;
}else{
m3 = (m1 + m3) - c1;
m1 = c1;
}
flag = 1;
}
}
printf("%d\n%d\n%d\n",m1,m2,m3);
return 0;
}
5.AcWing 1695. 果壳游戏
AC代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[10101],b[10101],g[10101],d[101];
int main(){
int n,flag,maxx = 0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d %d %d",&a[i],&b[i],&g[i]);
for(int i=1;i<=3;i++){
flag = i;
d[1]=1;
d[2]=2;
d[3]=3;
int sum=0;
for(int j=1;j<=n;j++){
int temp = d[a[j]];
d[a[j]] = d[b[j]];
d[b[j]] = temp;
if(d[g[j]] == flag)
sum++;
}
maxx=max(maxx,sum);
}
printf("%d\n",maxx);
return 0;
}