Codeforces Round#297 div2
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的更多相关文章
- Codeforces Round #539 div2
Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 【前行】◇第3站◇ Codeforces Round #512 Div2
[第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...
- BFS Codeforces Round #297 (Div. 2) D. Arthur and Walls
题目传送门 /* 题意:问最少替换'*'为'.',使得'.'连通的都是矩形 BFS:搜索想法很奇妙,先把'.'的入队,然后对于每个'.'八个方向寻找 在2*2的方格里,若只有一个是'*',那么它一定要 ...
- 贪心 Codeforces Round #297 (Div. 2) C. Ilya and Sticks
题目传送门 /* 题意:给n个棍子,组成的矩形面积和最大,每根棍子可以-1 贪心:排序后,相邻的进行比较,若可以读入x[p++],然后两两相乘相加就可以了 */ #include <cstdio ...
随机推荐
- POJ 1862 & ZOJ 1543 Stripies(贪心 | 优先队列)
题目链接: PKU:http://poj.org/problem?id=1862 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...
- poj3468 A Simple Problem with Integers(线段树模板 功能:区间增减,区间求和)
转载请注明出处:http://blog.csdn.net/u012860063 Description You have N integers, A1, A2, ... , AN. You need ...
- BZOJ 3218(a + b Problem-二分图套值域线段树)
出这题的人是怎么想出来的…… 言归正传,这题是二分图套值域线段树. 首先经过 @Vfleaking的神奇建图后,把图拆成二分图, 不妨利用有向图最小割的性质建图(以前我一直以为最小割和边的方向无关,可 ...
- Jquery+ajax+json+servlet原理和Demo
Jquery+ajax+json+servlet原理和Demo 大致过程: 用户时间点击,触发js,设置$.ajax,开始请求.服务器响应,获取ajax传递的值,然后处理.以JSON格式返回给ajax ...
- Python基础 - 内建函数
什么是内建函数 在Python的手册中,名叫build-in Functions,中文可以称为内建函数. 内建函数就像dos系统的内部命令,他不依赖于外部模块,也就是说: 内建函数就是:安装好Pyth ...
- Android中<meta-data>的使用
在AndroidManifest.xml中.<meta-data>元素能够作为子元素,被包括在<activity>.<application> .<servi ...
- hdu4059 The Boss on Mars
The Boss on Mars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- vim删除^M
1.进入命令模式.vim的命令模式,就是在编辑模式下输入":",光标就会跳到屏幕最后一行,并在那里显示冒号,此时就已经进入命令模式. 命令模式的内容均显示在屏幕的最后一行,按下回车 ...
- win 开机 Microsoft corparation 滚动栏
在easybcd里设置 后保存!
- hdu2102(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 分析:bfs求最短时间到达'P'点,不过本题有好几个trick,我都踩到了,自己还是太嫩了... ...