TC训练
来源:互联网 发布:vhf天线仿真软件 编辑:程序博客网 时间:2024/04/28 23:58
SRM 400 DIV 2
1000pt
枚举第一行和第一列,复杂度为O(2^16)
然后贪心和开关问题类似。
#line 2 "LightedPanels.cpp"#include <cstdlib>#include <cctype>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <string>#include <iostream>#include <sstream>#include <map>#include <set>#include <queue>#include <stack>#include <ctime>using namespace std;typedef long long ll;class LightedPanels {public: int g[11][11],gg[11][11]; int H , W; void flip(int x,int y) { for(int i = -1; i <= 1; ++i) for(int j = -1; j <= 1; ++j) { int xx = x + i; int yy = y + j; if(xx < 0 || xx >= H || yy < 0 || yy >= W) continue; gg[xx][yy] = !gg[xx][yy]; } } int solve() { int ans = 0; for(int i = 1; i < H; ++i) for(int j = 1; j < W; ++j) if(gg[i-1][j-1] == 0) { ++ans; flip(i,j); } for(int i = 0; i < H; ++i) for(int j = 0; j < W; ++j) if(gg[i][j] != 1) return 65; return ans; } int minTouch(vector <string> board) { H = board.size(); W = board[0].size(); memset(g,0,sizeof(g)); memset(gg,0,sizeof(gg)); for(int i = 0; i < H; ++i) { string str = board[i]; for(int j = 0; j < str.size(); ++j) if(str[j] == '*') g[i][j] = 1; else g[i][j] = 0; } int all = 1<<16,MIN = 65; for(int s = 0; s < all; ++s) { int k = 1,step = 0; for(int x = 0; x < 9; ++x) for(int y = 0; y < 9; ++y) gg[x][y] = g[x][y]; for(int i = 0; i < W; ++i) { if(s&k) flip(0,i),++step; k <<= 1; } for(int i = 1; i < H; ++i) { if(s&k) flip(i,0),++step; k <<= 1; } MIN = min(MIN,step+solve()); } if(MIN >= 65) MIN = -1; return MIN; }// END CUT HERE};
SRM 589 DIV 2
500pt卡了好久,想用dp做的,边界处理想了半天。最后看了题解,用贪心过了
1000pt留坑
SRM 590 DIV 2
1000pt留坑
SRM 591 DIV 2
500pt好题
1000pt留坑
SRM 592 DIV 2
1000pt留坑
SRM 593 DIV 2
1000pt留坑
SRM 594 DIV 2
1000pt留坑
SRM 595 DIV 2
1000pt留坑
SRM 596 DIV 2
1000pt留坑
SRM 597 DIV 2
SRM 598 DIV 2
SRM 599 DIV 2
SRM 600 DIV 2
1000pt留坑
SRM 601 DIV 2
1000pt留坑
SRM 602 DIV 2:
1000分的题卡了一天。
既然决定要看题解,就要看的认真。
看一段跳一段,再自己想一段,反而没有真正理解题解的内涵。
好题,以后再做一遍。
SRM 603 DIV 2
SRM 604 DIV 2
SRM 605 DIV 2
1000pt留坑
SRM 607 DIV 2
1000pt留坑
SRM 612 DIV 2
SRM 624 DIV 2
SRM 625 DIV 2
SRM 626 DIV 2
SRM 631 DIV 2
500pt
贪心思想:尽可能的把所有点往前放
class CatsOnTheLineDiv2{ public: map<int,int>can,now,S; string getAnswer(vector <int> position, vector <int> count, int time) { for(int i = - 2000; i <= 2000; ++i) S[i] = 0,can[i] = 0,now[i] = 0; int n = position.size(); for(int i = 0; i< n; ++i) S[position[i]] += count[i],can[position[i]] = 1; for(int i = -1000; i <= 1000; ++i) if(can[i] == 1){ for(int j = -time; j < 0; ++j) if(S[i] > 0 && now[i+j] == 0) --S[i],++now[i+j]; if(S[i] != 0 && now[i] != 1) --S[i],now[i] = 1; for(int j = 1; j <= time; ++j) if(S[i] > 0 && now[i+j] == 0) --S[i],++now[i+j]; } for(int i = -2000; i <= 2000; ++i) if(S[i] > 0) return "Impossible"; return "Possible"; }};
0 0
- TC训练
- 《TC训练赛一》题解!
- TC
- tc
- TC函数库
- Win-TC
- 再见TC
- TC检查点
- TC&Graphics
- 初识TC
- tc malloc
- linux tc
- tc 快捷
- 第一次TC
- TC插件
- TC 配置
- 显卡TC
- TC性能
- Windows Server系统服务介绍及优化
- 輸出一個乘法表之一
- Redis主从复制
- history.go(-1)和history.back(-1)的区别
- HDU4451
- TC训练
- HDU 1203(01背包)
- iOS绘图教程
- 4种启动Linux内核方法----mini2440
- 唉 好麻烦 来的票什么时候能买啊
- 关于grep的用法
- SSE2的简单理解,主要针对opencv 中的优化
- 学习JQuery - 16
- linux下两台服务器文件实时同步方案设计和实现