hdu 3183 A Magic Lamp(模拟解法)
来源:互联网 发布:淘宝中老年新款女秋装 编辑:程序博客网 时间:2024/05/16 07:36
思路见代码,递归写法很容易懂。
证明:反证。
/* author:ray007great version:1.0*/#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<cmath>#include<vector>#include<set>#include<map>#include<string>#include<time.h>#include<queue>using namespace std;typedef long long ll;//c++#pragma comment(linker, "/STACK:102400000,102400000")// g++//int size = 256 << 20; // 256MB//char *p = (char*)malloc(size) + size;//__asm__("movl %0, %esp\n" :: "r"(p) );#define sf(a) scanf("%d",&a)#define sfs(a) scanf("%s",a)#define sfI(a) scanf("%I64d",&a)#define pf(a) printf("%d\n",a)#define pfI(a) printf("%I64d\n",a)#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define repd(i,a,b) for(int i=(a);i>=(b);i--)#define rep1(i,a,b) for(int i=(a);i<(b);i++)#define clr(a) memset(a,0,sizeof(a))#define clr1(a) memset(a,-1,sizeof(a))#define pfk printf("fuck\n")/* define *//* clock *///clock_t start, finish;//start = clock();//finish = clock();//double duration = (double)(finish - start)/CLOCKS_PER_SEC;//printf( "%.10f seconds\n", duration );/* clock *//* data *//* data */string str,ans,res1,res2;int k;void del1(int l,int r);void del2(int l,int r);void del2(int l,int r){ if(k==0||res2=="") return; for(int i=l;i<r;i++){ if(res2[i]>res2[i+1]){ res1=""; for(int j=l;j<=r;j++){ if(j==i) continue; res1+=res2[j]; } k--; del1(0,r-1); return ; } } return ;}void del1(int l,int r){ if(k==0||res1=="") return ; for(int i=l;i<r;i++){ if(res1[i]>res1[i+1]){ res2=""; for(int j=l;j<=r;j++){ if(j==i) continue; res2+=res1[j]; } k--; del2(0,r-1); return ; } } return ;}bool isDel[2500];int main(){ while(cin>>str){ cin>>k; res1="";res2=""; for(int i=0;str[i];i++) res1+=str[i]; ans=""; del1(0,str.length()-1); int len1=res1.length(); int len2=res2.length(); if(len1<=len2||(len1&&!len2)){ for(int i=0;i<len1;i++) ans+=res1[i]; } else { for(int i=0;i<len2;i++) ans+=res2[i]; } int len=ans.length(); clr(isDel); for(int i=len-1;i>=0;i--){ if(k==0) break; isDel[i]=true; k--; } int flag=0; for(int i=0;ans[i];i++){ if(isDel[i]) continue; if(ans[i]=='0'&&!flag) continue; flag=1; cout<<ans[i]; } if(!flag) cout<<0; cout<<endl; } return 0;}
- hdu 3183 A Magic Lamp(模拟解法)
- hdu 3183 A Magic Lamp
- hdu 3183 A Magic Lamp
- hdu 3183 A Magic Lamp
- Hdu 3183 A Magic Lamp
- HDU 3183 A Magic Lamp
- HDU 3183 A Magic Lamp
- hdu 3183 A Magic Lamp
- hdu 3183 A Magic Lamp
- HDU 3183 A Magic Lamp
- HDU-3183-A Magic Lamp
- hdu 3183 A Magic Lamp
- HDU-3183-A Magic Lamp
- hdu 3183 A Magic Lamp
- HDU-3183-A Magic Lamp
- HDU 3183 A Magic Lamp
- A Magic Lamp HDU
- A Magic Lamp HDU
- 求最小依赖集java代码
- (Relax ST1.22)POJ 3664 Election Time(两次排序的巧妙应用)
- Unity3D中JS调用DLL不能的曲线救国方法
- 硅谷创业者的启示
- Keil同时打开多个工程
- hdu 3183 A Magic Lamp(模拟解法)
- Setup newest Hadoop 2.x (2.2.0) on Ubuntu
- uva 515 - King(差分约时系统)
- 虚拟键码对照表
- 数组排序--计算最小交换次数
- 会场安排问题
- 数组、指针、指针数组、数组指针
- 阅读cin用法介绍的收获
- Oracle大表快速建立索引