Samara SAU ACM ICPC 2013-2014 Quarterfinal Qualification Contest
A:
简单题,因为题目中说了不会有数据相同;
#include<cstdio>
#include<algorithm>
#define maxn 200005
using namespace std; struct node
{
int a[];
int id;
bool operator <(const node &t)const
{
return a[]<t.a[];
}
}no[maxn]; int bb[maxn],cnt,n; int main()
{
scanf("%d",&n);
int m2=,m3=;
for(int i=;i<n;i++)
{
no[i].id=i;
scanf("%d%d%d",&no[i].a[],&no[i].a[],&no[i].a[]);
sort(no[i].a,no[i].a+);
if(m2<no[i].a[])m2=no[i].a[];
if(m3<no[i].a[])m3=no[i].a[];
}
sort(no,no+n);
for(int i=;i<n;i++)
{
if(no[i].a[]>=m2&&no[i].a[]>=m3)
bb[cnt++]=no[i].id;
}
printf("%d\n",cnt);
sort(bb,bb+cnt);
for(int i=;i<cnt;i++)printf("%d ",bb[i]+);
return ;
}
B:
刚刚开始用了hash,错了,后来发现可以不用hash,把类似的字符串可以变成相同的字符串;
然后一个map就可以解决!
代码:
#include<cstdio>
#include<map>
#include<cstring>
#include<string>
using namespace std;
int cnt,vis[];
void hash(char *s)
{
cnt=;
memset(vis,,sizeof vis);
int l=strlen(s);
for(int i=;i<l;i++)
{
if(vis[s[i]-'a']==)vis[s[i]-'a']=cnt++;
s[i]=vis[s[i]-'a']+'a'-;
}
} map<string,int>mp;
char s[];
int main()
{
int n;
long long ans=;
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%s",s);
hash(s);
mp[s]++;
}
map<string,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
{
long long k=it->second;
ans+=k*(k-)/;
}
printf("%I64d",ans);
return ;
}
C:
直接累加,看前面有多少的累加和与当前的相差为s;
用map好方便的!
代码:
#include<cstdio>
#include<map>
#define ll long long
using namespace std; map<ll,int>mp; int main()
{
int n;
ll x,s,sum=,ans=;
scanf("%d%I64d",&n,&s);
mp[sum]=;
for(int i=; i<=n; i++)
{
scanf("%I64d",&x);
sum+=x;
if(mp.find(sum-s)!=mp.end())ans+=mp[sum-s];
mp[sum]=mp[sum]+;
}
printf("%I64d",ans);
}
D:
超级easy的题
代码:
#include<cstdio>
#define maxn 200006
using namespace std; char a[maxn],b[maxn],c[maxn]; int main()
{
int n;
scanf("%d",&n);
scanf("%s%s%s",a,b,c);
for(int i=;i<n;i++)
{
if(a[i]==b[i])putchar(a[i]);
else if(b[i]==c[i])putchar(b[i]);
else putchar(c[i]);
}
return ;
}
F:
一个比较简单的二分!
代码:
#include<iostream>
#include<algorithm>
#define maxn 200005
#define ll long long
using namespace std;
ll a[maxn]; int main()
{
int n;
ll l=,r=,p,q;
cin>>n>>p>>q;
for(int i=; i<n; i++)
{
cin>>a[i];
r=max(r,a[i]);
}
if(p==q)
{
ll cnt=r/p;
if(r%p)cnt++;
cout<<cnt<<endl;
return ;
}
while(l<=r)
{
ll mid=(l+r)/;
ll cnt=;
for(int i=; i<n; i++)
{
if(a[i]-mid*q<=)
continue;
cnt+=(a[i]-mid*q)/(p-q);
if((a[i]-mid*q)%(p-q)!=)
cnt++;
}
if(cnt>mid)l=mid+;
else r=mid-;
}
cout<<r+1ll<<endl;
return ;
}
I:
优先队列的应用,没想到啊!
代码:
#include<iostream>
#include<queue>
using namespace std; priority_queue<int>q;
int main()
{
int n,t,d,ans=,cnt=;
cin>>n;
while(n--)
{
cin>>t>>d;
cnt+=d;
q.push(d);
if(cnt>t)
{
cnt-=q.top();
ans++;
q.pop();
}
}
cout<<ans;
}
J:
简单题:
代码:
#include<map>
#include<iostream>
#include<algorithm>
using namespace std;
pair<int,int>a,b=make_pair(-,-); int main()
{
int n,ans=;
cin>>n;
for(int i=;i<n;i++)
{
cin>>a.first>>a.second;
if(a.first>b.first)b=a;
ans=max(ans,b.second);
}
cout<<ans;
return ;
}
L:
利用dp的思想,先从最小的开始,大的反正是最小的的组合;
代码:
#include<iostream>
#include<algorithm>
#include<map>
#include<vector>
using namespace std; vector<int>ve;
map<int,int>m; int n;
int main()
{
cin>>n;
for(int i=; i*i<=n; i++)if(n%i==)
{
ve.push_back(i);
if(i*i!=n)ve.push_back(n/i);
}
sort(ve.begin(),ve.end());
for(int i=; i<ve.size(); i++)
{
m[ve[i]]=ve[i]/+;
for(int j=; j<i; j++)
if(ve[i]%ve[j]==)
m[ve[i]]=min(m[ve[i]],(m[ve[i]/ve[j]])*(m[ve[j]]));
}
int mi=n/+;
for(int i=;i<ve.size();i++)
if(mi>m[ve[i]]*m[n/ve[i]])mi=m[ve[i]]*m[n/ve[i]];
cout<<mi;
}
Samara SAU ACM ICPC 2013-2014 Quarterfinal Qualification Contest的更多相关文章
- 训练报告 (2014-2015) 2014, Samara SAU ACM ICPC Quarterfinal Qualification Contest
Solved A Gym 100488A Yet Another Goat in the Garden B Gym 100488B Impossible to Guess Solved C Gym ...
- 最小割 D. Behind the Wall Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest
题目链接:http://codeforces.com/gym/101149/problem/D 题目大意: 堡垒受到攻击.堡垒是n*m的矩阵,矩阵里刚开始都是平地,然后那个数值表示在当前平地上建一面墙 ...
- 几何+思维 Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest K. Revenge of the Dragon
题目链接:http://codeforces.com/gym/101149/problem/K 题目大意: 给你两个点a,b.一个人在a点,一个人在b点,b点的人要追杀a的点,他的跑步速度是a的两倍. ...
- 最短路+找规律 Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest L. Right Build
题目链接:http://codeforces.com/gym/101149/problem/L 题目大意:有n个点(其实是n+1个点,因为编号是0~n),m条有向边.起点是0,到a和b两个节点,所经过 ...
- 贪心+离散化+线段树上二分。。。 Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest G. Of Zorcs and Axes
题目链接:http://codeforces.com/gym/101149/problem/G 题目大意:给你n对数字,为(a[i], b[i]),给你m对数字,为(w[i], c[i]).给n对数字 ...
- ACM ICPC, Damascus University Collegiate Programming Contest(2018) Solution
A:Martadella Stikes Again 水. #include <bits/stdc++.h> using namespace std; #define ll long lon ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game
G: 要你去才Paul的年龄,Paul的年龄在1~n之间,你每猜一个Paul会告诉你,你猜的这个数和他年龄的gcd,问在最坏情况下最少要猜多少次. 题解: 什么是最坏情况,我们直到如果他的年龄是1的话 ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)E Eve
E: 模拟题,一开始有n个人(有男有女),对于子女来说线粒体DNA是继承母亲的.然后有m个操作(按时间顺序),一种就是给了父亲,母亲的ID,生了一个孩子(编号从n+1开始往下):还有一个就是 -x , ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)K Kingdom Roadmap
K: 给你n个点以及n-1的条边, 问你最少要加多少条边,使得每两个点割去一条联通的边,还可以使的这两个点连通. 有个一个结论,最少添加的边数为(叶子节点数+1)/ 2. 我们可以只考虑叶子节点数应该 ...
随机推荐
- Java的JDBC事务详解(转)
事务的特性: 1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行. 2) 一致性(consistency):事务在完 ...
- UVA10518 - How Many Calls?(矩阵高速幂)
UVA10518 - How Many Calls?(矩阵高速幂) 题目链接 题目大意:给你fibonacci数列怎么求的.然后问你求f(n) = f(n - 1) + f(n - 2)须要多少次调用 ...
- iOS 开发之 ReactiveCocoa(基础)
前言 前段时间在看Masonry这个全新的第三方的布局框架的时候,开始了解了链式编程.后来慢慢的又开始了解函数式编程和响应式编程.在这集中的编程思想下,开始接触和研究了ReactiveCocoa这个框 ...
- dll注册到GAC还是bin - sharepoint程序
通常来说程序在使用dll的时候,会先去GAC中查找是否有存在合适的dll,然后才会到应用程序下的bin目录去查找: 前几天遇到了一个奇葩问题,web项目工程添加了一个第三方dll的引用,然后把这个第三 ...
- 我的Shell + VIM配置
1. 安装powerline-shell 下载powerline-shell # cd /opt/ # git clone https://github.com/milkbikis/powerline ...
- checkbox复选框
改变checkbox状态 所有的jquery版本都可以这样赋值:// $("#cb1").attr("checked","checked") ...
- 前台研发工具Sublime
沟通交流群 [极客Online : 546653637] 欢迎您! 今天一个朋友@我,问有没有好的IDE推荐一下,其实现在有很多文本工具可供选择,像Nodepad++.Editplus之类的,之前我使 ...
- C#DbHelperOleDb,Access数据库帮助类 (转载)
主要功能如下数据访问抽象基础类 主要是访问Access数据库主要实现如下功能 .数据访问基础类(基于OleDb)Access数据库, .得到最大值:是否存在:是否存在(基于OleDbParameter ...
- 深入理解shared pool共享池之library cache系列二
背景 继续上文:深入理解shared pool共享池之library cache系列一,学习library cache数据结构,本文主要学习library cache object(lco)的数据结构 ...
- 数据库(学习整理)----1--如何彻底清除系统中Oracle的痕迹(重装Oracle时)
1.关于重装Oracle数据库: 由于以前装过Oracle数据库,但是版本不怎么样,结果过了试用期之后,我就没有破解和再找合适的版本了!直接使用电脑管家卸载了!可想而知,肯定没清除Oracle痕迹啊! ...