- 伍衍 的博客
DAY17(8)
- @ 2024-8-23 16:36:02
考试错误:无。
思路:
公式题(和昨天一样),公式为 。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
freopen("color.in","r",stdin);
freopen("color.out","w",stdout);
int n,m,k;
cin >> n >> m >> k;
cout << min(n,k)*min(m,k);
}
考试错误:无。
思路:
直接模拟即可。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
freopen("vigenere.in","r",stdin);
freopen("vigenere.out","w",stdout);
string miwen,miyao;
cin >> miyao >> miwen;
int myi=0;
string ans=miwen;
for(int i=0;i<miyao.size();i++){
if(miyao[i]>='A'&&miyao[i]<='Z'){
miyao[i]=miyao[i]-'A'+'a';
}
}
for(int i=0;i<ans.size();i++,myi=(myi+1)%miyao.size()){
for(int j=1;j<=miyao[myi]-'a';j++){
ans[i]-=1;
if(ans[i]<'a'&&ans[i]>'Z'){
ans[i]='z';
}if(ans[i]<'A'){
ans[i]='Z';
}
}
}
cout << ans;
}
考试错误:骗了 分
思路:
用一个双端二维数组存储每艘船的信息,每来一艘船就将超过 小时的船弹出即可。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
unordered_map<int,int> mp;
deque<vector<int>> q;
const int N=1e5+50,h24=86400;
int nal;
signed main(){
freopen("port.in","r",stdin);
freopen("port.out","w",stdout);
int n;
cin >> n;
for(int i=1;i<=n;i++){
int t,k;
cin >> t >> k;
q.push_back({t});
for(int i=1;i<=k;i++){
int x;
cin >> x;
if(!mp[x]) nal++;
mp[x]++;
q.back().push_back(x);
}
while(q.size()>1&&q.back()[0]-q.front()[0]>=h24){
for(int j=1;j<q.front().size();j++){
mp[q.front()[j]]--;
if(!mp[q.front()[j]]) nal--;
}
q.pop_front();
}
cout << nal << endl;
}
}
考试错误:输出 -,骗了 分。
思路:
广搜的模版题,只是要注意加一个标记数组避免重复(再此特地感谢良心商家:钟柯哲哲)。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct P{
int x,y,step;
};
int mp[350][350],vis[350][350];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
queue<P> q;
int bfs(){
q.push(P{0,0,0});
while(q.size()){
P now=q.front();
q.pop();
if(mp[now.x][now.y]==2e9){
return now.step;
}
if(mp[now.x][now.y]<=now.step){
continue;
}
for(int i=0;i<4;i++){
int nx=now.x+dx[i],ny=now.y+dy[i];
if(nx<0||ny<0||nx>301||ny>301) continue;
if(now.step+1>=mp[nx][ny]) continue;
if(vis[nx][ny]) continue;
vis[nx][ny]=1;
q.push(P{nx,ny,now.step+1});
}
}
return -1;
}
signed main(){
freopen("meteor.in","r",stdin);
freopen("meteor.out","w",stdout);
for(int i=0;i<=301;i++){
for(int j=0;j<=301;j++){
mp[i][j]=2e9;
}
}
int m;
cin >> m;
for(int i=1;i<=m;i++){
int x,y,t;
cin >> x >> y >> t;
mp[x][y]=min(mp[x][y],t);
if(y>0) mp[x][y-1]=min(mp[x][y-1],t);
mp[x][y+1]=min(mp[x][y+1],t);
if(x>0) mp[x-1][y]=min(mp[x-1][y],t);
mp[x+1][y]=min(mp[x+1][y],t);
}
if(mp[0][0]==0){
cout << -1;
return 0;
}
cout << bfs();
}