2016年4月11日 星期一

無法apt-get install解決方法


錯誤訊息: 
 
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
 
解決辦法: 
 
sudo apt-get install --fix-broken && sudo apt-get autoremove && sudo apt-get update

2015年3月1日 星期日

[UVA] 12208 - How Many Ones Needed?

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL cnt(LL k){
    if(k<=0) return 0;
    LL ans=0,tmp=1;
    while(tmp*2<=k){
        ans=ans*2+tmp;
        tmp*=2;
    }
    ans+=cnt(k-tmp)+k-tmp;
    return ans;
}
int main(){
    LL n,m,C=0;
    while(scanf("%lld%lld",&n,&m)!=EOF && n+m){
        printf("Case %lld: %lld\n",++C,cnt(m+1)-cnt(n));
    }
}

[UVA] 12347 - Binary Search Tree

#include<bits/stdc++.h>
using namespace std;
struct node{
    int val;
    node *l,*r;
};
void newnode(node *&pt){
    pt=new node;
    pt->l=NULL;
    pt->r=NULL;
}
vector<int> arr;
node* build(node *pt,int l,int r){
    if(l>r) return pt;
    if(pt==NULL) newnode(pt);
    pt->val=arr[l];
    if(l<r){
        int i;
        for(i=l+1;i<=r;i++){
            if(arr[i]>arr[l]) break;
        }
        pt->l=build(pt->l,l+1,i-1);
        pt->r=build(pt->r,i,r);
    }
    return pt;
}
void dfs(node *pt){
    if(pt==NULL) return;
    dfs(pt->l);
    dfs(pt->r);
    printf("%d\n",pt->val);
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        arr.push_back(n);
    }
    node *root=build(root,0,arr.size()-1);
    dfs(root);
}

[UVA] 12442 - Forwarding Emails

#include<bits/stdc++.h>
using namespace std;
#define N 50005
int to[N],pre[N],sccno[N],cnt[N],val[N],dfs_cnt,scc_cnt;
vector<int> sta,G[N];
int dfs(int u){
    int lowu=pre[u]=++dfs_cnt;
    sta.push_back(u);
    /**************/
    int v=to[u];
    if(pre[v]==0){
        int lowv=dfs(v);
        lowu=min(lowu,lowv);
    }
    else if(!sccno[v]){
        lowu=min(lowu,pre[v]);
    }
    /**************/
    if(lowu==pre[u]){
        scc_cnt++;
        while(sta.size()){
            int x=sta.back();
            sta.pop_back();
            sccno[x]=scc_cnt;
            cnt[scc_cnt]++;
            if(x==u) break;
        }
    }
    return lowu;
}
int dfs2(int u){
    if(val[u]) return val[u];
    int i,sum=cnt[u];
    for(i=0;i<G[u].size();i++){
        int v=G[u][i];
        sum+=dfs2(v);
    }
    return val[u]=sum;
}
int main(){
    int t,n,m,x,y,i,j,C=0;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        memset(pre,0,sizeof(pre));
        memset(sccno,0,sizeof(sccno));
        memset(cnt,0,sizeof(cnt));
        memset(val,0,sizeof(val));
        for(i=0;i<n;i++){
            scanf("%d%d",&x,&y);
            to[x]=y;
        }
        scc_cnt=dfs_cnt=0;
        for(i=1;i<=n;i++){
            if(pre[i]==0){
                sta.clear();
                dfs(i);
            }
        }
        for(i=1;i<=scc_cnt;i++){
            G[i].clear();
        }
        for(i=1;i<=n;i++){
            x=i,y=to[i];
            if(sccno[x]!=sccno[y]){
                G[sccno[x]].push_back(sccno[y]);
            }
        }
        for(i=1;i<=scc_cnt;i++){
            dfs2(i);
        }
        int ans=0,id;
        for(i=1;i<=n;i++){
            if(val[sccno[i]]>ans){
                ans=val[sccno[i]],id=i;
            }
        }
        printf("Case %d: %d\n",++C,id);
    }
}

[UVA] 11728 - Alternate Task

#include<bits/stdc++.h>
using namespace std;
int s[1005];
vector<int> pri;
int main(){
    int t,n,m,i,j,C=0;
    for(i=1;i<=1000;i++){
        for(j=1;j<=i;j++){
            if(i%j==0){
                s[i]+=j;
            }
        }
    }
    while(scanf("%d",&n)!=EOF && n){
        int flag=0;
        for(i=n;i>0;i--){
            if(s[i]==n){
                flag=1;
                break;
            }
        }
        printf("Case %d: %d\n",++C,flag?i:-1);
    }
}

[UVA] 12439 - February 29

#include<bits/stdc++.h>
using namespace std;
string mon[15]={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November" , "December"};
char s1[15],s2[15];
int main(){
    int t,m1,m2,d1,d2,y1,y2,i,j,C=0;
    scanf("%d",&t);
    while(t--){
        scanf("%s %d, %d",s1,&d1,&y1);
        scanf("%s %d, %d",s2,&d2,&y2);
        for(i=0;i<12;i++){
            if(mon[i]==string(s1)) m1=i+1;
            if(mon[i]==string(s2)) m2=i+1;
        }
        int ans=(y2/4-y2/100+y2/400)-(y1/4-y1/100+y1/400);
        if(y1%4==0 && y1%100!=0 || y1%400==0){
            if(m1<2 || m1==2 && d1<=29) ans++;
        }
        if(y2%4==0 && y2%100!=0 || y2%400==0){
            if(m2<2 || m2==2 && d2<29) ans--;
        }
        printf("Case %d: %d\n",++C,ans);
    }
}

2015年2月28日 星期六

[UVA] 12428 - Enemy at the Gates

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long int t,n,m,x,y,i,j;
    scanf("%lld",&t);
    while(t--){
        scanf("%lld%lld",&n,&m);
        long long int L=0,R=n+1,M;
        while(L+1!=R){
            M=(L+R)/2;
            if(M*(M-1)/2+n-M>=m) R=M;
            else L=M;
        }
        printf("%lld\n",n-R);
    }
}