1.Acwing 1205. 买不到的数目
思路:当p、q互质,n、m为非负整数时:最大不能被np+mq表示的数为:(p-1)(q-1)-1
AC代码:
#include<iostream>
using namespace std;
int main()
{
int p,q;
cin>>p>>q;
cout<<p*q-p-q;
return 0;
}
2. Acwing 1211. 蚂蚁感冒
思路:分类讨论 、 两只蚂蚁相穿而过
1.当蚂蚁向左走时:
如果他左边有向右走的蚂蚁,那么左边向右走的蚂蚁和右边向左走的蚂蚁都会感冒
否则 除了他没有蚂蚁会感冒
2.当蚂蚁向右走时:
如果他右边有向左走的蚂蚁,那么右边向左走的蚂蚁和左边向右走的蚂蚁都会感冒
否则 除了他没有蚂蚁会感冒
AC代码:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[52];
int ans=0;
for(int i=1;i<=n;++i) cin>>a[i];
//感冒蚂蚁向左走,他 左边向右走 和 右边向左走的蚂蚁会感冒
if(a[1]<0)
{
int l=0,r=0;
for(int i=1;i<=n;++i)
{
if(a[i]>0&&a[i]<-a[1]) l++;
else if(a[i]<0&&a[i]<a[1]) r++;
}
if(l) ans=l+r;
else ans=0;
}
//感冒蚂蚁向右走,他 右边向左走 和 左边向右走 的蚂蚁会感冒
if(a[1]>0)
{
int l=0,r=0;
for(int i=1;i<=n;++i)
{
if(a[i]>0&&a[i]<a[1]) l++;
else if(a[i]<0&&-a[i]>a[1]) r++;
}
if(r) ans=l+r;
else ans=0;
}
cout<<ans+1<<endl;
return 0;
}
3. 1216. 饮料换购
AC代码:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int ans=n;
while(n>=3)
{
ans+=n/3;
n=n%3+n/3;
}
cout<<ans<<endl;
return 0;
}
4.其他
01背包问题:
摘花生:
Acwing1015. 摘花生_skyang.的博客-CSDN博客
最长上升子序列:
Acwing 1212. 地宫取宝
Acwing 1212. 地宫取宝_skyang.的博客-CSDN博客