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对象之生
https://yq.aliyun.com/users/1556056716932876?spm=5176.100239.blogrightarea55811.3.6cvyJd
- Spring/Hibernate Improved SQL Logging with log4jdbc---reference
Hibernate provides SQL logging out of the box, but such logging only shows prepared statements, and ...
- MySQL强化
大纲: 数据约束 数据库设计(表设计) 关联查询(多表查询) 存储过程 触发器 mysql权限问题 1 数据约束 1.1 什么是数据约束 对用户操作表的数据进行约束. 1.2 约束种类 1.2.1 默 ...
- 浅析@Deprecated
如果有一个方法你觉得不合适,想要删除,但是别人已经引用了很多次,删除了会对他人的工作产生影响,那该怎么办? 加入@Deprecated注解即可,看代码: @Test public void test1 ...
- Linq扩展方法之Aggregate 对序列应用累加器函数
Linq扩展方法之Aggregate 对序列应用累加器函数; 函数模板:// 函数名:对序列应用累加器函数. // Parameters:参数要求 // source:要聚合的 System.Col ...
- php 的一个pg_fetch_assoc的怪问题
遇到过一种问题 . if($row=pg_fetch_assoc($result)){ while($row=pg_fetch_assoc($result)){ echo '3333'; $koCd ...
- [功能帮助类] C#RandomHelper随机数,随机字符,可限制范围-帮助类 (转载)
点击下载 RandomHelper.rar 主要功能如下 .生成一个指定范围的随机整数,该随机数范围包括最小值,但不包括最大值 .生成一个0.0到1.0的随机小数 .对一个数组进行随机排序 . 一:随 ...
- hibernate - Transaction not successfully started
今天在测试 transaction(使用事务进行管理)的时候, 总报错: Transaction not successfully started 可能有多种原因, 这位哥们总结得很好: Transa ...
- java.sql.Date to java.util.Date
发这篇博文的题目可能无法直接表示内容,但是确实是java.sql.Date和java.util.Date. 今天在使用'net.sf.json.JSONObject'封装json数据的时候,碰到很奇怪 ...
- MyBatis的学习总结三:优化MyBatis配置文件中的配置
一.优化Mybatis配置文件conf.xml中数据库的信息 1.添加properties的配置文件,存放数据库的信息:mysql.properties具体代码: driver=com.mysql.j ...