二分
`
include<bits/stdc++.h>
using namespace std;
double a,b,c,d,i;
double left,right,mid;
double f(double x){
return apow(x,3)+bpow(x,2)+cx+d;
}
void find(double left,double right){
if(fabs(left-right)<0.001){
cout << fixed << setprecision(2) << left << " ";
return;
}
else{
double mid=(left+right)/2;
if(f(mid)==0){
cout << fixed << setprecision(2) << mid << " ";
return;
}
if(f(left)f(mid)<0){
find(left,mid);
}
if(f(right)f(mid)<0){
find(mid,right);
}
}
}
int main(){
int mark=0;
cin >> a >> b >> c >> d;
for(i=-100;i<=100&&mark!=3;i++){
if(f(i)==0){
cout << fixed << setprecision(2) << i << " ";
mark++;
continue;
}
if((f(i)f(i+1))<0){
find(i,i+1);
mark++;
}
}
return 0;
}
`
left 和 right 逐渐取二分 mid 判断 mid 与left 的大小关系继续二分
2.回问字符串
`
include<bits/stdc++.h>
using namespace std;
int main() {
string S;
cin >> S;
if (S == string(S.rbegin(), S.rend())) {
cout << S << endl;
}
else {
int n = S.length();
for (int i = 0; i < n / 2; i++) {
if (S[i] != S[n - i - 1]) {
S[i] = min(S[i], S[n - i - 1]);
S[n - i - 1]=S[i];
}
}
cout << S << endl;
}
return 0;
}
3.拓扑排序
include<bits/stdc++.h>
using namespace std;
define int long long
const int N=1e2+10;
int ru[N],n,x;
vector
queue
void topsort() {
while(!q.empty()) {
auto t=q.front();
q.pop();
cout<<t<<" ";
for(auto x:v[t]) {
ru[x]--;
if(ru[x]0) {
q.push(x);
}
}
}
return;
}
void solve() {
cin>>n;
for(int i=1; i<=n; i++) {
while(cin>>x&&x) {
v[i].push_back(x);
ru[x]++;
}
}
for(int i=1; i<=n; i++) {
if(ru[i]0) q.push(i);
}
topsort();
}
signed main() {
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int tt=1;
while(tt--) {
solve();
}
return 0;
}
`
4.在C++输入流较多时
在主程序中加入ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);