B:

题意:给定一个字符串,然后给定m个数字

对于每个数字ai的含义是,将ai到n-ai+1的字符串给翻转一遍。

要求输出m次翻转之后的字符串。

想法就是判断第i个位置的字符是翻转了奇数次,还是偶数次就可以了,翻转了偶数次代表没翻转

自己的思想的是:将m个数字存储下来,然后排序。对于每个str[i], 1<=i<strlen(str),

使用index=upper_bound(a,a+m,i),upper_bound(a,a+m,i)的返回值是返回数组中第一个比i大的元素迭代器,如果没有,则返回指向最后一个元素后面的迭代器

所以index-a代表在数组a中,比i小的数字有多少个。

所以如果index-a是奇数,那么代表位置i翻转了奇数次,输出str[n-i+1]

如果是偶数,代码位置i翻转了偶数次,输出str[i]

 #include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = + ;
char str[N];
int a[N];
bool vis[N]; int main()
{
int m,i,x,n;
scanf("%s",str+);
scanf("%d",&m);
n = strlen(str+);
for(i=; i<=m; ++i)
scanf("%d",&a[i]);
sort(a+,a+m+);
int nn = n/,*index;
for(i=; i<=nn; ++i)
{ index = upper_bound(a+,a+m+,i);
if((index-a-)%==)
{
printf("%c",str[n-i+]);
vis[n-i+] = true;
}
else
printf("%c",str[i]); }
for(i=nn+; i<=n; ++i)
{
if(vis[i])
printf("%c",str[n-i+]);
else
printf("%c",str[i]);
}
puts("");
}

但是看了别人的代码,只要维护一个前缀和就够了,深感自己还是太年轻

 #include <stdio.h>
#include <string.h>
char str[+];
int a[+];
int main()
{
int i,m,x;
scanf("%s",str+);
scanf("%d",&m);
for(i=; i<m; ++i)
{
scanf("%d",&x);
a[x]++;
}
int n = strlen(str+);
m = n / ;
for(i=; i<=m; ++i)
a[i] += a[i-];//前缀和 for(i=; i<=n; ++i)
{
if(a[i]%==)//小于等于下标i修改了奇数还是偶数次
{
a[n-i+] = ;
printf("%c",str[i]);
}
else
{
printf("%c",str[n-i+]);
a[n-i+] = ;
}
}
puts("");
return ;
}

C:

给n条木棍,4条木棍构成一个矩形,问怎么构造,使得所有矩形的面积和最大,有个规则是木棒的长度能减去1,但仅限一次

矩形的长和宽当然是越大越好,所以我们将木棒从小到大排序,然后从后面开始处理

因为矩阵的长和宽都需要两条,所以我们每次选出两条木板构成成长或者宽

a[i]==a[i-1]||a[i]==a[i-1]+1   那么第i根木棒就能和第i-1根木棒构成长或者宽,然后i-=2

否则第i条木棒无用,i-=1.

 #include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef __int64 LL;
const int N = + ;
int a[N];
int main()
{
int n,i;
scanf("%d",&n);
for(i=; i<n; ++i)
scanf("%d",&a[i]);
sort(a,a+n);
LL t = ,ans = ;
for(i=n-; i>;)
{
if(a[i]==a[i-] || a[i-]==a[i]-)
{
if(t==)
{
t = a[i-];
}
else
{
ans += t * a[i-];
t = ;
}
i-=;
}
else
i-=;
}
printf("%I64d\n",ans);
return ;
}

Codeforces Round#297 div2的更多相关文章

  1. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  2. Codeforces Round #297 (Div. 2)E. Anya and Cubes 折半搜索

    Codeforces Round #297 (Div. 2)E. Anya and Cubes Time Limit: 2 Sec  Memory Limit: 512 MBSubmit: xxx  ...

  3. Codeforces Round #297 (Div. 2)D. Arthur and Walls 暴力搜索

    Codeforces Round #297 (Div. 2)D. Arthur and Walls Time Limit: 2 Sec  Memory Limit: 512 MBSubmit: xxx ...

  4. Codeforces Round #297 (Div. 2)C. Ilya and Sticks 贪心

    Codeforces Round #297 (Div. 2)C. Ilya and Sticks Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xxx  ...

  5. Codeforces Round #297 (Div. 2)B. Pasha and String 前缀和

    Codeforces Round #297 (Div. 2)B. Pasha and String Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xxx ...

  6. Codeforces Round #297 (Div. 2)A. Vitaliy and Pie 水题

    Codeforces Round #297 (Div. 2)A. Vitaliy and Pie Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xxx  ...

  7. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  8. BFS Codeforces Round #297 (Div. 2) D. Arthur and Walls

    题目传送门 /* 题意:问最少替换'*'为'.',使得'.'连通的都是矩形 BFS:搜索想法很奇妙,先把'.'的入队,然后对于每个'.'八个方向寻找 在2*2的方格里,若只有一个是'*',那么它一定要 ...

  9. 贪心 Codeforces Round #297 (Div. 2) C. Ilya and Sticks

    题目传送门 /* 题意:给n个棍子,组成的矩形面积和最大,每根棍子可以-1 贪心:排序后,相邻的进行比较,若可以读入x[p++],然后两两相乘相加就可以了 */ #include <cstdio ...

随机推荐

  1. byte为什么要与上0xff(转)

    无意间翻看之间的代码,发现了一段难以理解的代码. byte[] bs = digest.digest(origin.getBytes(Charset.forName(charsetName))) ; ...

  2. 混淆器:java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器

    java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...

  3. android打包apk时混淆遇到的问题

    android打包apk的时候一般会选择混淆,而在eclipse中常使用的是proguard来混淆.有很多时候引用了第三方包的时候会导致打包不成功,或者打包成功不能运行的情况. 首先看看正常的prog ...

  4. Indy的评价

    已经抛弃了indy,实在是不好,tcp在android下退出报错.我现在改用系统自带的httpclient.推荐RTC RTC带有一个tcp组件,不过处理方式跟indy不同,测试过,在android下 ...

  5. 为VisualSVN Server增加在线修改用户密码的功能

    原文:为VisualSVN Server增加在线修改用户密码的功能 附件下载:点击下载 VisualSVN Server是一个非常不错的SVN Server程序,方便,直观,用户管理也异常方便. 不过 ...

  6. CSU 1506(最小费用最大流)

    传送门:Double Shortest Paths 题意:有两个人:给出路径之间第一个人走所需要的费用和第二个人走所需要的费用(在第一个人所需的 费用上再加上第二次的费用):求两个人一共所需要的最小费 ...

  7. 一致性哈希算法(consistent hashing)样例+測试。

    一个简单的consistent hashing的样例,非常easy理解. 首先有一个设备类,定义了机器名和ip: public class Cache { public String name; pu ...

  8. 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET

    基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...

  9. poj - 1170 - Shopping Offers(减少国家dp)

    意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...

  10. 读取生产环境go语言的最佳实践展示

    近期看了一篇关于go产品开发最佳实践的文章,go-in-procution.作者总结了他们在用go开发过程中的非常多实际经验,我们非常多事实上也用到了.鉴于此,这里就简单的写写读后感,兴许我也争取能将 ...