H - Sorting Slides

应该是个二分匹配的模板题的,但我还不会写 = =

其实数据规模很小,就用贪心的方法就水过了(没加vis判冲突wa了几发,从此开始艰难的没有1A 的生活

 #include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000
typedef long long ll;
struct slide{
int x1,x2,y1,y2;
}rec[];
int g[][],d[],ans[],vis[];
int main(){
//freopen("r.in","r",stdin);freopen("r.out","w",stdout);
int n,cs=;
while(scanf("%d",&n) && n){
for(int i=;i<n;i++)scanf("%d%d%d%d",&rec[i].x1,&rec[i].x2,&rec[i].y1,&rec[i].y2);
int x,y;
memset(d,,sizeof d);
memset(g,,sizeof g);
memset(vis,,sizeof vis);
memset(ans,-,sizeof ans);
for(int i=;i<n;i++){
scanf("%d%d",&x,&y);
for(int j=;j<n;j++)if(x<rec[j].x2&&x>rec[j].x1&&y<rec[j].y2&&y>rec[j].y1){
g[i][j+n]=;d[i]++;
d[j+n]++;
}
}
int flag=;
while(flag){
int i,j,i0,j0;
flag=;
for(i=;i<n;i++)if(!vis[i]&&d[i]==)
{flag=;break;}
if(flag){
for(j=n;j<*n;j++)if(!vis[j]&&g[i][j])break;
i0=i,j0=j;
ans[j0-n]=i0;
vis[i0]=vis[j0]=;
g[i0][j0]=;d[i0]--;d[j0]--;
for(i=;i<n;i++)if(g[i][j0])d[i]--,g[i][j0]=;
continue;
}
for(j=n;j<*n;j++)if(!vis[j]&&d[j]==)
{flag=;break;}
if(flag){
for(i=;i<n;i++)if(!vis[i]&&g[i][j])break;
i0=i;j0=j;
ans[j0-n]=i0;
vis[i0]=vis[j0]=;
g[i0][j0]=;d[i0]--;d[j0]--;
for(j=n;j<*n;j++)if(g[i0][j])d[j]--,g[i0][j]=;
continue;
}
}
int cnt=;
printf("Heap %d\n",cs++);
for(int i=;i<n;i++)if(ans[i]>=)
{if(cnt)printf(" ");printf("(%c,%d)",'A'+i,ans[i]+);cnt++;}
if(!cnt)printf("none");
printf("\n\n");
}
return ;
}

A - Triangle Encapsulation

水题,暴搜の

 #include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000 typedef long long ll;
struct point {
int x,y;
struct point operator -(const struct point b){
struct point c;
c.x=x-b.x;c.y=y-b.y;
return c;
}
}p[];
int cmp(struct point a,struct point b){
if(a.y-b.y)return a.y>b.y;
return a.x<b.x;
}
int g[][];
int cross(struct point a,struct point b){
return a.x*b.y-a.y*b.x;
}
int main(){
//freopen("r.in","r",stdin);freopen("r.out","w",stdout);
printf("Program 4 by team X\n");
while(scanf("%d%d",&p[].x,&p[].y)!=EOF){
for(int i=;i<;i++)scanf("%d%d",&p[i].x,&p[i].y);
struct point pi;
memset(g,,sizeof g);
int xmin=,ymin=,ymax=,xx[]={};
for(pi.x=-;pi.x<=;pi.x++)
for(pi.y=-;pi.y<=;pi.y++){
int c1=,c2=;
for(int i=;i<;i++){
if(cross(pi-p[i],pi-p[(i+)%])<)c1++;
if(cross(pi-p[i],pi-p[(i+)%])>)c2++;
}
if(c1==||c2==){
g[pi.x+][pi.y+]=;
xmin=min(xmin,pi.x+);
xx[pi.y+]=max(xx[pi.y+],pi.x+);
ymin=min(ymin,pi.y+);
ymax=max(ymax,pi.y+);
}
}
int x,y;
for(y=ymax;y>=ymin;y--){
for(x=xmin;x<=xx[y];x++){
if(x>xmin)printf(" ");
if(g[x][y])printf("(%2d,%3d)",x-,y-);
else printf(" ");
}
printf("\n");
}
printf("\n");
}
printf("End of program 4 by team X\n");
return ;
}

G - Reflections

几何题。解析算错很多次,其实就是算交点和关于直线对称。用向量点积和叉积不容易错。

 #include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <utility> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000
#define eps 1e-6 typedef long long ll;
int n,ans[],cur;
struct point{
double x,y;
};
struct circle{
double x,y,r;
}cir[];
struct line{
double x0,y0,dx,dy;
}ori;
int sgn(double x){
if(x>eps)return ;
if(x<-eps)return -;
return ;
}
pair <double,int> inter(struct line now){
double a,b,c,del,t1,t2,t=-;
int use=-;
for(int i=;i<=n;i++){
a=now.dx*now.dx+now.dy*now.dy;
b=now.dx*(now.x0-cir[i].x)+now.dy*(now.y0-cir[i].y);
c=(now.x0-cir[i].x)*(now.x0-cir[i].x)+(now.y0-cir[i].y)*(now.y0-cir[i].y)-cir[i].r*cir[i].r;
del=b*b-a*c;
if(sgn(del)<=)continue;
t1=(-b-sqrt(del))/a;
t2=(-b+sqrt(del))/a;
if(sgn(t1)>){
if(t==-||t>t1)t=t1,use=i;
}
else if(sgn(t2)>){
if(t==-||t>t2)t=t2,use=i;
}
}
return make_pair(t,use);
}
void work(struct line now){
if(cur>)return;
double t=inter(now).first;
if(t<=)return;
int i0=ans[cur++]=inter(now).second; /* 求对称射线 */
double x,y,xx,yy;
x=now.x0+t*now.dx;
y=now.y0+t*now.dy;
if(sgn(now.dy*(x-cir[i0].x)-now.dx*(y-cir[i0].y))==){
now.x0=x;now.y0=y;
now.dx=-now.dx;now.dy=-now.dy;
work(now);
return;
}
xx=-((x-cir[i0].x)*now.dx+(y-cir[i0].y)*now.dy)/cir[i0].r;
yy=((x-cir[i0].x)*now.dy-(y-cir[i0].y)*now.dx)/cir[i0].r;
now.x0=x;now.y0=y;
now.dx=(xx*(x-cir[i0].x)-yy*(y-cir[i0].y))/cir[i0].r;
now.dy=(xx*(y-cir[i0].y)+yy*(x-cir[i0].x))/cir[i0].r;
work(now);
} int main(){
//freopen("r.in","r",stdin);freopen("r.out","w",stdout);
int cs=;
while(scanf("%d",&n) && n){
int i;
for(i=;i<=n;i++)scanf("%lf%lf%lf",&cir[i].x,&cir[i].y,&cir[i].r);
scanf("%lf%lf%lf%lf",&ori.x0,&ori.y0,&ori.dx,&ori.dy);
cur=;
work(ori);
printf("Scene %d\n",cs++);
for(i=;i<cur&&i<;i++)printf("%d ",ans[i]);
if(cur>)printf("...\n\n");
else printf("inf\n\n");
}
return ;
}

C - Robbery

一开始有点不敢写,想了一下其实每个时间点只和前后两个点有关,所以正着跑一次再倒着check一遍就确定了。

 #include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000 typedef long long ll;
int w,h,T,n;
int g[][][];
struct message{
int t,l,u,r,d;
}mes[];
struct answer{
int t,x,y;
}ans[];
int cmp(struct message a,struct message b){
return a.t<b.t;
}
void direct(){
int k=;
memset(g,-,sizeof g);
memset(g[],,sizeof g[]);
for(int t=;t<=T;t++){
//to expand reachable area.
if(t>)
for(int i=;i<=h;i++)
for(int j=;j<=w;j++)if(!g[t-][i][j]){
g[t][i][j]=;
if(i>)g[t][i-][j]=;
if(j>)g[t][i][j-]=;
if(i<h)g[t][i+][j]=;
if(j<w)g[t][i][j+]=;
}
//to receive the messge.
for(;k<n&&mes[k].t==t;k++){
for(int i=mes[k].u;i<=mes[k].d;i++)
for(int j=mes[k].l;j<=mes[k].r;j++)
g[t][i][j]=-;
} }
}
void inverse(){
int k=n-;
for(int t=T-;t>;t--){
for(int i=;i<=h;i++)
for(int j=;j<=w;j++)if(!g[t][i][j]){
if(!g[t+][i][j])continue;
if(i>&&!g[t+][i-][j])continue;
if(j>&&!g[t+][i][j-])continue;
if(i<h&&!g[t+][i+][j])continue;
if(j<w&&!g[t+][i][j+])continue;
g[t][i][j]=-;
}
}
}
int main(){
//freopen("r.in","r",stdin);freopen("r.out","w",stdout);
int cs=;
while(scanf("%d%d%d",&w,&h,&T) && w){
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d%d%d%d",&mes[i].t,&mes[i].l,&mes[i].u,&mes[i].r,&mes[i].d);
sort(mes,mes+n,cmp);
direct();
inverse();
printf("Robbery #%d:\n",cs++);
int res=,flag=;
for(int t=;t<=T;t++){
int cn=,x,y;
for(int i=;i<=h;i++)
for(int j=;j<=w;j++)if(!g[t][i][j])x=i,y=j,cn++;
if(!cn){flag=;break;}
if(cn==)ans[res].t=t,ans[res].x=x,ans[res++].y=y;
}
if(!flag)printf("The robber has escaped.\n\n");
else{
if(!res)printf("Nothing known.\n\n");
else{
for(int i=;i<res;i++)printf("Time step %d: The robber has been at %d,%d.\n",ans[i].t,ans[i].y,ans[i].x);
printf("\n");
}
}
}
return ;
}

E - Triangle War

状压dp,极大极小算法。

另外有个坑点是每次把能取的三角形位置都取完不一定是最优策略。。

 #include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000 typedef long long ll;
int edge[][],tri[]={,,,,,,,,};
int dp[<<];
int check(int sta){
int ans=;
for(int i=;i<;i++)if((sta&tri[i])==tri[i])ans++;
return ans;
}
void dfs(){
int s=(<<)-;
dp[s]=;
for(s=s-;s>=;s--){
int ori=check(s),cn,maxdp=-;
for(int i=;i<;i++)if(!((<<i)&s)){
int to=(<<i)|s;
int temp=check(to)-ori;
if(temp)temp+=dp[to];
else temp-=dp[to];
maxdp=max(maxdp,temp);
}
dp[s]=maxdp;
}
}
int main(){
//freopen("r.in","r",stdin);freopen("r.out","w",stdout);
int t,gm,G;
edge[][]=;edge[][]=<<;
edge[][]=<<;edge[][]=<<;edge[][]=<<;
edge[][]=<<;edge[][]=<<;
edge[][]=<<;edge[][]=<<;edge[][]=<<;
edge[][]=<<;edge[][]=<<;edge[][]=<<;
edge[][]=<<;edge[][]=<<;
edge[][]=<<;edge[][]=<<;edge[][]=<<;
dfs();
scanf("%d",&t);
while(t--){
scanf("%d",&G);
for(gm=;gm<=G;gm++){
int m,sta=,u,v,turn=;
int a[]={};
scanf("%d",&m);
for(int i=;i<=m;i++){
scanf("%d%d",&u,&v);
int ori=check(sta);
sta+=edge[u][v];
ori=check(sta)-ori;
a[turn]+=ori;
if(!ori)turn=!turn;
}
printf("Game %d: ",gm);
a[turn]+=dp[sta];
if(a[]>a[])printf("A wins.\n");
else printf("B wins.\n");
}
if(t)printf("\n");
}
return ;
}

B - Symbolic Derivation

可以用string数组代替栈来做模拟

 #include <stdio.h>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <stack>
#include <cctype>
#include <string> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 2000000000 typedef long long ll;
char sgn[];
string dev[];
string oii[];
string add(string a,string b,char op){
if(op=='+'){
string temp=a;
if(b[]!='+'&&b[]!='-')temp+="+";
temp+=b;
return temp;
}else{
string temp=a;
if(b[]=='+')b.replace(,,"-");
else if(b[]=='-')b.replace(,,"+");
else temp+="-";
temp+=b;
return temp;
}
}
void multi(int &po,int &pd){
string o2=oii[--po];
string o1=oii[--po];
string d2=dev[--pd];
string d1=dev[--pd];
string t1="(";
t1+=d1;t1+="*";t1+=o2;
string t2;
t2+=o1;t2+="*";t2+=d2;t2+=")";
dev[pd++]=add(t1,t2,'+');
o1+="*";o1+=o2;
oii[po++]=o1;
}
void divi(int &po,int &pd){
string o2=oii[--po];
string o1=oii[--po];
string d2=dev[--pd];
string d1=dev[--pd];
string t1="(";
t1+=d1;t1+="*";t1+=o2;
string t2;
t2+=o1;t2+="*";t2+=d2;t2+=")/";
string temp=add(t1,t2,'-');
temp+=o2;temp+="^2";
dev[pd++]=temp;
o1+="/";o1+=o2;
oii[po++]=o1;
}
void loge(int &po,int &pd){
string o=oii[--po];
string d=dev[--pd];
string temp="ln";
temp+=o;
oii[po++]=temp;
temp="";
temp+=d;temp+="/";
temp+=o;
dev[pd++]=temp;
}
string derivation(char *s,int n){
int sg=,dv=,oi=;
bool beg=;
for(int i=;i<n;i++){
if(!beg&&(s[i]=='+'||s[i]=='-')){
char *p=s+i;
if(s[++i]!='x'){
while(isdigit(s[i])||s[i]=='.')i++;
string temp=string(p,s+i);
oii[oi++]=temp;
dev[dv++]="";
}
else{
string temp=s[i]=='-'?"-x":"+x";
oii[oi++]=temp;
temp=s[i]=='-'?"-1":"+1";
dev[dv++]=temp;
++i;
}
}
beg=;
if(isdigit(s[i])){
char *p=s+i;
while(isdigit(s[i])||s[i]=='.')i++;
string temp=string(p,s+i);
oii[oi++]=temp;
dev[dv++]="";
}
if(s[i]=='x'){
oii[oi++]="x";
dev[dv++]="";
++i;
}
if(s[i]=='l'){
i++;
sgn[sg++]='l';
}
else if(s[i]=='*'||s[i]=='/'){
if(sg&&(sgn[sg-]=='*'||sgn[sg-]=='/')){
char u=sgn[--sg];
if(u=='*'){
multi(oi,dv);
}
if(u=='/'){
divi(oi,dv);
}
}
sgn[sg++]=s[i];
}
else if(s[i]=='+'||s[i]=='-'){
if(sg&&sgn[sg-]!='('){
char u=sgn[--sg];
if(u=='*'){
multi(oi,dv);
}
if(u=='/'){
divi(oi,dv);
}
if(u=='+'||u=='-'){
string o1=oii[--oi];
oii[oi-]=add(oii[oi-],o1,u);
string d1=dev[--dv];
dev[dv-]=add(dev[dv-],d1,u);
}
}
sgn[sg++]=s[i];
}
else if(s[i]=='(')sgn[sg++]=s[i],beg=;
else if(s[i]==')'){
char u;
while(sg&&sgn[sg-]!='('){
u=sgn[--sg];
if(u=='*'){
multi(oi,dv);
}
if(u=='/'){
divi(oi,dv);
}
if(u=='+'||u=='-'){
string o1=oii[--oi];
oii[oi-]=add(oii[oi-],o1,u);
string d1=dev[--dv];
dev[dv-]=add(dev[dv-],d1,u);
}
}
//add brackets.
if(u!='*'&&u!='/'){
string temp="(";
temp+=dev[--dv];
temp+=")";
dev[dv++]=temp;
temp="(";
temp+=oii[--oi];
temp+=")";
oii[oi++]=temp;
}
sg--;
if(sgn[sg-]=='l'){
loge(oi,dv);
sg--;
}
}
}
char u;
while(sg){
u=sgn[--sg];
if(u=='*'){
multi(oi,dv);
}
if(u=='/'){
divi(oi,dv);
}
if(u=='+'||u=='-'){
string o1=oii[--oi];
oii[oi-]=add(oii[oi-],o1,u);
string d1=dev[--dv];
dev[dv-]=add(dev[dv-],d1,u);
}
}
return dev[dv-];
} char buf[];
int main(){
//freopen("r.in","r",stdin);freopen("r.out","w",stdout);
while(~scanf("%s",buf)){
string ans=derivation(buf,strlen(buf));
cout << ans << endl;
}
return ;
}

F - Metal Cutting

半平面交,中间思考人生把排序写挫了好久才看出来。。

 #include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 2000000000
#define eps 1e-6 typedef long long ll;
int dcmp(double x){
if(x>eps)return ;
if(x<-eps)return -;
return ;
}
struct point{
double x,y;
point(){}
point(double x,double y):x(x),y(y){}
point operator - (point a){return point(x-a.x,y-a.y);}
point operator + (point a){return point(x+a.x,y+a.y);}
point operator * (double c){return point(x*c,y*c);}
}po[],fin[];
struct line{
point p,v;
double ang;
line(){}
line(point p,point v):p(p),v(v){ang=atan2(v.y,v.x);}
}li[];
double cross(point a,point b){
return a.x*b.y-a.y*b.x;
}
double dot(point a,point b){
return a.x*b.x+a.y*b.y;
}
double length(point a){
return sqrt(dot(a,a));
}
bool Onleft(line L,point p){
return cross(L.v,p-L.p)>;
}
bool cmp_l(line a,line b){
return a.ang<b.ang;
}
bool cmp(point a,point b){
if(dcmp(a.x-b.x))return a.x<b.x;
return a.y<b.y;
}
point GetIntersection(line a,line b){
point u=a.p-b.p;
double t=cross(b.v,u)/cross(a.v,b.v);
return a.p+a.v*t;
}
point deq[];
line q[];
int HalfPlane(line *L,int n,point *poly){
sort(L,L+n,cmp_l); int l,r;
q[l=r=]=L[];
for(int i=;i<n;i++){
while(l<r && !Onleft(L[i],deq[r-]))r--;
while(l<r && !Onleft(L[i],deq[l]))l++;
q[++r]=L[i];
if(!dcmp(q[r].ang-q[r-].ang)){
r--;
if(Onleft(q[r],L[i].p))q[r]=L[i];
}
if(l<r)deq[r-]=GetIntersection(q[r],q[r-]);
}
while(l<r && !Onleft(q[l],deq[r-]))r--;
if(r>l+)deq[r]=GetIntersection(q[r],q[l]);
else return ; int m=;
for(int i=l;i<=r;i++)poly[m++]=deq[i];
return m;
}
int perm[],vis[],h,w;
double ans;
void dfs(int now,int n){
if(now==n){
li[]=line(point(,),point(,));
li[]=line(point(w,),point(,));
li[]=line(point(w,h),point(-,));
li[]=line(point(,h),point(,-));
int m=HalfPlane(li,,po);
double temp=;
point tp[];
for(int i=;i<n;i++){
line now=line(fin[perm[i]],fin[perm[i]]-fin[(perm[i]+)%n]);
int res=;
for(int j=;j<m;j++){
if(!dcmp(cross(now.v,po[(j+)%m]-po[j])))continue;
tp[res]=GetIntersection(now,line(po[j],po[(j+)%m]-po[j]));
if(dcmp(dot(tp[res]-po[j],tp[res]-po[(j+)%m]))<=)res++;
}
sort(tp,tp+res,cmp);
if(res>)temp+=length(tp[res-]-tp[]);
else continue;
li[i+]=now;
m=HalfPlane(li,i+,po);
}
ans=min(ans,temp);
return;
}
for(int i=;i<n;i++)if(!vis[i]){
vis[i]=;
perm[now]=i;
dfs(now+,n);
vis[i]=;
}
}
int main(){
//freopen("r.in","r",stdin);freopen("r.out","w",stdout);
int t;
scanf("%d",&t);
while(t--){
int vt;
scanf("%d%d",&w,&h);
scanf("%d",&vt);
for(int i=;i<vt;i++)scanf("%lf%lf",&fin[i].x,&fin[i].y);
ans=INF;
memset(vis,,sizeof vis);
dfs(,vt);
printf("Minimum total length = %.3lf\n",ans);
if(t)printf("\n");
}
return ;
}

D - Dreisam Equations

就是暴力加表达式计算。(一直SegmentationFault不明所以,发现是代表符号的值取的不好会和数值冲突=_=)

 #include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <stack> using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000
#define zuokuo 200000000
#define youkuo 200000001
#define kong 200000009
#define jia -200000000
#define jian -200000001
#define cheng -200000002 typedef long long ll;
char eq[];
int q[],res;
int lf;
stack <int> a;
stack <int> s;
int solve(int cur){
if(cur==res){
while(!a.empty())a.pop();
while(!s.empty())s.pop();
for(int i=;i<res;i++){
if(q[i]>-&&q[i]<){
if(s.empty()||s.top()==zuokuo)a.push(q[i]);
else{
int u=a.top();a.pop();
if(s.top()==jia)a.push(u+q[i]);
if(s.top()==jian)a.push(u-q[i]);
if(s.top()==cheng)a.push(u*q[i]);
s.pop();
}
}
else if(q[i]==youkuo){
if(s.empty()||s.top()!=zuokuo)return ;
s.pop();
if(s.empty()||s.top()==zuokuo)continue;
int u=a.top();a.pop();
int v=a.top();a.pop();
if(s.top()==jia)a.push(v+u);
if(s.top()==jian)a.push(v-u);
if(s.top()==cheng)a.push(v*u);
s.pop();
}
else s.push(q[i]);
}
if(a.top()==lf)return ;
else return ;
}
if(q[cur]!=kong)return solve(cur+);
for(int i=cheng;i<=jia;i++){
q[cur]=i;
if(solve(cur+))return ;
q[cur]=kong;
}
return ;
}
int main(){
int cs=;
while(gets(eq) && eq[]!=''){
sscanf(eq,"%d",&lf);
res=;
int i;
for(i=;eq[i]!='=';i++);
for(i++;eq[i]!='\0';i++){
for(;eq[i]==' ';i++);
if(eq[i]=='('){q[res++]=zuokuo;continue;}
if(eq[i]==')'){q[res-]=youkuo;q[res++]=kong;continue;}
int num=;
while(eq[i]>=''&&eq[i]<=''){
num=num*+eq[i]-'';
i++;
}
q[res++]=num;
q[res++]=kong;
i=i-;
}
res=res-; printf("Equation #%d:\n",cs++);
if(solve()==)printf("Impossible\n\n");
else{
printf("%d=",lf);
for(int i=;i<res;i++){
if(q[i]==zuokuo)printf("(");
else if(q[i]==youkuo)printf(")");
else if(q[i]==jia)printf("+");
else if(q[i]==jian)printf("-");
else if(q[i]==cheng)printf("*");
else printf("%d",q[i]);
}
printf("\n\n");
} }
return ;
}


狗狗40题~(Volume B)的更多相关文章

  1. 狗狗40题~ (Volume C)

    A - Triangles 记忆化搜索呗.搜索以某三角形为顶的最大面积,注意边界情况. #include <stdio.h> #include <cstring> #inclu ...

  2. 狗狗40题~(Volume A)

    A - The Willy Memorial Program 大模拟题…… 一开始的思路不对,修修补补WA了十发.当时想直接一个并查集做连通来搞定它,结果发现不能很好地判断各管的水位.究其原因还是因为 ...

  3. JAVA经典算法40题及解答

    JAVA经典算法40题 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...

  4. JAVA经典算法40题

    1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...

  5. JAVA经典算法40题(原题+分析)之分析

    JAVA经典算法40题(下) [程序1]   有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   1.程序分析:  ...

  6. JAVA经典算法40题(原题+分析)之原题

    JAVA经典算法40题(上) [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [程 ...

  7. JAVA经典算法40题面向过程

    JAVA经典算法40题 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...

  8. 剑指offer 面试40题

    面试40题: 题目:最小的k个数 题:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 解题代码一: # -*- coding ...

  9. java经典算法40题-附带解决代码

    前一段时间工作比较闲,每天没有代码敲的日子有点无聊,于是为了保证自己的编程逻辑力的日常清醒,故百度了一些经典的java算法,然后自己思考编程解决问题,虽然那些东西比较基础了,但是有些题目小编看到了也是 ...

随机推荐

  1. 博弈论(男人八题):POJ 1740 A New Stone Game

    A New Stone Game Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5694   Accepted: 3119 ...

  2. 单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?

    单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?     配一个无线路由器就可以实现,将电脑IP配置成自动获取,找条网线一头插路由LAN口(路由器上有标明 ...

  3. HDU --- 4006

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

  4. AMBA总线介绍

    The Advanced Microcontroller Bus Architecture (AMBA) specification defines an on- chip communication ...

  5. ListBoxControl 删除选择的项的方法

    public void RemoveSelectItems<T>(BaseListBoxControl listControl)        {            var list ...

  6. 「S-A-L-T-A」项目失败总结!

    前言: 从2013年8月20日进入这个项目开始,到现在12月12日. 从项目详细设计开始,到现在连SI2阶段的疏通测试都没有完成! (现在,这个项目好像已经不需要我们再做下去了...) 项目失败原因总 ...

  7. input标签上传图片怎么获取src;

    大家都知道input标签可以上传文件 如: <input type="file"/> 就可以上传文件,当然也可以上传图片,上传的图片的src地址如何取到: var re ...

  8. Http(1)

    #http协议版本 http1.0:当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭. http1.1:当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请 ...

  9. 在命令行cmd 下,输入dxdiag 查看关于电脑许多硬件的详细信息

    输入命令就可以查看本机的很多硬件的详细信息: 在命令行cmd 下,输入dxdiag  查看关于电脑许多硬件的详细信息

  10. flipsnap--手机屏幕水平滑动框架

    在很多手机应用中,大家都会见过这样一种效果:当手指横向滑动屏幕时,屏幕上的页面会向左或向右滑动. 下面介绍一下当用HTML5+CSS3开发手机应用时解决这类效果的一款js框架:flipsnap. fl ...