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. 我们可以只考虑叶子节点数应该 ...
随机推荐
- Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
使用 composer 安装 laravel 时报错, 如下: [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmR ...
- nginx介绍及安装
nginx(Engine x) 静态的www软件 特点: 配置简单 高并发,1-2w,基于异步IO模型(epoll,kqueue) 占用资源少 ...
- SVN状态图标不显示
Windows最多只允许15个覆盖图标,它自己又用了几个,结果给用户用的就11个左右了,如果你安装了其他网盘,那可用的就更少了. 解决方法: 1.在运行里输入regedit进入注册表 2.依次打开HK ...
- 动态树 Link-Cut Trees
动态树 动态树问题, 即要求我们维护一个由若干棵子结点无序的有根树组成的森林. 要求这个数据结构支持对树的分割.合并,对某个点到它的根的路径的某些操作,以及对某个点的子树进行的某些操作. 在这里我们考 ...
- 第四篇:web之前端之jquery
前端之jquery 前端之jquery 本节内容 jquery简介 选择器和筛选器 操作元素 示例 1. jquery简介 1 jquery是什么 jQuery由美国人John Resig创建,至 ...
- 第三篇:web之前端之JavaScript基础
前端之JavaScript基础 前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript ...
- js关闭窗口
window.close() window.open("about:blank","_self").close() window.open("&quo ...
- 根据文件夹的GUid找到该文件夹
Guid guid = Guid.Parse(folderGuID); SPFolder folder = list.Folders[guid].Folder;
- 可扩展多线程异步Socket服务器框架EMTASS 2.0 续
转载自Csdn:http://blog.csdn.net/hulihui/article/details/3158613 (原创文章,转载请注明来源:http://blog.csdn.net/huli ...
- SQL Execute语法.
一,执行字符串: EXECUTE语句可以执行存放SQL语句的字符串变量,或直接执行SQL语句字符串. 语法:EXECUTE({@字符串变量|[N]’SQL语句字符串’}[+...n]) 例子:Decl ...