51nod 1191-贪心+并查集

通过优先队列或结合并查集的贪心算法解决箭杀兔子问题,动态维护每支箭可射杀的最大兔子,实现最优解。

首先不得不承认这题写残疾了,本来是优先队列随便搞一下就过了(确保弹出来的箭能杀死兔子),这里贴一下当时另一种贪心思想写的,运用了并查集,对于箭贪心,每次杀能杀死的最大的兔子之后得到解,这里要用并查集动态维护一下x的箭杀什么兔子,乱搞一气也算过了。


#include <iostream>
#include <queue>
#include <algorithm>
#include <map>
using namespace std;
int n,m,nn;

int rib[50005];
struct A{
    int a,qb;
}arr[50005];
int index[100005];
int f[50005];
int vis[50005];
int cc[50005];
bool operator < (A a1,A a2){
    return a1.qb<a2.qb;
}
int fin(int x){
    int r=x;
    while(f[r]!=r)
        r=f[r];
    return r;
}
void mer(int a,int b){
    int fx,fy;
    fx=fin(a);
    fy=fin(b);
    if(fx!=fy)
        f[fx]=fy;
}

void solve(){
    long long ans=0;
    int cnt=0;
    for(int i=0;i<m;i++){
        int x=fin(index[arr[i].a]);
        if(x!=0){
            vis[x]--;
            if(vis[x]==0)
                mer(x,x-1);
            ans+=(long long)arr[i].qb;
            cnt++;
        }
        if(cnt==n)
            break;
    }
    if(cnt==n){
        cout<<ans<<endl;
    }
    else{
        cout<<"No Solution"<<endl;
    }
}

int main()
{
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>rib[i];
    }
    for(int i=0;i<m;i++){
        cin>>arr[i].a>>arr[i].qb;
    }
    sort(arr,arr+m);
    sort(rib,rib+n);

    for(int i=0;i<50005;i++){
        f[i]=i;
    }
    int num=0;
    int N=0;
    for(int i=0;i<100005;i++){
        if(num<n){
            if(i<rib[num]){
                index[i]=N;
            }
            else{
                N++;
                index[i]=N;
                vis[N]++;
                num++;
                while(rib[num]==rib[num-1]){
                    vis[N]++;
                    num++;
                }
            }
        }
        else{
                index[i]=N;
        }
    }
    solve();
    return 0;
}


ReactiJS@1.0.0 J:\EXC\ReactiJS +-- @babel/code-frame@7.27.1 extraneous -> .\node_modules\.store\@babel+code-frame@7.27.1\node_modules\@babel\code-frame +-- @babel/compat-data@7.28.0 extraneous -> .\node_modules\.store\@babel+compat-data@7.28.0\node_modules\@babel\compat-data +-- @babel/core@7.28.0 extraneous -> .\node_modules\.store\@babel+core@7.28.0\node_modules\@babel\core +-- @babel/eslint-parser@7.23.3 extraneous -> .\node_modules\.store\@babel+eslint-parser@7.23.3\node_modules\@babel\eslint-parser +-- @babel/generator@7.28.0 extraneous -> .\node_modules\.store\@babel+generator@7.28.0\node_modules\@babel\generator +-- @babel/helper-annotate-as-pure@7.27.3 extraneous -> .\node_modules\.store\@babel+helper-annotate-as-pure@7.27.3\node_modules\@babel\helper-annotate-as-pure +-- @babel/helper-compilation-targets@7.27.2 extraneous -> .\node_modules\.store\@babel+helper-compilation-targets@7.27.2\node_modules\@babel\helper-compilation-targets +-- @babel/helper-globals@7.28.0 extraneous -> .\node_modules\.store\@babel+helper-globals@7.28.0\node_modules\@babel\helper-globals +-- @babel/helper-module-imports@7.27.1 extraneous -> .\node_modules\.store\@babel+helper-module-imports@7.27.1\node_modules\@babel\helper-module-imports +-- @babel/helper-module-transforms@7.27.3 extraneous -> .\node_modules\.store\@babel+helper-module-transforms@7.27.3\node_modules\@babel\helper-module-transforms +-- @babel/helper-plugin-utils@7.27.1 extraneous -> .\node_modules\.store\@babel+helper-plugin-utils@7.27.1\node_modules\@babel\helper-plugin-utils +-- @babel/helper-simple-access@7.27.1 extraneous -> .\node_modules\.store\@babel+helper-simple-access@7.27.1\node_modules\@babel\helper-simple-access +-- @babel/helper-string-parser@7.27.1 extraneous -> .\node_modules\.store\@babel+helper-string-parser@7.27.1\node_modules\@babel\helper-string-parser +-- @babel/helper-validator-identifier@7.27.1 extraneous -> .\node_modules\.store\@babel+helper-validator-identifier@7.27.1\node_modules\@babel\helper-validator-identifier +-- @babel/helper-validator-option@7.27.1 extraneous -> .\node_modules\.store\@babel+helper-validator-option@7.27.1\node_modules\@babel\helper-validator-option +-- @babel/helpers@7.27.6 extraneous -> .\node_modules\.store\@babel+helpers@7.27.6\node_modules\@babel\helpers +-- @babel/parser@7.28.0 extraneous -> .\node_modules\.store\@babel+parser@7.28.0\node_modules\@babel\parser +-- @babel/plugin-syntax-async-generators@7.8.4 extraneous -> .\node_modules\.store\@babel+plugin-syntax-async-generators@7.8.4\node_modules\@babel\plugin-syntax-async-gen erators +-- @babel/plugin-syntax-bigint@7.8.3 extraneous -> .\node_modules\.store\@babel+plugin-syntax-bigint@7.8.3\node_modules\@babel\plugin-syntax-bigint +-- @babel/plugin-syntax-class-properties@7.12.13 extraneous -> .\node_modules\.store\@babel+plugin-syntax-class-properties@7.12.13\node_modules\@babel\plugin-syntax-class -properties +-- @babel/plugin-syntax-class-static-block@7.14.5 extraneous -> .\node_modules\.store\@babel+plugin-syntax-class-static-block@7.14.5\node_modules\@babel\plugin-syntax-cla ss-static-block +-- @babel/plugin-syntax-import-attributes@7.27.1 extraneous -> .\node_modules\.store\@babel+plugin-syntax-import-attributes@7.27.1\node_modules\@babel\plugin-syntax-impor t-attributes +-- @babel/plugin-syntax-import-meta@7.10.4 extraneous -> .\node_modules\.store\@babel+plugin-syntax-import-meta@7.10.4\node_modules\@babel\plugin-syntax-import-meta +-- @babel/plugin-syntax-json-strings@7.8.3 extraneous -> .\node_modules\.store\@babel+plugin-syntax-json-strings@7.8.3\node_modules\@babel\plugin-syntax-json-strings +-- @babel/plugin-syntax-jsx@7.27.1 extraneous -> .\node_modules\.store\@babel+plugin-syntax-jsx@7.27.1\node_modules\@babel\plugin-syntax-jsx +-- @babel/plugin-syntax-logical-assignment-operators@7.10.4 extraneous -> .\node_modules\.store\@babel+plugin-syntax-logical-assignment-operators@7.10.4\node_modules\@bab el\plugin-syntax-logical-assignment-operators +-- @babel/plugin-syntax-nullish-coalescing-operator@7.8.3 extraneous -> .\node_modules\.store\@babel+plugin-syntax-nullish-coalescing-operator@7.8.3\node_modules\@babel\p lugin-syntax-nullish-coalescing-operator +-- @babel/plugin-syntax-numeric-separator@7.10.4 extraneous -> .\node_modules\.store\@babel+plugin-syntax-numeric-separator@7.10.4\node_modules\@babel\plugin-syntax-numer ic-separator +-- @babel/plugin-syntax-object-rest-spread@7.8.3 extraneous -> .\node_modules\.store\@babel+plugin-syntax-object-rest-spread@7.8.3\node_modules\@babel\plugin-syntax-objec t-rest-spread +-- @babel/plugin-syntax-optional-catch-binding@7.8.3 extraneous -> .\node_modules\.store\@babel+plugin-syntax-optional-catch-binding@7.8.3\node_modules\@babel\plugin-synt ax-optional-catch-binding +-- @babel/plugin-syntax-optional-chaining@7.8.3 extraneous -> .\node_modules\.store\@babel+plugin-syntax-optional-chaining@7.8.3\node_modules\@babel\plugin-syntax-optiona l-chaining +-- @babel/plugin-syntax-private-property-in-object@7.14.5 extraneous -> .\node_modules\.store\@babel+plugin-syntax-private-property-in-object@7.14.5\node_modules\@babel\p lugin-syntax-private-property-in-object +-- @babel/plugin-syntax-top-level-await@7.14.5 extraneous -> .\node_modules\.store\@babel+plugin-syntax-top-level-await@7.14.5\node_modules\@babel\plugin-syntax-top-level -await +-- @babel/plugin-transform-modules-commonjs@7.23.3 extraneous -> .\node_modules\.store\@babel+plugin-transform-modules-commonjs@7.23.3\node_modules\@babel\plugin-transfor m-modules-commonjs +-- @babel/plugin-transform-react-jsx-self@7.27.1 extraneous -> .\node_modules\.store\@babel+plugin-transform-react-jsx-self@7.27.1\node_modules\@babel\plugin-transform-re act-jsx-self +-- @babel/plugin-transform-react-jsx-source@7.27.1 extraneous -> .\node_modules\.store\@babel+plugin-transform-react-jsx-source@7.27.1\node_modules\@babel\plugin-transfor m-react-jsx-source +-- @babel/runtime@7.27.6 extraneous -> .\node_modules\.store\@babel+runtime@7.27.6\node_modules\@babel\runtime +-- @babel/template@7.27.2 extraneous -> .\node_modules\.store\@babel+template@7.27.2\node_modules\@babel\template +-- @babel/traverse@7.28.0 extraneous -> .\node_modules\.store\@babel+traverse@7.28.0\node_modules\@babel\traverse +-- @babel/types@7.28.1 extraneous -> .\node_modules\.store\@babel+types@7.28.1\node_modules\@babel\types +-- @eslint-community/eslint-utils@4.7.0 extraneous -> .\node_modules\.store\@eslint-community+eslint-utils@4.7.0\node_modules\@eslint-community\eslint-utils +-- @eslint-community/regexpp@4.12.1 extraneous -> .\node_modules\.store\@eslint-community+regexpp@4.12.1\node_modules\@eslint-community\regexpp +-- @nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1 extraneous -> .\node_modules\.store\@nicolo-ribaudo+eslint-scope-5-internals@5.1.1-v1\node_modules\@nicolo-ribaudo\es lint-scope-5-internals +-- @svgr/babel-plugin-add-jsx-attribute@6.5.1 extraneous -> .\node_modules\.store\@svgr+babel-plugin-add-jsx-attribute@6.5.1\node_modules\@svgr\babel-plugin-add-jsx-attri bute +-- @svgr/babel-plugin-remove-jsx-attribute@8.0.0 extraneous -> .\node_modules\.store\@svgr+babel-plugin-remove-jsx-attribute@8.0.0\node_modules\@svgr\babel-plugin-remove- jsx-attribute +-- @svgr/babel-plugin-remove-jsx-empty-expression@8.0.0 extraneous -> .\node_modules\.store\@svgr+babel-plugin-remove-jsx-empty-expression@8.0.0\node_modules\@svgr\babel- plugin-remove-jsx-empty-expression +-- @svgr/babel-plugin-replace-jsx-attribute-value@6.5.1 extraneous -> .\node_modules\.store\@svgr+babel-plugin-replace-jsx-attribute-value@6.5.1\node_modules\@svgr\babel- plugin-replace-jsx-attribute-value +-- @svgr/babel-plugin-svg-dynamic-title@6.5.1 extraneous -> .\node_modules\.store\@svgr+babel-plugin-svg-dynamic-title@6.5.1\node_modules\@svgr\babel-plugin-svg-dynamic-t itle +-- @svgr/babel-plugin-svg-em-dimensions@6.5.1 extraneous -> .\node_modules\.store\@svgr+babel-plugin-svg-em-dimensions@6.5.1\node_modules\@svgr\babel-plugin-svg-em-dimens ions +-- @svgr/babel-plugin-transform-react-native-svg@6.5.1 extraneous -> .\node_modules\.store\@svgr+babel-plugin-transform-react-native-svg@6.5.1\node_modules\@svgr\babel-pl ugin-transform-react-native-svg +-- @svgr/babel-plugin-transform-svg-component@6.5.1 extraneous -> .\node_modules\.store\@svgr+babel-plugin-transform-svg-component@6.5.1\node_modules\@svgr\babel-plugin-t ransform-svg-component +-- @svgr/babel-preset@6.5.1 extraneous -> .\node_modules\.store\@svgr+babel-preset@6.5.1\node_modules\@svgr\babel-preset +-- @svgr/hast-util-to-babel-ast@6.5.1 extraneous -> .\node_modules\.store\@svgr+hast-util-to-babel-ast@6.5.1\node_modules\@svgr\hast-util-to-babel-ast +-- @types/babel__core@7.20.5 extraneous -> .\node_modules\.store\@types+babel__core@7.20.5\node_modules\@types\babel__core +-- @types/babel__generator@7.27.0 extraneous -> .\node_modules\.store\@types+babel__generator@7.27.0\node_modules\@types\babel__generator +-- @types/babel__template@7.4.4 extraneous -> .\node_modules\.store\@types+babel__template@7.4.4\node_modules\@types\babel__template +-- @types/babel__traverse@7.20.7 extraneous -> .\node_modules\.store\@types+babel__traverse@7.20.7\node_modules\@types\babel__traverse +-- @typescript-eslint/eslint-plugin@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+eslint-plugin@5.62.0\node_modules\@typescript-eslint\eslint-plugin +-- @typescript-eslint/parser@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+parser@5.62.0\node_modules\@typescript-eslint\parser +-- @typescript-eslint/scope-manager@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+scope-manager@5.62.0\node_modules\@typescript-eslint\scope-manager +-- @typescript-eslint/type-utils@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+type-utils@5.62.0\node_modules\@typescript-eslint\type-utils +-- @typescript-eslint/types@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+types@5.62.0\node_modules\@typescript-eslint\types +-- @typescript-eslint/typescript-estree@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+typescript-estree@5.62.0\node_modules\@typescript-eslint\typescript- estree +-- @typescript-eslint/utils@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+utils@5.62.0\node_modules\@typescript-eslint\utils +-- @typescript-eslint/visitor-keys@5.62.0 extraneous -> .\node_modules\.store\@typescript-eslint+visitor-keys@5.62.0\node_modules\@typescript-eslint\visitor-keys +-- @umijs/babel-preset-umi@4.4.11 extraneous -> .\node_modules\.store\@umijs+babel-preset-umi@4.4.11\node_modules\@umijs\babel-preset-umi +-- babel-extract-comments@1.0.0 extraneous -> .\node_modules\.store\babel-extract-comments@1.0.0\node_modules\babel-extract-comments +-- babel-jest@29.7.0 extraneous -> .\node_modules\.store\babel-jest@29.7.0\node_modules\babel-jest +-- babel-plugin-dva-hmr@0.4.2 extraneous -> .\node_modules\.store\babel-plugin-dva-hmr@0.4.2\node_modules\babel-plugin-dva-hmr +-- babel-plugin-dynamic-import-node@2.3.3 extraneous -> .\node_modules\.store\babel-plugin-dynamic-import-node@2.3.3\node_modules\babel-plugin-dynamic-import-node +-- babel-plugin-import@1.13.8 extraneous -> .\node_modules\.store\babel-plugin-import@1.13.8\node_modules\babel-plugin-import +-- babel-plugin-istanbul@6.1.1 extraneous -> .\node_modules\.store\babel-plugin-istanbul@6.1.1\node_modules\babel-plugin-istanbul +-- babel-plugin-jest-hoist@29.6.3 extraneous -> .\node_modules\.store\babel-plugin-jest-hoist@29.6.3\node_modules\babel-plugin-jest-hoist +-- babel-plugin-react-compiler@0.0.0-experimental-c23de8d-20240515 extraneous -> .\node_modules\.store\babel-plugin-react-compiler@0.0.0-experimental-c23de8d-20240515\nod e_modules\babel-plugin-react-compiler +-- babel-plugin-styled-components@2.1.4 extraneous -> .\node_modules\.store\babel-plugin-styled-components@2.1.4\node_modules\babel-plugin-styled-components +-- babel-plugin-syntax-object-rest-spread@6.13.0 extraneous -> .\node_modules\.store\babel-plugin-syntax-object-rest-spread@6.13.0\node_modules\babel-plugin-syntax-object -rest-spread +-- babel-plugin-transform-object-rest-spread@6.26.0 extraneous -> .\node_modules\.store\babel-plugin-transform-object-rest-spread@6.26.0\node_modules\babel-plugin-transfo rm-object-rest-spread +-- babel-preset-current-node-syntax@1.1.0 extraneous -> .\node_modules\.store\babel-preset-current-node-syntax@1.1.0\node_modules\babel-preset-current-node-syntax +-- babel-preset-jest@29.6.3 extraneous -> .\node_modules\.store\babel-preset-jest@29.6.3\node_modules\babel-preset-jest +-- babel-runtime@6.26.0 extraneous -> .\node_modules\.store\babel-runtime@6.26.0\node_modules\babel-runtime +-- eslint-plugin-jest@27.2.3 extraneous -> .\node_modules\.store\eslint-plugin-jest@27.2.3\node_modules\eslint-plugin-jest +-- eslint-plugin-react-hooks@4.6.0 extraneous -> .\node_modules\.store\eslint-plugin-react-hooks@4.6.0\node_modules\eslint-plugin-react-hooks +-- eslint-plugin-react@7.33.2 extraneous -> .\node_modules\.store\eslint-plugin-react@7.33.2\node_modules\eslint-plugin-react +-- eslint-scope@5.1.1 extraneous -> .\node_modules\.store\eslint-scope@5.1.1\node_modules\eslint-scope +-- eslint-visitor-keys@3.4.3 extraneous -> .\node_modules\.store\eslint-visitor-keys@3.4.3\node_modules\eslint-visitor-keys +-- prettier-plugin-organize-imports@3.2.4 extraneous -> .\node_modules\.store\prettier-plugin-organize-imports@3.2.4\node_modules\prettier-plugin-organize-imports +-- prettier-plugin-packagejson@2.4.3 extraneous -> .\node_modules\.store\prettier-plugin-packagejson@2.4.3\node_modules\prettier-plugin-packagejson +-- prettier@1.15.3 extraneous -> .\node_modules\.store\prettier@1.15.3\node_modules\prettier +-- react-dom@18.3.1 -> .\node_modules\.store\react-dom@18.3.1\node_modules\react-dom +-- react@18.3.1 -> .\node_modules\.store\react@18.3.1\node_modules\react +-- rimraf@6.0.1 -> .\node_modules\.store\rimraf@6.0.1\node_modules\rimraf +-- umi-plugin-react@1.15.9 -> .\node_modules\.store\umi-plugin-react@1.15.9\node_modules\umi-plugin-react `-- umi@4.4.11 -> .\node_modules\.store\umi@4.4.11\node_modules\umi
最新发布
07-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值