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. 我们可以只考虑叶子节点数应该 ...
随机推荐
- Linux内核源代码情景分析系列
http://blog.sina.com.cn/s/blog_6b94d5680101vfqv.html Linux内核源代码情景分析---第五章 文件系统 5.1 概述 构成一个操作系统最重要的就 ...
- Windows 7系统下局域网文件共享设置方法
今天给家里增添了一台组装机,小试了一下win7局域网文件共享功能,很爽的说. 记录一下实现方法: 1.关闭防火墙 2.启用共享. 控制面板 – 网络和共享中心 – 更改高级共享设置,将图中的几个选项选 ...
- Motion——shake攻略
1.子类化窗口 如果响应链中没有motionEnded:withEvent:消息的接收者,那么该消息就会被发送给应用程序的window对象.所以需要在window对象上拦截motionEnded:wi ...
- STDMETHOD_,STDMETHOD,__declspec(novtable)和__declspec(selectany)
1.STDMETHOD_(ULONG, AddRef)() PURE; STDMETHOD_:定义一个返回指定类型的虚方法, STDMETHOD:定义一个返回HRESULT类型的虚方法, PURE : ...
- sum() over() 函数的使用
over不能单独使用,要和分析函数:rank(),dense_rank(),row_number(),sum()等一起使用. over函数的参数:over(partition by columnnam ...
- 解锁Scott过程中出现的问题及解决办法
一.conn sys/sys as sysdba; //以DBA的身份登录 出现以下错误 经查 协议适配器错误的问题的原因有三个 监听服务没有起起来.windows平台个一如下操作:开始---程序-- ...
- sublime 2如何进入vim模式
点击菜单栏[Preferences]——[Settings - Defaults] 查找: "ignored_packages": ["Vintage"] 改为 ...
- PHP 发邮件不换行
Content-Type:用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据 MIME:MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件 ...
- DBNull与Null
DBNull与Null的区别在于,DBNull代表该字段在数据库中根本不存在,Null代表该字段在数据库中没有值.
- python基础知识二
对象 python把在程序中用到的任何东西都成为对象. 每一个东西包括数.字符串甚至函数都是对象. 使用变量时只需要给他们赋一个值.不需要声明或定义数据类型. 逻辑行与物理行 物理行是你在编写程序时所 ...