t1 衣服
首先這題很顯然是個貪心,我們考慮如何貪心。我們看顏色種類,最多只有四種,所以我們考慮開4個優先佇列,把所有衣服上的顏色都推到優先佇列裡,比如衣服1有123三個顏色,就把衣服1的價值推到編號為123的佇列中。然後將詢問離線,每次取當前這個所需要的顏色的隊首元素,然後對於這個衣服,我們拿過了,加乙個vis陣列,然後下次遇到這個衣服的時候,把它pop掉就可以啦
1 #include 2view code#define ll long long
3#define res register
4#define maxn 200050
5#define int ll
6using
namespace
std;
7int
n,m,want[maxn],color[maxn];
8bool
vis[maxn];
9struct
node
15}c[maxn];
16 priority_queueq[4
];17
ll read()
1821
while(ch>='
0'&&ch<='9')
22return s*w;23}
24signed main()
2535
for(res int i=1;i<=m;i++) want[i]=read();
36for(res int i=1;i<=m;i++)
38while
(vis[q[want[i]].top().num]) q[want[i]].pop();
39 printf("
%lld
",q[want[i]].top().val);
40 vis[q[want[i]].top().num]=1;41
q[want[i]].pop();
42}
43return0;
44 }
t2 分段
玄學(常規dp)考慮對於乙個新的點,我們有兩種處理辦法,第一種是把他安排在乙個已經求過的區間中,不然就是把他單起乙個區間。根據這個思路進行轉移即可
t3 拜訪
沒啥好說的,最短路裸題,給了15s,看似卡死了其他做法,卻給暴力帶來了無限生機。你遇到修改的時候,把這條路的權值+1,然後重新跑spfa就完事了
1 #include 2view code#define ll long long
3#define res register
4#define maxn 100050
5#define int ll
6using
namespace
std;
7int x,y,z,n,m,head[maxn],diss[maxn],as
,op;
8bool
vis[maxn],ju;
9struct
nodeg[maxn];
12 inline void add(int u,int v,int
dis)
17 dequeq;
18 inline void
spfa()31}
32}33}
3435}36
ll read()
3740
while(ch>='
0'&&ch<='9')
41return s*w;42}
43signed main()
4450
for(res int i=1;i<=as;i++)55}
56else60}
61return0;
62 }
1015考試總結
先通覽一遍題面 第一題估計是數論,第二題估計是dp或者區間操作,第三題估計是資料結構 首先第一題最關鍵的性質是n n n m,也即是說可以一列一列的轉移,每隔n列個數相同 然後一開始想錯了,想成之後都是第一行個數 8 30碼完第一題第乙個版本 方法有問題 8 40碼完第一題第二個版本 暴力 對拍,發...
C 考試反思
計算機二級c 考試已經有過一段時間了,近來一直反思學習中的欠缺之處。雖然用了不少的時間來準備c 的考試,但最終的考試仍然讓自己大失所望,本來滿懷的信心,在見到考試題的那一刻喪失殆盡。靜下心來仔細想想,考試失誤的根本原因肯定是自己身上出問題了,之所以喪失信心,是因為考試前聽同學們說考試中淨是原題,而考...
考試反思 2019 08 03
t1 題目大意 我們已知勾股數滿足a 2 b 2 c 2且可以構成乙個三角形,即滿足兩邊之和大於第三邊,兩邊之差小於第三邊,我們認為,對於a 2 b 2 c 2,若存在 ka 2 k b 2 kc 2 為正整數 則我們認為這兩組勾股數並存,現在給定n組資料,每組資料輸入x和y,求區間 x,y 中有多...