【NOIP2012 提高组 day1】

#题目
A【NOIP2012 提高组 day1】Vigenère密码
B【NOIP2012 提高组 day1】国王游戏
C【NOIP2012 提高组 day1】开车旅行

写题解之前先喊一声 awsl 

A. 【NOIP2012 提高组 day1】Vigenère密码

友好的送分题,,,,

很容易发现明文 t 和密文 mm ,密匙 kk 之间的关系:

t=(mm-kk+26)%26+65;

 然后用toupper  toulower转大小写就行了

B. 【NOIP2012 提高组 day1】国王游戏

这题,,,咋这么熟悉,,

不就是小蓝书上的例题么,,,

因为之前看过,所以这次我打算自己把贪心策略证明出来

然后,,翻车,,,

后来检查自己的草稿原来我算当前大臣的金币数时把他自己的左手数字也乘上去了,,,

不过这题真正毒瘤的居然是高精度!!!

改这压位高精真的耗了我一下午,,,(菜到安详

#include<bits/stdc++.h>
#define mod 10000
using namespace std;
int n,l[1005],r[1005],ans[10010],sum[10010],c[10010],top,to1,to2;
long long a,b;
struct node{
	long long l,r;
	long long data;
}pr[1005];
bool cmpy(node x,node y){
	return x.data<y.data;
}
void chu(long long x){
	memset(c,0,sizeof(c));
	int t=0,flag=0;
	to2=0;
	for(int i=top;i>=1;i--){
		t=t*mod+sum[i];
		c[++to2]=t/x;
		if(!c[to2]&&!flag)to2--;
		else flag=1;
		t%=x;
	}
}
bool cmp(){
	if(to2>to1)return 1;
	if(to2<to1)return 0;
	for(int i=1;i<=to1;i++){
		if(c[i]>ans[i])return 1;
		if(c[i]<ans[i])return 0;
	}
	return 0;
}
void cheng(long long x){
	for (int i=1;i<=top;i++)
        sum[i]*=x;
    for (int i=1;i<=top;i++){
        sum[i+1]+=sum[i]/10000;
        sum[i]%=10000;
    }
    if (sum[top+1]!=0)top++;
}
int main(){
//	freopen("game.in","r",stdin);
//	freopen("game.out","w",stdout);
	scanf("%d%lld%lld",&n,&a,&b);
	for(int i=1;i<=n;i++){
		scanf("%lld%lld",&pr[i].l,&pr[i].r);
		pr[i].data=pr[i].l*pr[i].r;
	}
	sort(pr+1,pr+n+1,cmpy);
	sum[1]=a;top=1;
	for(int i=1;i<=n;i++){
		chu(pr[i].r);
		if(cmp()){
			to1=to2;
			memcpy(ans,c,sizeof(c));
		}
		cheng(pr[i].l);
	}
	printf("%d",ans[1]);
	for(int i=2;i<=to1;i++){
		printf("%04d",ans[i]);
	}
	return  0;
} 

C. 【NOIP2012 提高组 day1】开车旅行

又是个老朋友,,,

这道题之前就让我快自闭了,,虽然知道正解是倍增优化但连刚开始的预处理都写不出来,,

最终打了爆搜,出了点小失误结果本来就不多的分又被扣了十分,,,,

因为还在改,所以代码莫得(以后可能也不会有了) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值