摘要: 思维题,感叹自己的智商不够啊。思路大概是这样的:1.排在队伍前面的女生是不用换位置的;2.女生在队伍中的顺序是不会变的;3.最后一个女生稳定了则程序结束;4.每个女生都有个初始位置和最终位置。如果一个女生的初始位置减去最终位置>现在的最大值,则最大值更新;否则最大值+1;代码: 1 #include 2 using namespace std; 3 char s; 4 int main() 5 { 6 int r=0,f=1,l=0; 7 while(getchar()=='F'); 8 while((s=getchar())=='F'||s==' 阅读全文
posted @ 2013-10-12 20:09 Yours1103 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 感觉像是一个数位dp,高位的1如果不选的话,前面低位的数都可以选;不然只能选择为1的数;代码: 1 #include 2 #include 3 #define maxn 100005 4 using namespace std; 5 char s[maxn]; 6 int sum[maxn],num[maxn],n,ans,all; 7 8 int main() 9 {10 cin>>n;11 for(int i=1;i>num[i],sum[i]+=sum[i-1]+num[i];13 cin>>s;14 for(int i=n-1;i>=0;i--)15 阅读全文
posted @ 2013-10-12 19:29 Yours1103 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 如果某个数出现的次数大于或等于2次,那么平均分配到两个容器里面;这里利用一个k来使得当出现次数为奇数时候分配得更加均匀;剩下的就平均分配到两个容器里;代码: 1 #include 2 using namespace std; 3 4 int a[220],b[220],f[110],s,k,n; 5 int main() 6 { 7 cin >> n; 8 for(int i=0;i> a[i];11 f[a[i]]++;12 }13 for(int i=0;i=2)15 {16 s+=f[i]-2;17... 阅读全文
posted @ 2013-10-12 18:59 Yours1103 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 题意:要求找到最少次数的交换次数使得两组数都是偶数;很明显答案要么是0,要么是1,或者不管怎么交换都不行(-1);所以: 1 #include 2 #define maxn 105 3 using namespace std; 4 5 int n,x,y; 6 7 int main() 8 { 9 scanf("%d",&n);10 int a=0,b=0,c=0;11 while(n--)12 {13 scanf("%d%d",&x,&y);14 a+=x,b+=y;15 c+=(y%2)!=(x%2);16... 阅读全文
posted @ 2013-10-12 18:45 Yours1103 阅读(132) 评论(0) 推荐(0) 编辑