注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Yavin(某沙茶的代码库)

Star Wars fan and OIer

 
 
 

日志

 
 

SRM572 Div1  

2013-04-01 18:15:59|  分类: topcoder |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
由于一段时间对于tc的废话题解感到蛋疼,于是就没管了。。。结果就是欠下了一屁股的债。。现在也必须还清了。
其实1000pt的题目相对而言还算比较简单。我太懒了,不想写题解。。。囧
只想说一句话。。。尼玛我以后再碰到循环的问题一定要先看看能不能枚举断点!!!

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;

typedef long long LL;
typedef double ld;

const int NUM=1000;

int hs[NUM],ht[NUM];
int s[NUM],t[NUM];

struct NextAndPrev
{
int getMinimum(int nextCost, int prevCost, string start, string goal)
{
if(start==goal)
return 0;
int i,j;
REP2(i,0,start.size())
{
hs[start[i]-'a']=1;
ht[goal[i]-'a']=1;
}
vector< pair<int,int> > ch;
REP2(i,0,26)
if(hs[i])
{
char q=-1;
REP2(j,0,goal.size())
if(start[j]==i+'a')
{
if(q!=-1 && q!=goal[j]-'a')
return -1;
q=goal[j]-'a';
}
ch.pb(mp(i,q));
}
if(ch.size()==26 && count(ht,ht+26,1)==26)
return -1;
int ans=(int)2e9,ti;
REP2(ti,0,26)
{
int flag=0;
REP2(i,0,ch.size()-1)
if(ch[i].y>ch[i+1].y)
flag=1;
if(!flag)
{
int shift;
REP(shift,-1,2)
{
int answer=0;
REP2(i,0,ch.size())
ch[i].y+=shift*26;
size_t i=0,j;
while(i<ch.size())
{
j=i;
int low=ch[i].x;
int high=ch[i].x;
while(j<ch.size() && ch[j].y==ch[i].y)
{
low=min(ch[j].x,low);
high=max(ch[j].x,high);
++j;
}
if(low<ch[i].y)
answer+=(ch[i].y-low)*nextCost;
if(ch[i].y<high)
answer+=(high-ch[i].y)*prevCost;
i=j;
}
if(answer<ans)
ans=answer;
REP2(i,0,ch.size())
ch[i].y-=shift*26;
}
}
ch[0].x+=26;
rotate(ch.begin(),ch.begin()+1,ch.end());
}
return ans==(int)2e9?-1:ans;
}
};




  评论这张
 
阅读(253)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017