2016 ECJTU - STL
1、ECJTU-STL重挂 STL
2、总结:学长出的题,本来还想ak的,结果又被虐了。。。
3、标程和数据:http://pan.baidu.com/s/1qYzXY2K
01 水
02 水。题意:将1~n 全排列按字典序输出。
(1)dfs
//
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int N=,MAX=; int vis[],n,a[],tot; void dfs(int m)
{
if(tot==n){
cout<<a[];
F(i,,tot)cout<<" "<<a[i];
cout<<endl;
return ;
}
FF(i,,n){
if(!vis[i]){
vis[i]=;a[tot++]=i;
dfs(i);vis[i]=;tot--;
}
}
} int main()
{
while(~scanf("%d",&n))
{
mes(vis,);tot=;
dfs();
} return ;
}
(2)next_permutation()
#include<bits/stdc++.h>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int N=,MAX=; int main()
{
int n,a[];
while(~scanf("%d",&n)){
a[]=;
cout<<a[];
FF(i,,n) {
a[i]=i;
printf(" %d",i);
}puts("");
while(next_permutation(a+,a++n)) {
cout<<a[];
FF(i,,n) printf(" %d",a[i]);
puts("");
}
} return ;
}
03 好题
1、题意:给你一个集合,n个整数,求出所有子集合的和的异或和。
2、总结:第一次用bitset。当要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值,就应该可用bitset。
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<bitset>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int N=,MAX=; int main()
{
int n,x,sum;
bitset<MAX >A(); //关键就是,用i表示集合的和,A[i]的0,1开关值表示这个集合出现的次数奇偶
while(~scanf("%d",&n)){
A.reset(); A.set();
sum=;
FF(i,,n) {
scanf("%d",&x);
A^=(A<<x); //A上每一个位数i,都表示一个集合的和。移位x,表示在原有的集合上都加上x后的新情况。再与原来的集合异或,就表示加入x后的所有情况
sum+=x;
}
int ans=;
FF(i,,sum) {
if(A[i]) ans^=i; //最后这个位数的值a[i]为1,就表示这个集合和出现次数为奇数,就异或它。它为0,就表示出现次数为偶
}
cout<<ans<<endl;
} return ;
}
04 水,map应用。题意:n个点,求曼哈顿距离|xi-xj|+|yi-yj| 与欧几里得距离sqrt((xi-xj)^2+(yi-yj)^2) 相同的点对数
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<map>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int N=,MAX=; int main()
{
int n;
while(~scanf("%d",&n))
{
map<pair<LL,LL>,int >S;
map<LL ,int >A,B;
LL x,y,sum=;
while(n--){
scanf("%lld%lld",&x,&y);
sum+=(A[x]+B[y]);
sum-=S[make_pair(x,y)];
S[make_pair(x,y)]++;
A[x]++;B[y]++;
}
cout<<sum<<endl;
} return ;
}
05 好但很恶心的题, 双端队列,类似 HDU 5929。题意:模拟栈操作。
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<stack>
#include<vector>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
#define pb push_back
using namespace std;
const int N=,MAX=; int a[N]; int main()
{
int t,n,x,flag,tot1,tot2;
char str[];
deque<int >DQ;
scanf("%d",&t);
FF(cas,,t){
DQ.clear();
flag=;
tot1=((N>>)-),tot2=(N>>);
scanf("%d",&n);
printf("Case #%d:\n",cas);
while(n--){
scanf("%s",str);
if(str[]=='S'){
scanf("%d",&x);
if(!flag){
if(!x)DQ.push_back(tot1);
a[tot1--]=x;
}else {
if(!x)DQ.push_front(tot2);
a[tot2++]=x;
}
} else if(str[]=='O'){
if(!flag){
tot1++;
if(!a[tot1])DQ.pop_back();
}else {
tot2--;
if(!a[tot2])DQ.pop_front();
}
} else if(str[]=='R'){
flag^=;
} else {
scanf("%d",&x);
if(DQ.empty()) puts("Invalid.");
else if(DQ.size()<x) puts("Invalid.");
else {
deque<int >::iterator it;
if(!flag){
it=DQ.end();
cout<<*(it-x)-tot1<<endl;
}else {
it=DQ.begin();
cout<<tot2-*(it+x-)<<endl;
}
}
}
}
} return ;
}
06 好题,优先队列。题意:给出一个字符串,输出第k小的连续子串
//
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
using namespace std; struct S
{
string a; int a_r;
bool operator < (const S &s1) const{
return a>s1.a;
}
}; int main()
{
string str;
int k,i,j;
S m;
priority_queue<S > Q;
/*
while(cin>>str){
scanf("%d",&k);
while(!Q.empty()) Q.pop();
for(i=0;str[i];i++){
for(j=i;str[j];j++){
m.a=str.substr(i,j); //一开始先把所有的连续子串都压入,结果一直超内存,看了标程才发现可以简单地优化一下
Q.push(m);
}
} if(k>Q.size()) k=Q.size();
for(i=1;i<k;i++){
Q.pop();
}
cout<<Q.top().a;
printf("\n");
}
*/ S st;
while(cin>>str){
scanf("%d",&k);
while(!Q.empty()) Q.pop();
for(int i=;str[i];i++) { st.a=str[i]; st.a_r=i; Q.push(st); }
while(!Q.empty()){
st=Q.top(); Q.pop();
//cout<<st.a<<endl;
k--;
if(!k) { cout<<st.a<<endl; break; }
if(str[st.a_r+]){
st.a+=str[st.a_r+]; st.a_r++;
Q.push(st);
} }
if(k)puts("No such line.");
} return ;
}
07 set.lower_bound()函数。 题意:给你两个长度相同的序列A,B。求每一个Ai,在B序列中min(|A[i] - B[j]|) (1<=j<=i)是多少
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<set>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int N=,MAX=; int main()
{
int n;
int a[N],b[N];
set<int >S;
while(~scanf("%d",&n))
{
S.clear();
S.insert(-MAX); S.insert(MAX); //先插入前后端,用lower_bound()时更方便一点
F(i,,n) scanf("%d",&a[i]);
F(i,,n) scanf("%d",&b[i]);
int pos,pre;
set<int >::iterator it;
F(i,,n) {
//scanf("%d",&b); //不能在这输入b[],题目是要全部输入后一起输出
S.insert(b[i]);
it=S.lower_bound(a[i]);
pos=*it; pre=*(--it); //迭代器只能++,--,不能+1,-1
printf("%d\n",min(pos-a[i],a[i]-pre));
}
} return ;
}
2016 ECJTU - STL的更多相关文章
- 【最短路】【STL】CSU 1808 地铁 (2016湖南省第十二届大学生计算机程序设计竞赛)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1808 题目大意: N个点M条无向边(N,M<=105),每条边属于某一条地铁Ci ...
- 2016暑假多校联合---Joint Stacks (STL)
HDU 5818 Problem Description A stack is a data structure in which all insertions and deletions of e ...
- hdu 5738 2016 Multi-University Training Contest 2 Eureka 计数问题(组合数学+STL)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738 题意:从n(n <= 1000)个点(有重点)中选出m(m > 1)个点(选出的点只 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- 数据结构(DataStructure)与算法(Algorithm)、STL应用
catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...
- 解题:CF960G Bandit Blues & FJOI 2016 建筑师
题面1 题面2 两个题推导是一样的,具体实现不一样,所以写一起了,以FJOI 2016 建筑师 的题面为标准 前后在组合意义下一样,现在只考虑前面,可以发现看到的这a个建筑将这一段划分成了a-1个区间 ...
- Solidworks 2016中导出URDF文件
安装SolidWorks to URDF exporter插件 下载SolidWorks to URDF Exporter插件后按照网站上的步骤进行安装(目前该插件已经在Win 7 64位系统+Sol ...
- HDU-5700-贪心/stl
区间交 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- 2016上海站EC-final总结!
2016上海站EC-final总结 本想在知乎上发起一个话题:没有半点准备实力菜得抠脚的选手突然有机会参加final是什么体验.不过感觉这样太高调了,于是..... 以上说的就是事实,毫无准备.毫无状 ...
随机推荐
- JSONP 理解 和 实例 讲解
1.什么是jsonp 1.1 同源策略 浏览器同源策略的限制,XmlHttpRequest只允许请求当前源(相同域名.协议.端口)的资源. -1)jsonp只支持get请求 -2)不受同源策略限制 , ...
- Androidstudio报错UnsupportedClassVersionError
报错信息 Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.m ...
- jq的$()里面 一定要是字符串类型!!!!!!!!!!!!!!!!!!!!!!!!
var s = "[value="+uid+"]"; $(s).attr("checked",'true');
- Idea 开发 web项目
1.经历 很久没有搞 web 项目了,最近一段时间搞过很多次了,但是总是在 mac 上部署失败. 2.方法: 用idea 新建一个模板的 Spring MVC 项目,部署就可以了. 3.参考: htt ...
- 【荐2】Total Commander 7.57 配置选项 个性化设置备份,,,开启时如何自动最大化???(二)
最近安装了下新版的“Total Commander 7.56”,发现它的默认设置是如此的不好用,现把对其个性化设置备份如下(符合大部分用户的操作习惯): 默认打开Total Commander 7.5 ...
- 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项
我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...
- java基础知识(三)java关键字
关键字是电脑语言事先定义的,是特别意义的标识符,又叫保留字.用来表示一种数据类型或程序的结构等,关键字不能用作变量名.类名.方法名或参数.java目前共有50个关键字,其中"const&qu ...
- TouchSlide1.1,手机上的幻灯片
TouchSlide 是纯javascript打造的触屏滑动特效插件 http://pan.baidu.com/s/1bpoWNin 官网:http://www.superslide2.com/Tou ...
- 《sqoop安装和配置》
参考帖子http://blog.csdn.net/jiedushi/article/details/6663177 http://blog.csdn.net/ww1982_0_0_0/article/ ...
- Deep Learning入门视频(上)_一层/两层神经网络code
关于在51CTO上的深度学习入门课程视频(9)中的code进行解释与总结: (1)单层神经网络: #coding:cp936 #建立单层神经网络,训练四个样本, import numpy as np ...