@darkproject
2019-11-03T14:55:50.000000Z
字数 6100
阅读 764
杂记
2018.3重邮校赛数模C,15届浙大数模B(没想到数模也能刷刷题,卖了50块233)
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <string>using namespace std;const int inf =0x3f3f3f3f;int dp[15][15][15],yua[15][15][15],yub[15][15][15],yuc[15][15][15];int cost[15]={0,0,830,1630,4900,14700,51300,97100,194200,388000,776000};int value[15]={inf,60,120,180,240,300,360,420,480,540,600}; //value[0]=inf初始化防止value[i-1]除数为0错误情况int mxrA[15]={0,0,660,1320,2600,5200,9200,16900,38000,76000,228000};int mxrB[15]={0,0,960,2880,5760,8640,17280,51840,86500,173000,519000};int mxrC[15]={0,0,2300,6900,13800,27650,51840,89800,137100,274000,810000};int order[15][15][15];int needA,needB,needC,rel;int a,b,c;//D:\学习文件\C网络游戏策划与设计int maxx(int a,int b,int c) //三元比较函数定义{int d=a;if(b>d) d=b;if(c>d) d=c;return d;}int minn(int a,int b,int c){int d=a;if(b<d) d=b;if(c<d) d=c;return d;}void print(int i,int j,int k) //递归输出解集{if(i+j+k==3) return;if(order[i][j][k]==1){print(i-1,j,k);cout<<"I ";}else if(order[i][j][k]==2){print(i,j-1,k);cout<<"II ";}else{print(i,j,k-1);cout<<"III ";}}int main(){cin>>a>>b>>c;memset(dp,0x3f,sizeof(dp)); //求最小优解,其余状态初始化为Infdp[1][1][1]=0;//建立yua,yub,yuc数组在状态转移过程中保存更新剩余值memset(yua,0,sizeof(yua));memset(yub,0,sizeof(yub));memset(yuc,0,sizeof(yuc));memset(order,0,sizeof(order));for(int i=0;i<=a;i++) needA+=mxrA[i];for(int i=0;i<=b;i++) needB+=mxrB[i];for(int i=1;i<=c;i++) needC+=mxrC[i];for(int i=1;i<=10;i++)for(int j=1;j<=10;j++)for(int k=1;k<=10;k++){if(i+j+k==3) continue;//计算矿产I II III生级所需要的时间int tempI=ceil((cost[i]-yua[i-1][j][k])*1.0/value[i-1]);int tempII=ceil((cost[j]-yua[i][j-1][k])*1.0/value[i]);int tempIII=ceil((cost[k]-yua[i][j][k-1])*1.0/value[i]);dp[i][j][k]=minn(dp[i-1][j][k]+tempI,dp[i][j-1][k]+tempII,dp[i][j][k-1]+tempIII);//dp[i][j][k]到达等级i,j,k时的最小时间//可列出转移方程为dp[i-1][j][k],dp[i][j-1][k],dp[i][j][k-1]三种状态递推//判断状态转移到哪一步方便对剩余值进行更新与确定解集序列if(dp[i][j][k]==dp[i-1][j][k]+tempI){order[i][j][k]=1;yua[i][j][k]=tempI*value[i-1]-cost[i]+yua[i-1][j][k];yub[i][j][k]=tempI*value[j]+yub[i-1][j][k];yuc[i][j][k]=tempI*value[k]+yuc[i-1][j][k];}else if(dp[i][j][k]==dp[i][j-1][k]+tempII){order[i][j][k]=2;yua[i][j][k]=tempII*value[i]-cost[j]+yua[i][j-1][k];yub[i][j][k]=tempII*value[j-1]+yub[i][j-1][k];yuc[i][j][k]=tempII*value[k]+yuc[i][j-1][k];}else if(dp[i][j][k]==dp[i][j][k-1]+tempIII){order[i][j][k]=3;yua[i][j][k]=tempIII*value[i]-cost[k]+yua[i][j][k-1];yub[i][j][k]=tempIII*value[j]+yub[i][j][k-1];yuc[i][j][k]=tempIII*value[k-1]+yuc[i][j][k-1];}}rel=inf;int aa,bb,cc;//枚举所有状态等级的最小时间,计算这个等级矿产使工厂升级的时间//升级时间取a b c升级最大值,总体取最小值for(int i=1;i<=10;i++)for(int j=1;j<=10;j++)for(int k=1;k<=10;k++){int temp=dp[i][j][k];int tempa=needA-yua[i][j][k];//cout<<temp<<endl;int tempb=needB-yub[i][j][k];int tempc=needC-yuc[i][j][k];int tt=maxx(temp+ceil(tempa*1.0/value[i]),temp+ceil(tempb*1.0/value[j]),temp+ceil(tempc*1.0/value[k]));//cout<<tt<<endl;if(rel>tt){aa=i,bb=j,cc=k;rel=tt;}}cout<<rel<<endl;print(aa,bb,cc);return 0;}
2018.5坦克大战AI寻路源码记录,A*记录路径,bfs剪枝。第一次尝试稍微大点的代码量(之前就一直写100行左右的题),现场跑的时候直接坦克跑崩了,且和别人对比发现自己的代码奇丑无比QWQ用c with stl所有1000多行代码全写在一个文件里xjb怼。发现别人几百行py比自己优雅得多,被吊着锤555,怀疑自己能不能做项目。
#include <cstdio>#include <cmath>#include <WinSock2.h>#include <queue>#include <cstring>#include <stack>#include <algorithm>#include "message.h"#include "time.h"const int inf = 0x3f3f3f3f;const int maxn = 100;SOCKET sockClient;int n, m;int vis[maxn][maxn];int dx[] = { 0,0,-1,1 };//0 up 1 down 2 left 3 rightint dy[] = { -1,1,0,0 };struct hyx{int x, y, f, h, g;bool operator <(const hyx &k) const {return f > k.f;}};int pre[maxn][maxn];priority_queue<hyx>mxr;stack<int>path[10];bool target[maxn][maxn];bool flag[maxn][maxn];node tank[10];int lastditank[10];int nextditank[10];node stopnum[10];//特殊node x与y为锁定的coin坐标,id为次数;bool judge(int x, int y){if (x >= 0 && y >= 0 && x < m&&y < n) return true;return false;}int heuristic(hyx t, int endx, int endy){return (abs(t.x - endx) + abs(t.y - endy)) * 10;}int ousi(int x, int y, int x1, int y1){return ceil(sqrt((x - x1)*1.0*(x - x1) + (y - y1)*1.0*(y - y1)));}bool bfsjudge(node s){int sum = 0;int viss[maxn][maxn];memset(viss, 0, sizeof(viss));vector<node>xixi;xixi.clear();queue<node>q;q.push(s);while (!q.empty()){node ss = q.front();q.pop();viss[ss.x][ss.y] = 1;if (sum > 50) {for (int k = 0; k < xixi.size(); k++)flag[xixi[k].x][xixi[k].y] = true;return true;}for (int i = 0; i < 4; i++){int nx = ss.x + dx[i];int ny = ss.y + dy[i];if (judge(nx, ny) && mp[nx][ny] != '#'&&mp[nx][ny] != '@' && !viss[nx][ny]){sum++;if ((mp[nx][ny] >= '1'&&mp[nx][ny] <= '9') || mp[nx][ny] == '*') xixi.push_back(node(nx, ny));q.push(node(nx, ny));}}}return false;}void dfs(int x, int y, int number){if (pre[x][y] != -1){path[number].push(pre[x][y]);if (pre[x][y] == 0) dfs(x, y + 1, number);else if (pre[x][y] == 1) dfs(x, y - 1, number);else if (pre[x][y] == 2) dfs(x + 1, y, number);else if (pre[x][y] == 3) dfs(x - 1, y, number);}}bool Astar(node st, node end, int number){hyx s;memset(vis, 0, sizeof(vis));while (!mxr.empty()) mxr.pop();s.x = st.x;s.y = st.y;s.f = s.g = s.h = 0;mxr.push(s);pre[s.x][s.y] = -1;while (!mxr.empty()){hyx u = mxr.top();mxr.pop();vis[u.x][u.y] = 1;if (u.x == end.x&&u.y == end.y){while (!path[number].empty()) path[number].pop();dfs(u.x, u.y, number);return true;}for (int i = 0; i < 4; i++){hyx v;v.x = u.x + dx[i];v.y = u.y + dy[i];if (judge(v.x, v.y) && !vis[v.x][v.y] && mp[v.x][v.y] != '#'&&mp[v.x][v.y] != '@'){v.h = u.h + heuristic(v, end.x, end.y);v.g = u.g + ousi(u.x, u.y, v.x, v.y);v.f = v.g + v.h;pre[v.x][v.y] = i;mxr.push(v);}}}return false;}
2018.9团体赛和区域赛的失败拖队伍后腿,加上一些事情和实力下降很多且没有进步,心情变得格外急躁,在一次训练赛中被怀疑作弊离开了集训队。自爆自弃了一段时间,逃避刷题,开始对写代码有了一些抵抗心理,遂尝试接触美术相关的东西,也开始了解游戏开发。
2018.11跟着网上unity教程做了些东西玩,还是没有项目思维,都是想到什么写什么。加入了unity shader入门群,了解到了很多基础shader知识(真的是水群学习啊233,还会翻一下群聊天记录),也了解到了TA这个岗位,开始试着向这方面努力。加入了blender群(主要水群点)认识了很多网友,在色图中互相快乐。
2019.1-2019.9写了很多shader案例,尝试向着渲染更深处学习完结blender的学习,这时候houdini很火于是开始尝试玩houdini(= =觉得自己真是随意啊),第一次使用了知乎和推特看见很多相关的分享文章(开始批量关注,无法自拔),也不再独自学习渲染,开始有了有共同目标的朋友(虾兄),和之前刚开始学shader一样,感觉只能潜水,无法交流。经过一段时间学习(不问太低级的问题免得被T,233),开始尝试找一些二手资料ppt和后处理图形效果复现。ps:感觉自己的学习过程其实就是从看不懂群聊话语,到逐渐看懂的过程。
2019.10-now9月中旬意识到秋招开始了,投简历,清一色投递TA岗位,简历通过的了了无几。能收到的只有试投的客户端岗位,也尝试着面试了字节、网易游戏、盛趣。没有充分准备基础知识,一直在做渲染效果,非科班被计网,操作系统,c++问到了崩溃,近1年没刷算法题,裸写过程出了N多问题,被淘汰也是当然的了吧。其中比较感慨的是,字节面试的时候和一个面试官聊了很多图形渲染相关的知识,即便基础答的不好也让过了(很感谢认真看了简历的面试官)。盛趣面试也和面试官聊渲染比较舒服,但因为一些偏执选择了让面试官帮忙改递TA岗位。。。据说是偏A的TA,然后就失去了消息。。。看了一段时间轻小说(地错),自身也逐渐从低沉的状态开始脱离出来,无论再怎么失败,只要坚持自己的信念一定会有好结果的q.顺便羡慕男主和女神的相遇,有了收留自己的眷族。那么收留我的眷族又在哪里呢?一起努力过一段时间的朋友虾兄也成功上岸TA了,继续努力吧,填坑程序化建模Go!