NBUT - 1609
是在一个坐标轴上求一个梯形的面积 可以把这个梯形分成两个同底不同高的两个三角形附代码
#include
#include
int main(){
double x,y,z,t;
while(scanf("%lf %lf %lf %lf",&x,&y,&z,&t)!=EOF){
printf("%.1lf\n",0.5*fabs(x-z)*(fabs(y)+fabs(t)));
}
return 0;
}
NBUT - 1666
#include
#include
#include
using namespace std;
int qpow(int x,int y){
int i,re=1;
for(i=1;i<=y;i++){
re*=x;
}
return re;
}
int main(){
int i,n,sum;
while(cin>>n != EOF){
i=0;
sum=0;
for(;n>0;n/=10,i++){
if(n%10>=1)
sum++;
printf("%d\n",-1+qpow(2,i-1)+qpow(2,sum-1));
}
return 0;
}
然后补题失败 看过大佬题解之后不知道dfs是啥
去学了下(还不太懂)
等看懂再补上吧hhhhhh
CodeForces - 1265A
CodeForces-1265B
题干传送门
给一个含有n个整形元素的数组,对每一个m(1<=m<=n)进行判断是否有一个含m个元素的区间([l,r])能够包含从1到m的所有元素(不要求顺序排列)并以0和1输出
因为如果存在这样的区间[l,l+1,…,r]使区间内恰好
只有前k个数,则区间长度为r-l+1,所以可以在输入时
预处理排列中[1…n]每个数的位置,对数值进行排序。
开两个变量记录包含当前值k(并包含之前值)需要的
最大左右端点l和r,判断r-l+1是否等于k即可。
``
#include
#include
#include
using namespace std;
const int maxn=200007;
int t,n,p[maxn];
int main(){
cin>>t;
int l,r;
while(t--){
scanf("%d",&n);
l=maxn;r=0;
int x;
for(int i=1;i<=n;i++){
scanf("%d",&x);
p[x]=i;//用一个桶把数字的位置标记出来
}
for(int i=1;i<=n;i++){
l=min(l,p[i]);//得到从1到i这i个数中最靠左的数的下标
r=max(r,p[i]);//同理得到最靠右的数的下标
if(r-l+1==i)printf("1");//略有删改
else printf("0");
}
printf("\n");
}
}
CodeForces - 1263A
给你三种颜色的糖块的数量,每天吃两个不同颜色的糖块 得出这三堆糖块最多能吃几天
用最少的那堆糖去平和其他两堆 分两种情况 1 最多的减去第二多的比最少的那堆多 (也就是平和不了 最少的那堆太少了)简单,2最少的那堆比两堆差还多 再分两种情况 剩的是奇数余数减一除二 同理
#include
#include
#include
using namespace std;
int t,r,g,b;
int main(){
cin>>t;
while(t--){
cin>>r>>g>>b;
if(r>g){
int temp=r;r=g;g=temp;
}
if(r>b){
int temp=r;r=b;b=temp;
}
if(g>b){
int temp=g;g=b;b=temp;
}
if(b-g>=r){
cout<
CodeForces - 1264A
在攽发最多的奖牌的情况下(g+s+b),满足以下条件
1.g>0&&s>0&&b>0
2.g3p[g]>p[s]>p[b]>p[wu]不能相等
4.g+s+b<=n/2
5。g+s+b的总数要最多
1.先把g安排好(越少越好)
2.同理,再把s安排好(也是越少越好)
3.最后,把能安排的剩下的所有奖牌都给b
#include
#include
#include
using namespace std;
int t,n;
const int maxn=400005;
int p[maxn];
int main(){
cin>>t;
while(t--){
int i=1,t,x=1,y=2,z=2;
cin>>n;
for(int h=1;h<=n;h++)
cin>>p[h];
t=p[1];
for(i++;x+y+z<=n/2&&p[i]==t;i++)x++,y++,z++;
i=x+y;
t=p[i];
for(i++;x+y+z<=n/2&&p[i]==t;i++)y++;
i=x+y+z;
z=n/2-x-y;
t=p[n/2+1];
for(int h=n/2;x+y+z<=n/2&&p[h]==t;h--)z--;
if(x
NBUT - 1615
NBUT - 1667
POJ -2227