寒假每日一题(入门组)week2 完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寒假每日一题(入门组)week2 完结相关的知识,希望对你有一定的参考价值。
目录
756. 蛇形矩阵【模拟】
https://www.acwing.com/problem/content/758/
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int a[N][N],n,m;
int dx[4]=0,1,0,-1;
int dy[4]=1,0,-1,0;
int main(void)
cin>>n>>m;
int k=0,x=0,y=0,d=0;
while(k<n*m)
k++;
a[x][y]=k;
int tempx=x+dx[d],tempy=y+dy[d];
if(tempx<0||tempx>=n||tempy<0||tempy>=m||a[tempx][tempy]) d=(d+1)%4;
x=x+dx[d],y=y+dy[d];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++) cout<<a[i][j]<<" ";
cout<<endl;
return 0;
1113. 红与黑【dfs】
https://www.acwing.com/problem/content/1115/
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+10;
int n,m,ans,st[N][N];
string s[N];
int dx[4]=-1,0,0,1;
int dy[4]=0,-1,1,0;
void dfs(int x,int y)
ans++;
st[x][y]=1;
for(int i=0;i<4;i++)
int tempx=x+dx[i];
int tempy=y+dy[i];
if(tempx<0||tempx>=n) continue;
if(tempy<0||tempy>=m) continue;
if(st[tempx][tempy]) continue;
if(s[tempx][tempy]!='.') continue;
dfs(tempx,tempy);
int main(void)
while(cin>>m>>n,n!=0&&m!=0)
ans=0;
memset(st,0,sizeof st);
for(int i=0;i<n;i++) cin>>s[i];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(!st[i][j]&&s[i][j]=='@') dfs(i,j);
cout<<ans<<endl;
return 0;
1346. 回文平方【模拟】
https://www.acwing.com/problem/content/1348/
#include<bits/stdc++.h>
using namespace std;
int n;
char get(int x)
if(x<10) return '0'+x;
else return 'A'+x-10;
void solve(int x)
string a,b,c;
int temp=x;
while(temp)a+=get(temp%n),temp/=n;
temp=x*x;
while(temp)b+=get(temp%n),temp/=n;
c=b;
reverse(a.begin(),a.end());
reverse(c.begin(),c.end());
if(b==c) cout<<a<<" "<<b<<endl;
int main(void)
cin>>n;
for(int i=1;i<=300;i++) solve(i);
return 0;
680. 剪绳子【二分】
https://www.acwing.com/problem/content/682/
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
double a[N];
int n,m;
bool check(double mid)
int cnt=0;
for(int i=0;i<n;i++) cnt+=a[i]/mid;
return cnt>=m;
int main(void)
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
double l=0,r=1e9;
while(r-l>1e-4)
double mid=(l+r)/2;
if(check(mid)) l=mid;
else r=mid;
printf("%.2lf",l);
return 0;
1227. 分巧克力【二分】
https://www.acwing.com/problem/content/1229/
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],b[N],n,m;
bool check(int mid)
int cnt=0;
for(int i=0;i<n;i++) cnt+=(a[i]/mid)*(b[i]/mid);
return cnt>=m;
int main(void)
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i]>>b[i];
int l=0,r=1e9;
while(l<r)
int mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
cout<<l;
return 0;
422. 校门外的树【差分】
https://www.acwing.com/problem/content/424/
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n,m;
int add(int l,int r,int c)
a[l]+=c;
a[r+1]-=c;
int main(void)
cin>>n>>m;
while(m--)
int l,r; cin>>l>>r;
add(l,r,-1);
int cnt=0,sum=0;
for(int i=0;i<=n;i++)
sum+=a[i];
if(sum>=0) cnt++;//说明还有树
cout<<cnt;
return 0;
429. 奖学金【模拟】
https://www.acwing.com/problem/content/431/
#include<bits/stdc++.h>
using namespace std;
struct nodeint id,a,b,c,sum;;
vector<node>ve;
int n;
bool cmp(node a,node b)
if(a.sum!=b.sum) return a.sum>b.sum;
if(a.a!=b.a) return a.a>b.a;
return a.id<b.id;
int main(void)
cin>>n;
for(int i=1;i<=n;i++)
int a,b,c; cin>>a>>b>>c;
ve.push_back(i,a,b,c,a+b+c);
sort(ve.begin(),ve.end(),cmp);
for(int i=0;i<min(n,5);i++) cout<<ve[i].id<<" "<<ve[i].sum<<endl;
return 0;
以上是关于寒假每日一题(入门组)week2 完结的主要内容,如果未能解决你的问题,请参考以下文章