Lv.1
死而复生(csp-s过了)
签名:可爱的洛谷 淡退 欢迎来慕白服玩(www.mubai.me)
在 1+1=?请大佬帮帮我 中回复
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <climits>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
#include <ctime>
#include <string>
#include <cstring>
using namespace std;
const int N=405;
struct Edge {
int v,w;
};
vector<Edge> edge[N*N];
int n;
int dis[N*N];
bool vis[N*N];
struct cmp {
bool operator()(int a,int b) {
return dis[a]>dis[b];
}
};
int Dijkstra(int start,int end)
{
priority_queue<int,vector<int>,cmp> dijQue;
memset(dis,-1,sizeof(dis));
memset(vis,0,sizeof(vis));
dijQue.push(start);
dis[start]=0;
while(!dijQue.empty()) {
int u=dijQue.top();
dijQue.pop();
vis[u]=0;
if(u==end)
break;
for(int i=0; i<edge[u].size(); i++) {
int v=edge[u][i].v;
if(dis[v]==-1 || dis[v]>dis[u]+edge[u][i].w) {
dis[v]=dis[u]+edge[u][i].w;
if(!vis[v]) {
vis[v]=true;
dijQue.push(v);
}
}
}
}
return dis[end];
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
Edge Qpush;
Qpush.v=1;
Qpush.w=a;
edge[0].push_back(Qpush);
Qpush.v=2;
Qpush.w=b;
edge[1].push_back(Qpush);
printf("%d",Dijkstra(0,2));
return 0;
}
这是很好的一道模拟题,我们可以使用Dijkstra+STL的优先队列优化来计算也就是说在程序运行时我们把a,b的值都设为一,那么我们可得1+1=2
同样我们也可以上高精
#include<bits/stdc++.h>
using namespace std;
string A,B;
int main(){
int a[2005],b[2005],c[2005],lenA,lenB,lenC;
cin>>A>>B;
lenA=A.length(),lenB=B.length();
for(int i=lenA-1,j=1;i>=0;i--,j++) a[j]=A[i]-'0';
for(int i=lenB-1,j=1;i>=0;i--,j++) b[j]=B[i]-'0';
lenC=max(lenA,lenB);
for(int i=1;i<=lenC;i++){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]=c[i]%10;
}
if(c[lenC+1])lenC++;
for(int i=lenC;i>=1;i--)cout<<c[i];
return 0;
}
把数给拆成个位再相加
2023-09-03T08:50:41 点赞:0
在 这个没完没了的台风 中回复
乐(深居内陆)(喵的热浪)(河南)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
2023-09-09T06:49:07 点赞:0
在 我会C++可以吗 中回复
#include<bits/stdc++.h>
#define amm getchar
using namespace std;
long long t,m,a,b,c,derta,ans1,ans2,arefa,omiga;
int gcd(int a,int b){
if(b==0)return a;
return gcd(b,a%b);
}int work(int a,int b){
}
int main(){
// freopen("uqe.in","r",stdin);
// freopen("uqe.out","w",stdout);
cin>>t>>m;
for(int i=0;i<t;i++){
ans1=0;
ans2=0;
cin>>a>>b>>c;
derta=b*b-4*a*c;//4 4 1 16-8=8
if(derta<0){
cout<<"NO"<<'\n';
continue;
}else if(derta==0){
if((0-b)<(2*a)){
if((0-b)<0&&(a*2)<0){
gcd(a,b);
cout<<abs(0-b)<<"/"<<abs(a*2);
continue;
}else if((0-b)>0&&(a*2)<0){
cout<<"-";
gcd(a,b);
cout<<abs(0-b)<<"/"<<abs(a*2);
continue;
}else if((0-b)<0&&(a*2)>0){
cout<<"-";
gcd(a,b);
cout<<abs(0-b)<<"/"<<abs(a*2);
continue;
}else{
gcd(a,b);
cout<<abs(0-b)<<"/"<<abs(a*2);
continue;
}
}
ans1=(0-b)/2*a;
cout<<ans1<<'\n';
continue;
}else if(derta>0){
arefa=sqrt(derta);
ans1=(0-b+arefa)/(2*a);
ans2=(0-b-arefa)/(2*a);
omiga=max(ans1,ans2);
cout<<omiga<<'\n';
continue;
}
}return 0;
}
我也会
2023-11-05T06:49:50 点赞:0