题目大意
判断函数是否收敛
思路
只要判断系数是否存在0,但是判断单独的一个0比较麻烦,那么可以反过来思考,但凡系数中存在非零数,即视为是发散的,那么存在系数0的函数则被视为是收敛的
代码
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll _; cin>>_; while(_--) { string str; cin>>str; for(ll i=0; i<str.size(); i++) { if(str[i]>='1'&&str[i]=='9') cout<<"NO"<<endl; else cout<<"YES"<<endl; } } }
大模拟
思路
从右到左遍历,数字和字母都是连续的,然而汉字字符仅部分是连续的,所以从左到右遍历的话,很难识别汉字已经结束了
代码
#include <bits/stdc++.h> using namespace std; #define ll long long string str[33]; struct node { ll l,r; }; vector<node> v; void solve() { ll L,R; L=R=0; ll i=100; for(ll ff=7; ff>=2; ff--) { for(; i>=1; i--) { ll dotsum=0; for(ll j=1; j<=30; j++) { if(str[j][i]=='#'&&R==0) R=i; if(R&&str[j][i]=='.') dotsum++; } if(dotsum==30) { node NODE; NODE.l=i+1; NODE.r=R; R=0; dotsum=0; v.push_back(NODE); break; } } } ll flag=1; for(; i>=1; i--) { if(flag==1) { for(ll j=1; j<=30; j++) { if(str[j][i]=='#') { R=i; flag=0; break; } } } } i=1; flag=1; for(; i<=100; i++) { if(flag==1) { for(ll j=1; j<=30; j++) { if(str[j][i]=='#') { L=i; flag=0; break; } } } } node NODE; NODE.l=L; NODE.r=R; v.push_back(NODE); } int main() { ll t; scanf(" %lld",&t); for(ll iii=1;iii<=t;iii++) { v.clear(); for(ll i=1; i<=30; i++) { cin>>str[i]; str[i]='+'+str[i]; } solve(); cout<<"Case #"<<iii<<":"<<endl; for(ll i=v.size()-1; i>=0; i--) { cout<<v[i].l<<' '<<v[i].r<<endl; } } }
留坑待补