随笔分类 - acm-贪心
摘要:递增子序列的最小组数。可以直接贪心,扫一遍#include#include#include#includeusing namespace std;struct stick{ int h,w;}Sticks[5005];bool cmp(stick a,stick b){ return ...
阅读全文
摘要:分析:题意源岸数量3#include#include#include#includeusing namespace std;int main(void){ int n,t ; int i,j; int num[1001]; cin>>t; while(t--){ ...
阅读全文
摘要:例题代码是c++,看起来实在不习惯。还是用我的c写舒服。题意:突击队 你有n个部下,每个部下需要完成一项任务。第i个部下需要你话b[i]分钟交代任务然后他会立刻独立地、无间断地执行j[i]分钟后完成任务。你需要选择交代任务的顺序,使得所有任务今早执行完毕(即最后一个执行完的任务尽早结束)。注意,不能同时给两个部下交代任务,但部下们可以同时执行他们各自的任务。#include#include#define max(a,b) (a)>(b)? (a):(b);struct Node{ int b,j;}J[1005];int cmp(const void*a,const void*b)...
阅读全文
摘要:最近再开刘汝佳的算法竞赛入门经典,用它来练题。1.1思维的体操题意: 勇者斗恶龙 你的王国立有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)贪心排序:#include#include/*因为用到了sort*/using namespace std;const int maxn=20000+5;int A[maxn],B[maxn];int main(void){ int n,...
阅读全文
摘要:#include#includeint a[1000005];int main(void){ int t,n,m,i,len,max,min,mx,mi; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); len=0; max=0;mi=1000005,mx=0,min=0; for(i=0;ilen) { mi=len; if(a[i]>n/2...
阅读全文
摘要:#includeint main(void){ int kil; int flag=0; double sum; while(scanf("%d",&kil)&&kil!=0) { sum=0; flag=0; while(kil) { if(kil<=4) { sum+=10; kil-=kil; } else if(kil<=8) { ...
阅读全文
摘要:所有车子到达的总时间算出来,然后从小到大排序,如果:1. 开始时间 0 的,Charley 和最早到达的车子一起到达。还有一种就是如果就是Charley一个人的时候,那么就按照他自己的速度达到目的地#include#include#includetypedef struct{ int v; int settime; int time;}person;person p[10010];int cmp(const void *a,const void *b){ person *c=(person *)a; person *d=(person *)b; retur...
阅读全文
摘要:这题解决的算法处理,真的很难想清楚!!尤其是最后的正矩形如何处理。不过终于看懂了#include#include#include#include#define MAX 110 #define min(a,b) ((a)<(b))?(a):(b)char board[MAX][MAX]; int sum[MAX][MAX]; int main(void) { int n,i,ans,j,len,k; while(scanf("%d",&n)!=EOF) { memset(sum,0,sizeof(sum)); /*初始化每个点的个数为0*/ mems...
阅读全文
摘要:/*根据题意:不难看出,要是整个方程式最小,那么应该大的数先结合,小的数后结合。先排序然后结合(贪心) */ #include#include#includeint cmp(const void *a,const void *b){ return (*(int *)a<*(int *)b);} int main(void){ int a[101]; double sum; int n,i; while(scanf("%d",&n)!=EOF) { sum=0; for(i=0;i<n;i++) scanf("%d",...
阅读全文
摘要:/*如果要一个物体的多种属性,最好用结构体,不要用二维数组或者多维数组。用多维数组进行关键字排序很不稳定 */ /*给每个设备的所有价格排序,每个设备选取恰好比已知带宽大的价格(这个时候的比例最大) 循环每个设备就得到所有价格综合 然后得到该带宽下的B/P比较所有带宽的B/P 选取最大的就是所求的*/ #include #include #define true 1#define false 0 typedef struct { int b, p; }SYS;SYS sys[100][100];int cmp(const void * a, const void * b){ SYS * c..
阅读全文
摘要:硬币称重,经典,1.若被判平,左右所有硬币必正常;2.若判轻或判重,对应硬币被判轻-1、重记数+1;3.只有球只被判轻或判重,且次数跟天平不平衡次数相等,该球才能是坏的,否则必然是好的。且>0的是偏重,#include#includeint main(void){ int s[15]; int i,j,t,len1,len2,count=0; char str[3][3][13]; scanf("%d",&t); while(t--) { count=0;/*不平衡的次数*/ for(i=0;i<3 ;i++ ) ...
阅读全文
浙公网安备 33010602011771号