全部评论 1

  • 555我的代码TLE了,有没有大佬能帮忙改改
    (思路主要是让尽可能小的卡牌先行动,不浪费大牌点数)

    #include<bits/stdc++.h>
    using namespace std;
    const int N = 1e5+100;
    int n;
    int r[N];
    bool vis[N];
    int main()
    {
    	cin >> n;
        int ans = n;
    	for(int i = 1;i <= n;i++)
    		cin >> r[i];
    	sort(r+1,r+n+1);
        int pre = -1;//通过记录上一张比第i张大的牌剪枝 
        for(int i = 1;i <= n;i++)//遍历r数组寻找可以被出局的牌 
        {
        	for(int j = (pre != -1?pre+1:i+1);j <= n;j++)
        	{
    	        if(r[i] < r[j] && !vis[j])//可以攻击 
    	        {
                    ans--;
                    pre = j;
                    vis[i] = 
                    vis[j] = 1; 
    	        	break;
    	        }
            }
        }
        cout << ans;
    	return 0;
    }
    

    3天前 来自 河北

    0
首页