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. 我们可以只考虑叶子节点数应该 ...
随机推荐
- Swift 析构器deinit
析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标识,类似于构造器用init来标识. 原理: Swift会自动释放不再需要的实例以释放资源.Swift通 ...
- iOS创建界面方法的讨论
以前在入门的时候,找的入门书籍上编写的 demo 都是基于 Storyboards 拖界面的.后来接触公司项目,发现界面都是用纯代码去写复杂的 autoLayout 的.再然后,领导给我发了个 Mas ...
- 学习微信小程序之css14浮动的特性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C#实现动态网站伪静态,使seo更友好
本教程将使用Visual Studio 2013手把手教你实现webform动态页面的伪静态.本教程配套的C#源码工程可通过我的github下载.地址:https://github.com/shell ...
- PLSQL Developer操作
1.设置 1)下载32位Oracle InstantClient 2)将Oracle InstantClient解压到某目录 3)设置环境变量(修改NLS_LANG和TNS_ADMIN环境变量)对 ...
- css中判断IE版本的语句
css中判断IE版本的语句<!--[if gte IE 6]> Only IE 6/+ <![endif]-->: 1. <!--[if !IE]> 除IE外都可识 ...
- Nico Game Studio 3.地图纹理编辑 物体皮肤编辑
完成功能: 1.地图纹理编辑功能. 图层编辑,添加/删除纹理,地图编辑.网格绘制.
- Entity Framework性能优化
AsNonUnicode 执行如下语句,并用SqlProfiler监控其SQL: var list = WMFactory.ReChargeMobile.Queryable().Where(w =&g ...
- C#DbHelperOra,Oracle数据库帮助类 (转载)
主要功能如下数据访问抽象基础类 主要是访问Oracle数据库主要实现如下功能 .数据访问基础类(基于Oracle),主要是用来访问Oracle数据库的. .得到最大值:是否存在:是否存在(基于Orac ...
- virtualbox共享文件夹无访问权限问题解决方法
virtualbox共享文件夹无访问权限问题解决方法 早就困扰了,这次新装虚拟机又碰到了,记录下来. 这篇文章主要介绍了virtualbox共享文件夹无访问权限问题解决方法,造成这个问题的原因是不跟v ...