codeforces div2#699AB
A
题意
思路
题意十分简单,但我倔强地要用map来写,感谢w大佬给我找出了好多bug,一是s.length()显示长度的函数,我原本写的是sizeof(),结果这是变量字节的大小,哭笑,不看书真的不行,我现在很多东西都是模仿别人过来的,但知其一不知其二者多矣。二是sum判负数的情况,负数对应的也是真,只有0才是假。三是漏了两种情况,分别是横竖坐标只有一个到了,另一个没到,flag=1,还是不满足的情况。
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
#include<map>//别忘了这个头文件
using namespace std;
map<char ,int > mp;//用map来找字符个数
int main()
{
int t,px,py;
string s;
cin>>t;
while(t--)
{
cin>>px>>py>>s;
mp.clear();//清空
char R,L,U,D;
for(int i=0;i<(int)s.length();i++)//sizeof()一般用在memset,表字节个数
mp[s[i]]++;
int sum=mp['R']-mp['L']-px;
int ans=mp['U']-mp['D']-py;
if(sum==0&&ans==0)cout<<"YES"<<endl;
else
{
int flag=0;
if((!sum)||(sum>0&&mp['R']>=sum)||(sum<0&&mp['L']>=-sum))flag++;
if((!ans)||(ans>0&&mp['U']>=ans)||(ans<0&&mp['D']>=-ans))flag++;
if(flag==2)cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
return 0;
}
B
题意
有n座山,每座山有高度h[i],人站在第一个山头上丢石头,如果当前的位置是i,那么如果h[i]>=h[i+1],那么石头会直接飞到下一个山头,反之h[i]+1,飞出去输出-1
思路
直接模拟即可,其实我自己写的没过哭了,后面借鉴大佬的代码才过的,真把我写伤感了这题,一个人倔强地找bug找了一上午,后面以投降告终555,取了别人成熟的点子,是真的题做的太少,见识太少了,我就是那只小青蛙233
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
const int maxn=105;
int a[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
a[0]=105;
int ans;
for(int i=1;i<=k;++i)
{
int t=0;
for(int j=1;j<=n;++j)
{
if(a[j-1]>=a[j])t=j;
else break;
}
if(t==n){
ans=-1;
break;
}
a[t]++;
ans=t;
}
printf("%d\n",ans);
}
return 0;
}