Problem - C - Codeforces
思路
分四种情况,以12为分界点
(紫色部分是最初思路,但不包含所有情况)
只看在a<b c<d 时的图
代码
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int main()
{
IOS
int t;
cin>>t;
while(t--)
{
int a,b,c,d;
int temp=0;
cin>>a>>b>>c>>d;
if(a>b){
int t=a;
a=b;
b=t;
}
if(c>d){
int t=c;
c=d;
d=t;
}
if((a>c && b<d)||(c>a && b>d)||(b<c || d<a)) temp=1;
if(temp==0)
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
Problem - D - Codeforces
思路
看有几个‘1’在‘0’的前面,结果+1(错误思路)
错误原因:
0100 应该分为三部分,但按照错误思路分为两部分
正确思路:
将变化的加一
代码
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int main()
{
IOS
int t;
cin>>t;
while(t--)
{
int k=0;
string a;
cin>>a;
for(int i=0;i<a.length()-1;i++)
{
if(a[i]==a[i+1]) continue;
else {
k=1;
break;
}
}
if(k==0) cout<<"1"<<endl;
else if(k==1)
{
int num1=1,num2=0;
for(int i=0;i<a.length()-1;i++)
{
if(a[i]<a[i+1]) num2=1;
if(a[i]!=a[i+1]) num1++;
}
cout<<num1-num2<<endl;
}
}
return 0;
}