专栏文章
8.26测试总结
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio4gs1r
- 此快照首次捕获于
- 2025/12/02 13:13 3 个月前
- 此快照最后确认于
- 2025/12/02 13:13 3 个月前
测试总结
得分:
应得:
考点:字典序
错误原因:错误使用手写类型的排序
正确思路:
CPPC:所有数相加%n
S:建立一个string类型的数组,进行排序
完整代码:
CPP#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
string s[105];
int n,sum;
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x=0;
cin>>s[i]>>x;
sum+=x;
sum%=n;
}
sort(s+1,s+n+1);
cout<<s[sum+1];
return 0;
}
得分:
应得:
考点:模拟
错误原因:莫名其妙的,也许是没考虑完全?
思路:模拟过程
完整代码:
CPP#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int a,b,c,d,e,f,x;
int sum1,sum2;
bool check(int a,int c,int t){
while(t>(a+c))t-=(a+c);
if(t>a)return 0;
else return 1;
}
signed main()
{
cin>>a>>b>>c>>d>>e>>f>>x;
for(int i=1;i<=x;i++)
{
if(check(a,c,i))
{
sum1+=b;
}
if(check(d,f,i))
{
sum2+=e;
}
}
if(sum1>sum2)
{
cout<<"Takahashi";
}
else if(sum1<sum2)
{
cout<<"Aoki";
}
else
{
cout<<"Draw";
}
return 0;
}
得分:
应得:
考点:(深度优先搜索)
错误原因:没有转变数组类型()
思路:很容易发现没有最少的引爆次数(每种方式都一样),因此只要用(深度优先搜索),模拟一遍即可
完整代码:
CPP#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
struct node{
int x,y;
};
int n,m,sum;
bool a[1005][1005];
queue<node>q;
void dfs(int x,int y){
a[x][y]=0;
for(int i=1;i<=m;i++)if(a[x][i]==1)dfs(x,i);
for(int i=1;i<=n;i++)if(a[i][y]==1)dfs(i,y);
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
char x;
cin>>x;
a[i][j]=bool(x-'0');
if(a[i][j]==1)
{
q.push({i,j});
}
}
}
while(q.size())
{
node f=q.front();
q.pop();
if(a[f.x][f.y]==1)
{
dfs(f.x,f.y);
sum++;
}
}
cout<<sum;
return 0;
}
得分:
应得:
考点:
错误思路:模拟(这是错误的,而且代码还写错了QAQ)
正确思路:使用进行模拟
完整代码:
CPP#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int t;
signed main()
{
cin>>t;
while(t--)
{
int n,cnt=0;
map<int,int>mp;
cin>>n;
while(n--)
{
int x;
cin>>x;
mp[x]++;
}
while(mp.size())
{
cnt++;
int x=0;
for(auto xx : mp)
{
x=xx.first;
break;
}
mp[x]--;
if(mp[x]==0)
{
mp.erase(x);
}
while(1)
{
x++;
if(mp.count(x)==0)break;
mp[x]--;
if(mp[x]==0)mp.erase(x);
}
}
cout<<cnt<<endl;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...