2019-2020 ICPC, NERC, Northern Eurasia Finals E. Elections (暴力&貪心)
2019-2020 ICPC, NERC, Northern Eurasia Finals E. Elections (暴力&貪心)
題意:給定 n n n個候選人, m m m個站點,第 n n n個人是反對候選人,每個站點會有 n n n個人投票個數。
要求刪除最少的站使得第 n n n個人的總票數不是嚴格最多的那個人。
思路:暴力 + + +貪心。
我們的目的是使第 n n n個人不是嚴格最多的,那麼我們就可以假設最後最多的那個人是 g o a l goal goal,然後我們可以暴力列舉 g o a l goal goal對應要刪除的站數,然後取最小的即可。
有了 g o a l goal goal我們就很好貪心的刪了,我們取所有站的這兩個人票數差,然後由大到小取,直到 c n t g o a l ≥ c n t n cnt_{goal}\ge cnt_n cntgoal≥cntn即可。
時間複雜度: O ( n m l o g m ) O(nmlogm) O(nmlogm)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=105,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define il inline
int n,m;
int a[N][N],sum[N],tmp[N],mn=1e9;
vector<int>ans,res;
struct cha{
int id;
int x;
bool operator<(const cha&c)const{
return x>c.x;
}
}C[N];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
scanf("%d",&a[i][j]);
sum[j]+=a[i][j];
}
}
for(int i=1;i<=n;i++) tmp[i]=sum[i];
sort(tmp+1,tmp+n+1);
if(tmp[n]!=sum[n]||(tmp[n-1]==tmp[n])){
puts("0");
puts("");
return 0;
}
for(int goal=1;goal<n;goal++){
int sg=sum[goal],sn=sum[n];
sn-=sg;
ans.clear();
for(int i=1;i<=m;i++){
C[i].x=a[i][n]-a[i][goal];
C[i].id=i;
}
sort(C+1,C+m+1);
int cnt=0;
for(int i=1;C[i].x>0&&i<=m;i++){
sn-=C[i].x;
cnt++,ans.pb(C[i].id);
if(sn<=0) break;
}
if(sn<=0){
// printf("goal=%d\n",goal);
if(ans.size()<mn){
res=ans;
mn=ans.size();
}
}
}
printf("%d\n",mn);
for(int i:res) printf("%d ",i);
return 0;
}
總結:這種題給了我們一個思考問題的新方向,對於一個問題,我們可以假設答案的結果,然後取依次暴力選取。
相關文章
- 2020-2021 ICPC NERC (NEERC), North-Western Russia Regional Contest (Northern Subregionals) E(離散化+尤拉回路)
- 二分/貪心(ICPC小米預賽第一場 A 2020)
- 2020ICPC小米邀請賽2 A-2020(貪心+二分)
- Codeforces Round #537 (Div. 2)B. Average Superhero Gang Power (貪心+暴力)
- 貪心
- Codeforces 1070C - Cloud Computing 思路+線段樹+貪心 (2018-2019 ICPC, NEERC)Cloud
- 反悔貪心
- Supermarket(貪心)
- 2020ICPC·小米 網路選拔賽第二場 Subsequence Pair(貪心二分)AI
- 貪心例題
- 貪心+搜尋
- 2024ICPC武漢邀請賽E. Boomerang 題解OOM
- 反悔貪心雜題
- 貪心演算法演算法
- 貪心、構造合集
- HDU 5821 Ball(貪心)
- 貪心模式記錄模式
- 「貪心」做題記錄
- [反悔貪心] Add One 2
- 貪心 做題筆記筆記
- 7.5 - 貪心篇完結
- 貪心演算法Dijkstra演算法
- 24/03/20 貪心(一)
- HDU 6047 Maximum Sequence (貪心)
- HDU 5813 Elegant Construction (貪心)Struct
- 漲薪【貪心】【快速冪】
- Leetcode 貪心:差值調整LeetCode
- Least Cost Bracket Sequence(貪心)ASTRacket
- 刪數問題(貪心)
- 牛客 tokitsukaze and Soldier 貪心
- 貪心-刪數問題
- 貪心-*活動選擇
- Codeforces 1070H - BerOS File Suggestion 暴力 (2018-2019 ICPC, NEERC)ROS
- 學一下貪心演算法-學一下貪心演算法演算法
- 貪心演算法(貪婪演算法,greedy algorithm)演算法Go
- 2019-2020 ICPC Southeastern European Regional Programming Contest (SEERC 2019) 補題記錄AST
- 9-貪心演算法演算法
- 【貪心】POJ 3617:Best Cow Line