URAL 1827 Indigenous Wars(排序、乱搞)
题意:给一个长度为n数组{a[i]}。有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串。找到后,将区间的答案值设为1。一开始答案值全部为0。最后输出n个答案值。
好久没打题了
算法:排序,乱搞。主要是要考虑到排序的时候,len大的放前边,这样可以break省掉不少时间。最后注意题目要求的输出顺序,是类似于输入顺序的理解。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <queue>
using namespace std; #define ll long long
#define MP make_pair #define inf 0x3f3f3f3f
#define eps 1e-8 #define maxn 100010 int a[maxn];
struct node{
int r,len;
node(int _r,int _len):r(_r),len(_len){}
bool operator < (const node& b) const{
return len < b.len;
}
};
vector<node>v[maxn];
int xx[maxn];
int main(){
int n,m;
while(~scanf("%d",&n)){
for(int i=n-1;i>=0;--i) scanf("%d",a+i), xx[i] = a[i];
sort(xx,xx+n);
int nn = unique(xx,xx+n) - xx;
for(int i=0;i<n;++i) a[i] = lower_bound(xx,xx+nn,a[i]) - xx;
for(int i=0;i<=nn;++i) v[i].clear();
scanf("%d",&m);
for(int i=0;i<m;++i){
int li,ri,leni;
scanf("%d%d%d",&li,&ri,&leni);int lval=li,rval=ri;
if(leni > n) continue;
li = lower_bound(xx,xx+nn,li) - xx;
ri = lower_bound(xx,xx+nn,ri) - xx;
if(li==nn || ri==nn) continue;
if(xx[li]!=lval || xx[ri]!=rval) continue;
v[li].push_back(node(ri,leni));
}
for(int i=0;i<=nn;++i) sort(v[i].begin(),v[i].end());
int add[maxn];
memset(add,0,sizeof(add));
for(int i=0;i<n;++i){
for(int j=v[a[i]].size()-1;j>=0;--j){
int len = v[a[i]][j].len;
int val = v[a[i]][j].r;
if(i+len-1 >= n) continue;
if(a[i+len-1] == val){
add[i]++;
add[i+len]--;
break;
}
}
}
for(int i=1;i<n;++i) add[i] += add[i-1];
for(int i=n-1;i>=0;--i) printf("%c",add[i]>0?'1':'0');
puts("");
}
return 0;
}
URAL 1827 Indigenous Wars(排序、乱搞)的更多相关文章
- BZOJ4484: [Jsoi2015]最小表示(拓扑排序乱搞+bitset)
Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 348 Solved: 172[Submit][Status][Discuss] Descriptio ...
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
黑白图像直方图 发布时间: 2017年7月9日 18:30 最后更新: 2017年7月10日 21:08 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...
- Codeforces 1182D Complete Mirror 树的重心乱搞 / 树的直径 / 拓扑排序
题意:给你一颗树,问这颗树是否存在一个根,使得对于任意两点,如果它们到根的距离相同,那么它们的度必须相等. 思路1:树的重心乱搞 根据样例发现,树的重心可能是答案,所以我们可以先判断一下树的重心可不可 ...
- URAL - 1920 Titan Ruins: the Infinite Power of Magic(乱搞)
搞死人的题目,,, 就是在n*n的方格中找路径长度为L的回路. 开始的思路值适合n为偶数的情况,而忽视了奇数的case,所以wa了一次. 然后找奇数case的策略,代码从70多行变成了100多,然后改 ...
- Ural 1780 Gray Code 乱搞暴力
原题链接:http://acm.timus.ru/problem.aspx?space=1&num=1780 1780. Gray Code Time limit: 0.5 secondMem ...
- Codeforces 732e [贪心][stl乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...
- cdoj Dividing Numbers 乱搞记忆化搜索
//真tm是乱搞 但是(乱搞的)思想很重要 解:大概就是记忆化搜索,但是原数据范围太大,不可能记下所有的情况的答案,于是我们就在记下小范围内的答案,当dfs落入这个记忆范围后,就不进一步搜索,直接返回 ...
- Luogu3732 [HAOI2017] 供给侧改革 【后缀数组】【线段树】【乱搞】
题目分析: 这道题我是乱搞的,因为他说$01$串是随机的. 那么我们可以猜测能够让LCP变大的地方很少.求出后缀数组之后可能让LCP变大的地方就等价于从大到小往height里动态加点同时维护这个点左右 ...
- BZOJ1278: 向量vector(计算几何 随机化乱搞)
题意 题目链接 Sol 讲一下我的乱搞做法.... 首先我们可以按极角排序.然后对\(y\)轴上方/下方的加起来分别求模长取个最大值.. 这样一次是\(O(n)\)的. 我们可以对所有向量每次随机化旋 ...
随机推荐
- PHP函数
2017.1.5 stream_get_contents函数:读取数据流中的剩余数据到字符串 [功能说明] 该函数同file_get_COntents()函数的作用相同,只不过该函数用于读取已经打开的 ...
- 学习Struts2的第一个应用步骤
---恢复内容开始--- 一.在官网 http://struts.apache.org/下载struts-2.3.31-all 1. 打开struts-2.3.31-all,将struts-2.3. ...
- 开启A20线(部分译)
开启A20线 在查看或编写操作系统内核时一定会遇到A20线这个问题.本人对此一直都是似懂非懂的,查了些资料,决定弄明白于是有了这篇文章.其中前一部分是翻译一篇外国博文,但光有这篇文章依旧不能清楚地说明 ...
- Java多线程与并发库高级应用-面试题
第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日 ...
- Beta版本冲刺第六天
Aruba 408 409 410 428 429 431 完成任务: 实现文字导出为图片 改进文字分享 改进存图片功能 修复一些已知bug 立会照片: 燃尽图: commit: coding.net ...
- 微信开发包注意jar版本:
微信java jar的加密key的大小支持 异常java.security.InvalidKeyException:illegal Key Size的解决方案:在官方网站下载JCE无限制权限策略文件( ...
- Android中利用AIDL机制调用远程服务
服务端: //CalculateInterface.aidl package com.itheima.aidl.calculate; interface CalculateInterface { do ...
- iOS - 滑屏方案
参考自:iOS开发- 通过ChildViewCotroller ViewController容器 产品增加新的版面,类似于网易新闻,百度新闻,腾讯新闻等新闻客户端首页多屏幕滑屏切换,找了一些开源代码研 ...
- webstorm卡顿问题
近期随着项目开展,文件逐渐增大,webstrom频繁出现卡顿,而且时有崩溃现象,提示没有足够的内存来执行请求的操作,需要增加Xms设置. 解决办法: 1.找到WebStorm.exe.vmoption ...
- webpack使用的心得
1 . 我们需要使用打包工具,首先第一步就得 执行 npm install进行安装,可是很多时候 加载速度很慢,这个时候我们可以 用淘宝镜像源,参考地址: p.p1 { margin: 0.0px 0 ...