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. Git 使用规范流程(转)

    团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是ThoughtBot 的Git使用规范流程.我从中 ...

  2. XMPP入门

    本人原创,很多其它xmpp知识.ios知识.其它分享知识见:我的个人博客 简单介绍: 1.XMPP是可扩展消息与存在协议,主要用于im. 2.他是一种类似于http协议的传输数据协议.过程如:&quo ...

  3. HTML属性

  4. javascripte (三) 改变html图像

    <script> function changeImage(){ element=document.getElementById("myimage") if (elem ...

  5. jquery 设置select的默认值

    <select id="sel" > <option value="s1" > aaaa </option> <opt ...

  6. Dnasp计算LD

    Dnasp计算LD Table of Contents 1 Dnasp 计算LD 1 Dnasp 计算LD Dnasp有很多的功能,现在主要来记录其计算LD的功能. 首先File——然后打开data— ...

  7. sql plus 抢救数据(測)

    有索引 --运行plsql脚本 DECLARE  TYPE RowIDTab ISTABLE OF ROWID INDEXBY BINARY_INTEGER;    CURSORc1 IS selec ...

  8. 纯C语言INI文件解析

    原地址:http://blog.csdn.net/foruok/article/details/17715969 在一个跨平台( Android .Windows.Linux )项目中配置文件用 IN ...

  9. Java线程面试题 Top 50(转)

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...

  10. thinkphp中URL传参数的几种方式

    在thinkphp中,url传参合asp.net中原理类似,下面就单个参数和多个参数传递方式进行一个简单讲解 1.传单个参数 单个参数这种比较简单,例如 想像edit操作里面传递一个id值,如下写法_ ...