URAL 2035

输入x,y,c,  找到任意一对a,b 使得a+b==c&& 0<=a<=x && 0<=b<=y

注意后两个条件,顺序搞错wa几次

 #include<cstdio>
#include<algorithm>
using namespace std;
int main(){
int x,y,c;
while(~scanf("%d%d%d",&x,&y,&c)){
if(x+y<c){
puts("Impossible");
continue;
}
int a,b;
bool s=false;
if(x>y){
s=true;
swap(x,y);
}
if(x>=c){
a=c;
b=;
}
else{
a=x;
b=c-x;
}
if(s) swap(a,b);
printf("%d %d\n",a,b);
}
return ;
}

URAL 2034

无向图,边权都是1,人从s到f,走最短路,最短路可能有多条。强盗在r,强盗要抢劫的距离是从r到人走的路径的最近距离。因为可能有多条最短路,所以要求强盗到达每条最短路到最近距离,输出其中最大的。

做法 预处理出s到每个点到距离,r到每个点到距离。然后从s开始bfs,step记录的是步数,val记录的是这条路径上距离r的最近距离。

 #include<cstdio>
#include<cstring>
#include<queue>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=1e5+;
struct G {
struct E {
int v,next;
} e[M<<];
int le,head[M];
void init() {
le=;
mt(head,-);
}
void add(int u,int v) {
e[le].v=v;
e[le].next=head[u];
head[u]=le++;
}
} g;
bool vis[M];
void bfs(int s,int d[]) {
mt(vis,);
vis[s]=true;
queue<int> q;
while(!q.empty()) q.pop();
q.push(s);
while(!q.empty()) {
int u=q.front();
q.pop();
for(int i=g.head[u]; ~i; i=g.e[i].next) {
int v=g.e[i].v;
if(!vis[v]) {
vis[v]=true;
d[v]=d[u]+;
q.push(v);
}
}
}
}
int sd[M],rd[M],d[M],ans;
struct Q {
int step,val,id;
} now,pre;
queue<Q> q;
void solve(int s,int f) {
ans=;
mt(d,);
now.step=;
now.id=s;
now.val=rd[s];
while(!q.empty()) q.pop();
q.push(now);
while(!q.empty()) {
pre=q.front();
q.pop();
if(pre.id==f) {
ans=max(ans,pre.val);
continue;
}
int u=pre.id;
for(int i=g.head[u]; ~i; i=g.e[i].next) {
int v=g.e[i].v;
now.val=min(pre.val,rd[v]);
now.step=pre.step+;
if(now.step==sd[v]&&d[v]<now.val) {
d[v]=now.val;
now.id=v;
q.push(now);
}
}
}
}
int main() {
int n,m,u,v,s,f,r;
while(~scanf("%d%d",&n,&m)) {
g.init();
while(m--) {
scanf("%d%d",&u,&v);
g.add(u,v);
g.add(v,u);
}
scanf("%d%d%d",&s,&f,&r);
bfs(s,sd);
bfs(r,rd);
solve(s,f);
printf("%d\n",ans);
}
return ;
}

vector存图会慢一些

 #include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=1e5+;
vector<int> g[M];
bool vis[M];
void bfs(int s,int d[]) {
mt(vis,);
vis[s]=true;
queue<int> q;
while(!q.empty()) q.pop();
q.push(s);
while(!q.empty()) {
int u=q.front();
q.pop();
int len=g[u].size();
for(int i=; i<len; i++) {
int v=g[u][i];
if(!vis[v]) {
vis[v]=true;
d[v]=d[u]+;
q.push(v);
}
}
}
}
int sd[M],rd[M],d[M],ans;
struct Q {
int step,val,id;
} now,pre;
queue<Q> q;
void solve(int s,int f) {
ans=;
mt(d,);
now.step=;
now.id=s;
now.val=rd[s];
while(!q.empty()) q.pop();
q.push(now);
while(!q.empty()) {
pre=q.front();
q.pop();
if(pre.id==f) {
ans=max(ans,pre.val);
continue;
}
int u=pre.id;
int len=g[u].size();
for(int i=; i<len; i++) {
int v=g[u][i];
now.val=min(pre.val,rd[v]);
now.step=pre.step+;
if(now.step==sd[v]&&d[v]<now.val) {
d[v]=now.val;
now.id=v;
q.push(now);
}
}
}
}
int main() {
int n,m,u,v,s,f,r;
while(~scanf("%d%d",&n,&m)) {
for(int i=;i<=n;i++) g[i].clear();
while(m--) {
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
}
scanf("%d%d%d",&s,&f,&r);
bfs(s,sd);
bfs(r,rd);
solve(s,f);
printf("%d\n",ans);
}
return ;
}

URAL 2033

手机排名按照出现次数,次数相同按照最低价格

 #include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
string a,b;
map<string,int> num,val;
map<string,int>::iterator it;
struct G{
string a;
int num,val;
friend bool operator <(const G &a,const G &b){
return a.num>b.num||(a.num==b.num&&a.val<b.val);
}
}now;
vector<G> g;
int cost;
int main(){
num.clear();
val.clear();
for(int i=;i<;i++){
cin>>a>>b>>cost;
num[b]++;
if(val[b]){
val[b]=min(val[b],cost);
}
else{
val[b]=cost;
}
}
g.clear();
for(it=num.begin();it!=num.end();it++){
now.a=it->first;
now.num=it->second;
now.val=val[now.a];
g.push_back(now);
}
sort(g.begin(),g.end());
cout<<g[].a<<endl;
return ;
}

URAL 2031

最多4个连续的能满足的 88 89 90 91

 #include<cstdio>
int main(){
int n,ans[]={,,,};
while(~scanf("%d",&n)){
if(n<){
for(int i=;i<n;i++){
printf("%02d ",ans[i]);
}
}
else{
printf("Glupenky Pierre");
}
puts("");
}
return ;
}

URAL 2029

汗诺塔,一开始都在A ,要移动成输入的状态,需要几步,每次都是考虑最下面的一个,然后相当于把n-1个移开,然后把第n个移动到目标处,移动n个需要2^n-1,把最后一个放到目标需要1

 #include<cstdio>
typedef long long LL;
const int M=;
char a[M];
LL p[M];
int main(){
p[]=;
for(int i=;i<M;i++){
p[i]=p[i-]*;
}
int n;
while(~scanf("%d%s",&n,a)){
LL ans=;
int id=;
for(int i=n;i>=;i--){
int his=a[i-]-'A';
if(his==id) continue;
ans+=p[i-];
id=^^^id^his;
}
printf("%lld\n",ans);
}
return ;
}

URAL 2025

n人分k队,不同队之间的人要打一场比赛,问最多能打几场,把人平均分k份打得最多

 #include<cstdio>
int main(){
int t,n,k,ans;
while(~scanf("%d",&t)){
while(t--){
scanf("%d%d",&n,&k);
int x=n/k;
int y=n%k;
ans=y*(x+)*(n-x-)+(k-y)*x*(n-x);
printf("%d\n",ans/);
}
}
return ;
}

URAL 2024

最多存在k种不同字母,问最多几个,有几种方法达到最多

最多几个就是把前k种加起来

方法数就是有几种个数和第k种一样,那么从中选几种

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=1e5+;
char a[M];
int num[];
int C[][];
int main(){
for(int i=;i<;i++){
C[i][i]=;
C[i][]=;
}
for(int i=;i<;i++){
for(int j=;j<i;j++){
C[i][j]=C[i-][j]+C[i-][j-];
}
}
int k;
while(~scanf("%s%d",a,&k)){
mt(num,);
for(int i=;a[i];i++){
num[a[i]-'a']++;
}
sort(num,num+);
int sum=;
int kk=;
for(int i=;i>=;i--){
sum+=num[i];
kk++;
if(kk==k) break;
}
printf("%d ",sum);
if(k==){
puts("");
continue;
}
if(num[-k]==){
puts("");
continue;
}
if(num[-k-]!=num[-k]){
puts("");
continue;
}
int cn=,cm=;
for(int i=;i<;i++){
if(num[i]==num[-k]){
cn++;
}
}
for(int i=-k;i<;i++){
if(num[i]==num[-k]){
cm++;
}
}
printf("%d\n",C[cn][cm]);
}
return ;
}

end

URAL的更多相关文章

  1. 后缀数组 POJ 3974 Palindrome && URAL 1297 Palindrome

    题目链接 题意:求给定的字符串的最长回文子串 分析:做法是构造一个新的字符串是原字符串+反转后的原字符串(这样方便求两边回文的后缀的最长前缀),即newS = S + '$' + revS,枚举回文串 ...

  2. ural 2071. Juice Cocktails

    2071. Juice Cocktails Time limit: 1.0 secondMemory limit: 64 MB Once n Denchiks come to the bar and ...

  3. ural 2073. Log Files

    2073. Log Files Time limit: 1.0 secondMemory limit: 64 MB Nikolay has decided to become the best pro ...

  4. ural 2070. Interesting Numbers

    2070. Interesting Numbers Time limit: 2.0 secondMemory limit: 64 MB Nikolay and Asya investigate int ...

  5. ural 2069. Hard Rock

    2069. Hard Rock Time limit: 1.0 secondMemory limit: 64 MB Ilya is a frontman of the most famous rock ...

  6. ural 2068. Game of Nuts

    2068. Game of Nuts Time limit: 1.0 secondMemory limit: 64 MB The war for Westeros is still in proces ...

  7. ural 2067. Friends and Berries

    2067. Friends and Berries Time limit: 2.0 secondMemory limit: 64 MB There is a group of n children. ...

  8. ural 2066. Simple Expression

    2066. Simple Expression Time limit: 1.0 secondMemory limit: 64 MB You probably know that Alex is a v ...

  9. ural 2065. Different Sums

    2065. Different Sums Time limit: 1.0 secondMemory limit: 64 MB Alex is a very serious mathematician ...

  10. ural 2064. Caterpillars

    2064. Caterpillars Time limit: 3.0 secondMemory limit: 64 MB Young gardener didn’t visit his garden ...

随机推荐

  1. 重拾C,一天一点点_12

    连续两天没写了,今天继续! sizeof 对象 或 sizeof (类型名) 返回一个整型值,等于指定对象或类型占用的存储空间字节数.(返回值是无符号整型值,其类型为size_t,在头文件<st ...

  2. mysql 根据生日计算年龄,并查询在18-25之间的语句

    select id, DATE_FORMAT(birthday,"%Y-%m-%d") birthday, CURDATE() , (year(now())-year(birthd ...

  3. Delphi CxGrid 汇总(4)

    1.     CxGrid汇总功能 ① OptionsView-Footer设置为True,显示页脚   ② CxGrid的Summary选项卡定义要汇总的列和字段名及汇总方式,Footer选项卡定义 ...

  4. SQLite中命令行程序(CLP)的使用

    SQLite CLP是使用和管理SQLite数据库最常用的工具.它在所有平台上的操作方式相同.CLP其实是两个程序,它可以运行在Shell模式下以交互的方式执行查询操作,也可以运行在命令行模式下完成各 ...

  5. Kafka入门学习(一)

    ====常用开源分布式消息系统 *集群:多台机器组成的系统叫集群. *ActiveMQ还是支持JMS的一种消息中间件. *阿里巴巴metaq,rocketmq都有kafka的影子. *kafka的动态 ...

  6. 刀哥多线程Barrier异步gcd-08-barrier_async

    Barrier 异步 主要用于在多个异步操作完成之后,统一对非线程安全的对象进行更新 适合于大规模的 I/O 操作 代码演练 准备工作 @interface ViewController () { / ...

  7. hdu 4613 Points<计算几何>

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4613 题意: 判断一个集合中的点能不能由另一个集合中的点,通过平移,旋转,放缩得到~ 思路:先求出集合中的 ...

  8. Cron表达式说明

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronT ...

  9. flask-cors 实现跨域请求

    安装:pip install -U flask-cors from flask import Flask from flask.ext.cors import CORS app = Flask(__n ...

  10. MVC4.0网站发布和部署到IIS7.0上的方法【转:http://www.th7.cn/Program/net/201403/183756.shtml】

    最近在研究MVC4,使用vs2010,开发的站点在发布和部署到iis7上的过程中遇到了很多问题,现在将解决的过程记录下来,以便日后参考,整个过程主要以截图形式呈现 vs2010的安装和mvc4的安装不 ...