题目链接:http://poj.org/problem?id=2370
题意:大意好像是类似选举,给出K,表示一共K组,然后给出K组人每组的人数,都是奇数。每组人有超过一半的人同意就认为那一组人同意,有超过半数的组同意就决定通过,看最少要多少人同意能决定通过。
分析:贪心。(水)将每组人数按照从小到大排序,选择前面(k)/2+1组人每组a[i]/2+1的人同意就好。
代码:
#include<cstdio> #include<cmath> #include<cstring> #include<queue> #include<stack> #include<cstdlib> #include<string> #include<vector> #include<map> #include<string> #include<iostream> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f typedef long long ll; #define Max(a,b) (a>b)?a:b #define lowbit(x) x&(-x) int main() { int n; scanf("%d",&n); int a[100005]; for(int i=0;i<n;i++) { scanf("%d",&a[i]); } int sum=0; sort(a,a+n); for(int i=0;i<n/2+1;i++) { sum+=a[i]/2+1; } printf("%d\n",sum); }
时间: 2024-10-27 00:40:09