标签:
1001 A Curious Matt
求最大的平均速度
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 7 typedef long long LL; 8 const int maxn = 1e5+5; 9 int n,m; 10 11 struct node{ 12 int x,t; 13 }a[maxn]; 14 15 int cmp(node n1,node n2){ 16 return n1.t < n2.t; 17 } 18 19 void solve(){ 20 double ans = 0; 21 sort(a+1,a+n+1,cmp); 22 for(int i = 2;i <= n;i++){ 23 int fz = abs(a[i].x-a[i-1].x); 24 int fm = a[i].t - a[i-1].t; 25 double res = (1.0*fz)/(1.0*fm); 26 ans = max(ans,res); 27 } 28 printf("%.2lf\n",ans); 29 } 30 31 int main(){ 32 int T; 33 int kase = 0; 34 scanf("%d",&T); 35 while(T--){ 36 scanf("%d",&n); 37 for(int i = 1;i <= n;i++){ 38 scanf("%d %d",&a[i].t,&a[i].x); 39 } 40 printf("Case #%d: ",++kase); 41 solve(); 42 } 43 return 0; 44 }
1002 Black And White
n*m 的格子,一共 k 种颜色
c1 + c2 + c3 +...+ck = n*m 求相邻格子的颜色不同的染色方案
题解说的本应该是构造,姿势好的爆搜也可以过
剪枝 是 当一种颜色超过剩余格子的一半的时候,就不行了
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 7 int ans[15][15],c[105],n,m,k; 8 int flag; 9 int cnt[105]; 10 11 void print(){ 12 puts("YES"); 13 for(int i = 1;i <= n;i++){ 14 for(int j = 1;j < m;j++) printf("%d ",ans[i][j]); 15 printf("%d\n",ans[i][m]); 16 } 17 } 18 19 bool dfs(int x,int y){ 20 for(int i = 1;i <= k;i++){ 21 if((n*m - (x-1)*m-y+2)/2 < c[i]) return false; 22 } 23 for(int i = 1;i <= k;i++){ 24 if(c[i]){ 25 if(ans[x][y-1] == i || ans[x-1][y] == i) continue; 26 ans[x][y] = i; 27 //printf("ans[%d][%d] = %d\n",x,y,ans[x][y]); 28 c[i]--; 29 if(x == n && y == m){print();return true;} 30 if(y != m && dfs(x,y+1)) return true; 31 if(y == m && dfs(x+1,1)) return true; 32 c[i]++; 33 } 34 } 35 return false; 36 } 37 38 int cmp(int x,int y){ 39 return x > y; 40 } 41 42 void solve(){ 43 flag = 0; 44 for(int i = 1;i <= k;i++){ 45 if(c[i] > (n*m+1)/2){ 46 puts("NO"); 47 return; 48 } 49 } 50 memset(ans,0,sizeof(ans)); 51 if(k == 1 && n*m != 1){ 52 puts("NO"); 53 return; 54 } 55 if(dfs(1,1)) return; 56 puts("NO"); 57 } 58 59 int main(){ 60 int T,kase = 0; 61 scanf("%d",&T); 62 while(T--){ 63 scanf("%d %d %d",&n,&m,&k); 64 for(int i = 1;i <= k;i++) { 65 scanf("%d",&c[i]); 66 } 67 printf("Case #%d:\n",++kase); 68 solve(); 69 } 70 return 0; 71 }
1003 Collision
给出一个矩形.两个开始的点,运动速度都相同,运动方向是 (1,1)碰到矩形的边的时候,会发生弹性碰撞
求第一次碰撞的坐标..
第三个样例画不出来怎么撞的啊...第二个点不是运动出去了么...wwww
不懂
1004 Dire Wolf
有 n 只狼排成一排,每只狼有一个初始的伤害值ai ,同时每只狼还有附加的伤害值 bi ,每只狼可以给它相邻的狼增加伤害值,杀死一只狼需要的伤害值 是 ai + bi-1,bi+1
可以任意选择杀狼的顺序,问杀死这 n 只狼需要的最小的伤害值
比赛的时候,还是没太搞清楚伤害值该怎么去算,dp 顺序有问题,而且转移也有问题
dp[i][j] 表示 杀死从i 到 j 的狼所需要的最小伤害值
枚举这段区间最后杀死的狼 是 k ,那么杀死这只狼的代价,就是 a[k] + b[i-1] + b[j+1] (因为它是最后一只狼,左右两端是 i-1,j+1)
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 7 typedef long long LL; 8 const int maxn = 205; 9 int a[maxn],b[maxn],dp[maxn][maxn]; 10 const int INF = (1<<30)-1; 11 int n; 12 13 void solve(){ 14 dp[0][0] = 0; 15 b[0] = b[n+1] = 0; 16 for(int i = 1;i <= n;i++){ 17 for(int j = 1;j <= n;j++){ 18 if(i == j) dp[i][i] = a[i]+b[i-1]+b[i+1]; 19 else dp[i][j] = INF; 20 } 21 } 22 23 for(int l = 2;l <= n;l++){ 24 for(int s = 1;s+l-1 <= n;s++){ 25 int e = s+l-1; 26 for(int k = s;k <= e;k++){ 27 if(k == s) dp[s][e] = min(dp[s][e],dp[s+1][e]+a[s]+b[s-1]+b[e+1]); 28 else if(k == e) dp[s][e] = min(dp[s][e],dp[s][e-1]+a[e]+b[e+1]+b[s-1]); 29 else{ 30 dp[s][e] = min(dp[s][e],dp[s][k-1]+dp[k+1][e]+a[k]+b[s-1]+b[e+1]); 31 } 32 } 33 } 34 } 35 printf("%d\n",dp[1][n]); 36 } 37 38 int main(){ 39 int T,kase = 0; 40 scanf("%d",&T); 41 while(T--){ 42 scanf("%d",&n); 43 for(int i = 1;i <= n;i++) scanf("%d",&a[i]); 44 for(int i = 1;i <= n;i++) scanf("%d",&b[i]); 45 printf("Case #%d: ",++kase); 46 solve(); 47 } 48 return 0; 49 }
1005 Everlasting L
给出 一个点集,称这样的点集是 good 的
(x,y),(x+1,y),....(x+a,y),(x,y+1),(x,y+2),.... (x,y+b) gcd(a,b) = 1
问点集中满足,A ,B都是 good 且 A交B为空 的有多少对
不会捉..搜一个题解说是dp
1006 Fluorescent
一共 m 个开关,每个开关控制一些灯
最后灯亮的个数为 X ,求 X^3的期望
设最后灯亮的情况为 x1 + x2 + x3 +... +xn
所以 x^3 可以写成 (x1+x2+x3+...+xn)*(x1+x2+...+xn)*(x1+x2+...+xn)
x^3 就是 sum(xi*xj*xk) (1 <= i ,j , k <= n)只有当 xi ,xj ,xk 都为 1 的时候才对答案有贡献
1007 GRE Words Once More!
1008 Happy Matt Friends
1009 Intersection
1010 Just A Mistake
1011 K.Bro Sorting
标签:
原文地址:http://www.cnblogs.com/wuyuewoniu/p/5878035.html