- 伍衍 的博客
DAY5(8)
- @ 2024-8-9 19:36:44
作者提醒:本天为大模拟专题,不会给思路,请自行按照题目模拟。
考试错误:一味地去追求,就没有考虑在边界上安装,导致错误。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=150;
struct P{
int x,y,t;
};
P a[N];
signed main(){
freopen("fsz.in","r",stdin);
freopen("fsz.out","w",stdout);
int d,n;
cin >> d >> n;
for(int i=1;i<=n;i++){
cin >> a[i].x >> a[i].y >> a[i].t;
}
int mx=0,op=0;
for(int i=0;i<=128;i++){
for(int j=0;j<=128;j++){
int sum=0;
for(int k=1;k<=n;k++){
if(abs(i-a[k].x)<=d&&abs(j-a[k].y)<=d) sum+=a[k].t;
}
mx=max(mx,sum);
}
}for(int i=0;i<=128;i++){
for(int j=0;j<=128;j++){
int sum=0;
for(int k=1;k<=n;k++){
if(abs(i-a[k].x)<=d&&abs(j-a[k].y)<=d) sum+=a[k].t;
}
if(sum==mx) op++;
}
}
cout << op << " " << mx;
}
考试错误:无。
注:此题为小的病毒歼灭战原题。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1050;
int hh=N/2,tt=hh-1;
int a[N],mm[N];
signed main(){
freopen("fyj.in","r",stdin);
freopen("fyj.out","w",stdout);
int m,n;
cin >> m >> n;
int cnt=0;
for(int i=1;i<=n;i++){
cin >> a[i];
int flag=1;
for(int j=hh;j<=tt;j++){
if(mm[j]==a[i]) flag=0;
}
if(flag){
cnt++;
if(tt-hh+1==m) hh++;
mm[++tt]=a[i];
}
}
cout << cnt;
}
考试错误:在时没考虑两边都是数字的情况,每次无脑的-32,导致有一个测试点不对,只得了分。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
bool pd(char c){
return c>='a'&&c<='z';
}
char pd2(char c){
if(c>='a'&&c<='z') c-=32;
return c;
}
signed main(){
freopen("zfc.in","r",stdin);
freopen("zfc.out","w",stdout);
int p1,p2,p3;
cin >> p1 >> p2 >> p3;
string s;
cin >> s;
s=" "+s+" ";
for(int x=1;x<s.size()-1;x++){
if(s[x]!='-') cout << s[x];
else{
if(isdigit(s[x-1])&&isdigit(s[x+1])&&s[x+1]-s[x-1]>0||pd(s[x-1])&&pd(s[x+1])&&s[x+1]-s[x-1]>0){
if(p3==1){
for(char i=s[x-1]+1;i<=s[x+1]-1;i++){
for(int j=1;j<=p2;j++){
if(p1==2){
cout << pd2(i);
}else if(p1==3){
cout << "*";
}else{
cout << char(i);
}
}
}
}
else if(p3==2){
for(char i=s[x+1]-1;i>=s[x-1]+1;i--){
for(int j=1;j<=p2;j++){
if(p1==2){
cout << pd2(i);
}else if(p1==3){
cout << "*";
}else{
cout << char(i);
}
}
}
}
}else{
cout << s[x];
}
}
}
}
考试错误:没做。
注:本题的模拟有亿点点长
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=550;
struct PII{
int id,t;
};
int ord[N],step[N],last[N],tim[34][7000];
PII a[N][N];
int ans;
signed main(){
freopen("jq.in","r",stdin);
freopen("jq.out","w",stdout);
int m,n;
cin >> m >> n;
for(int i=1;i<=n*m;i++){
cin >> ord[i];
}for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >> a[i][j].id;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >> a[i][j].t;
}
}
for(int i=1;i<=n*m;i++){
int now=ord[i];
int k=++step[now];
int x=a[now][k].id;
int tm=a[now][k].t;
int s=0;
for(int j=last[now]+1;;j++){
if(tim[x][j]==0) s++;
else s=0;
if(s==tm){
for(int q=j-s+1;q<=j;q++){
tim[x][q]=1;
last[now]=q;
ans=max(ans,q);
}
break;
}
}
}
cout << ans;
return 0;
}